1. 常见的协议
HTTP/HTTPS
FTP,文件传输
DHCP,动态主机配置
DNS,域名系统
2. DNS,Domain Name System
域名的出现是因为IP不好记,而且不能表达组织/公司的名字和性质。
市面上的网页虽然是域名访问,但是实际还是要靠IP,毕竟服务器过路由器只能通过IP。
域名申请注册的一个链接
DNS的作用是把域名换算成IP,传输层可以是基于UDP或者是TCP,服务器占用端口53。
DNS常用指令
ipconfiig/displaydns
展示dns
ipconfig/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数据包给客户端
分配完毕,流程图如下:
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文件本身
如下截图,HTTP在发送请求时的格式可以参考下图(请求方法可以变,不一定非得get
),包括爬虫的时候也就按照这个格式来模仿。记得报文里面每一行都有回车换行符16#20,空格符也不要忘记。
HTTP报文格式,注意空格位置和回车换行符位置,都需要用ascii表达出来。
在wireshark里面也把这种对应关系表现出来了
GET请求不同于post请求,没有请求体,也有长度限制。就算发账户和密码也是以Url的形式明文格式展示:
请求头字段格式
响应头字段格式
状态码
状态码的分类
针对上文出现过HTTP返回的状态码为304:此表示虽然客户端的Get请求已经被允许,但是文档的内容自从上次访问后一直没有变化。