个人认为浏览器到服务器的通信过程是基础中的基础。如果没有了解的话,第二步中,发送DNS请求,可能会存在运营商DNS劫持,那么发现和修复后的针对性测试就会是个问题
客户端封装过程
- 在浏览器URL地址栏中输入www.baidu.com。
- 在本机C:WindowsSystem32driversetcHosts解析域名,确定IP地址。(若没有解析成功则发送DNS请求)。
- 在应用层封装http报头,在传输层封装TCP报头(填写上层端口号,由于MSS最大传输单元的限制,需要排序分包,头部检验和计算出数据和TCP的状态供接收方检查)。
- 三次握手建立连接。
- 在网络层封装IP报头(填写上层协议号,由于不同路由器的MTU大小不同,是否需要继续分片,填充源IP和目的IP),查找路由表。查找ARP表。
- 在数据链路层封装以太网报头(填充上层类型值、源MAC和目的MAC)。
- 在物理层封装前导码和帧首定界符,同时将数据包发出。
服务器解析过程
- 服务器收到数据包后,开始依次解封装。先解封物理层的前导码和帧首定界符,向数据链路层递送。
- 数据链路层先看以太网协议里目的MAC是不是自己,若不是,丢包。若是,看FCS检查数据是否完整,若完整,查看类型值向上一层递送;若不完整,丢包,重发。
- 网络层检查IP是否是自己,检查头部检验和是否完整,查看协议号,递向上一层协议。
- 传输层对应协议去掉传输层头部,查看检验和数据是否完整,查看端口号,递向上一层协议。
- 应用层去掉头部,解封请求数据。
- 服务器将回应报文依次封装传输。
- 四次挥手断开连接。