[笔记]网络原理4 -应用层及其相关协议
1. 常见的协议
- HTTP/HTTPS
- FTP,文件传输
- DHCP,动态主机配置
- DNS,域名系统
2. DNS,Domain Name System
- 域名的出现是因为IP不好记,而且不能表达组织/公司的名字和性质。
- 市面上的网页虽然是域名访问,但是实际还是要靠IP,毕竟服务器过路由器只能通过IP。
- 域名申请注册的一个链接
- DNS的作用是把域名换算成IP,传输层可以是基于UDP或者是TCP,服务器占用端口53。
- DNS常用指令
ipconfiig/displaydns
展示dnsipconfig/flushdns
清空dns缓存记录ping 域名
nslookup 域名
- DNS访问逻辑
- 首先客户端访问最近的一台DNS服务器
- 所有的DNS服务器都记录了DNS根域名服务器的IP地址
- 上级的DNS服务器记录下一级DNS服务器的IP地址
- 全球一共13台IPv4的DNS根域名服务器,25台IPv6的根域名服务器
- 下图中的设置就可获取离客户端最近的DNS服务器
3. DHCP
- 相比于自己设置的静态IP地址,动态IP地址则由DHCP配置,DHCP可以从服务器中自动获取IP地址。
- DHCP基于UDP协议,客户端是68端口,服务器是67端口。
- DHCP服务器会从IP池中挑选一个IP地址出租给客户端一段时间,时间到期就回收。
- 很多时候,路由器就可以充当DHCP的服务器。
- DHCP的工作流:
- DISCOVER:发现服务器:发
广播包
(源IP是0.0.0.0,目标IP是255.255.255.255,目标MAC是FFFF.FFFF.FFFF) - OFFER:提供租约:服务器返回可以租用的IP地址,以及租用期限,子网掩码,网关,DNS信息等;可能会有多个服务器同时回应,因为是广播包
- REQUEST:选择IP地址:客户端选择一个OFFER,发送广播包回应
- ACKNOWLEDGE:确认:被选中的服务器发送ACK数据包给客户端
- 分配完毕,流程图如下:
- DISCOVER:发现服务器:发
- DHCP可以跨网段分配,但是需要DHCP中继代理实现。
- DHCP常用指令
ipconfig /all
看到DHCP的详细信息ipconfig /release
手动释放租约ipconfig /renew
重新申请IP,申请租约
4.HTTP,超文本传输协议
-
80是HTTP常用的端口,8080是HTTP测试常用的备用端口
-
如下图,测试了一个http的
get
请求- wireshark抓到了get的url
- 在wireshark中,选择想看的报文,右键,追踪流,HTTP流,可以看到一些清晰的数据流。橙色是客户端请求的流,蓝色是服务器返回的流。
- 在一个get指令中,客户端发给服务器的数据有下面这些
- 服务器返回的数据,此时返回的状态是304
- 当服务器返回的状态是200时,返回的报文回包括html文件本身
- wireshark抓到了get的url
-
如下截图,HTTP在发送请求时的格式可以参考下图(请求方法可以变,不一定非得
get
),包括爬虫的时候也就按照这个格式来模仿。记得报文里面每一行都有回车换行符16#20,空格符也不要忘记。
- HTTP报文格式,注意空格位置和回车换行符位置,都需要用ascii表达出来。
- 在wireshark里面也把这种对应关系表现出来了
- GET请求不同于post请求,没有请求体,也有长度限制。就算发账户和密码也是以Url的形式明文格式展示:
- HTTP报文格式,注意空格位置和回车换行符位置,都需要用ascii表达出来。
-
请求头字段格式
-
响应头字段格式
-
状态码
- 状态码的分类
- 状态码的分类
-
针对上文出现过HTTP返回的状态码为304:此表示虽然客户端的Get请求已经被允许,但是文档的内容自从上次访问后一直没有变化。