• 浏览器访问服务器的通信过程


    个人认为浏览器到服务器的通信过程是基础中的基础。如果没有了解的话,第二步中,发送DNS请求,可能会存在运营商DNS劫持,那么发现和修复后的针对性测试就会是个问题

    客户端封装过程

    1. 在浏览器URL地址栏中输入www.baidu.com。
    2. 在本机C:WindowsSystem32driversetcHosts解析域名,确定IP地址。(若没有解析成功则发送DNS请求)。
    3. 在应用层封装http报头,在传输层封装TCP报头(填写上层端口号,由于MSS最大传输单元的限制,需要排序分包,头部检验和计算出数据和TCP的状态供接收方检查)。
    4. 三次握手建立连接。
    5. 在网络层封装IP报头(填写上层协议号,由于不同路由器的MTU大小不同,是否需要继续分片,填充源IP和目的IP),查找路由表。查找ARP表。
    6. 在数据链路层封装以太网报头(填充上层类型值、源MAC和目的MAC)。
    7. 在物理层封装前导码和帧首定界符,同时将数据包发出。

    服务器解析过程

    1. 服务器收到数据包后,开始依次解封装。先解封物理层的前导码和帧首定界符,向数据链路层递送。
    2. 数据链路层先看以太网协议里目的MAC是不是自己,若不是,丢包。若是,看FCS检查数据是否完整,若完整,查看类型值向上一层递送;若不完整,丢包,重发。
    3. 网络层检查IP是否是自己,检查头部检验和是否完整,查看协议号,递向上一层协议。
    4. 传输层对应协议去掉传输层头部,查看检验和数据是否完整,查看端口号,递向上一层协议。
    5. 应用层去掉头部,解封请求数据。
    6. 服务器将回应报文依次封装传输。
    7. 四次挥手断开连接。
  • 相关阅读:
    比较器
    堆排序
    快速排序
    荷兰国旗问题
    python查漏补缺 --- 基础概念及控制结构
    redis 交集、并集、差集
    spark问题
    IDEA写scala简单操作
    hive 中遇到的正则
    scala模式匹配
  • 原文地址:https://www.cnblogs.com/Testking/p/11959453.html
Copyright © 2020-2023  润新知