输入URL到返回,牵扯出的网络知识二(分析篇)

145 阅读2分钟

前言

上一篇了解了TCP/IP模型,大致了解到数据要传输到模板IP大致要经过,DNS解析、MAC寻址、APR解析、数据包的封装、三握四挥等,接下来我们分享从输入URL到返回的具体步骤。

输入URL

浏览器输入 juejin.cn 浏览器拿到URL(域名)要先通过DNS解析为IP

DNS解析

  1. 浏览器会先查自己的DNS缓存看有没有与之匹配的

  2. 没有在查本地计算机DNS缓存

  3. 还没有就向DNS服务器请求(53端口)

  4. 任然没有的话就再依次向 根域名服务器、顶级域名服务器、权威域名服务器询问直到找到

5.找到后记录 更新缓存

判断是否同个子网

假设找到的IP为:172.194.72.105 且子网掩码是255.255.255.0

  1. 用子网掩码与本机IP(假设为 192.168.1.100)做二进制AND运算
  2. 再用子网掩码与目标IP(172.194.72.105)做AND运算
  3. 比较两次运算结果,一致则为一个子网反之不是

是则同个广播方式在子网发送询问,否则通过网关192.168.1.1转发,也就是说接收方的MAC地址将是网关的MAC地址

链接

进行三次握手,这就不再重复讲了,可以看上一篇的详细讲解

查询MAC

使用ARP协议查询目标MAC地址

封装数据包

TCP

TCP数据包需要设置端口,接收方的HTTP端口默认是80,发送方(本机)的端口是一个随机生成

然后将TCP数据包嵌入IP数据包

IP

IP数据包需要设置双方的IP地址,这是已知的,发送方是192.168.1.100(本机),接收方是172.194.72.105

再将IP数据包嵌入以太网数据包

以太网

以太网数据包需要设置双方的MAC地址,发送方为本机的网卡MAC地址,接收方为网关192.168.1.1的MAC地址(通过ARP协议得到)

以太网数据包的数据部分,最大长度为1500字节,超出将分割,每个包都有自己的IP标头(20字节)

image.png

发送、接收

将封装好的数据包一层一层向下通过数据链路层发送,接受端再一层一层解析最后到应用层,在用同样的步骤将数据返回,至此就完成了,至于四次挥手可以看上一篇详解