前言
上一篇了解了TCP/IP模型,大致了解到数据要传输到模板IP大致要经过,DNS解析、MAC寻址、APR解析、数据包的封装、三握四挥等,接下来我们分享从输入URL到返回的具体步骤。
输入URL
浏览器输入 juejin.cn 浏览器拿到URL(域名)要先通过DNS解析为IP
DNS解析
-
浏览器会先查自己的DNS缓存看有没有与之匹配的
-
没有在查本地计算机DNS缓存
-
还没有就向DNS服务器请求(53端口)
-
任然没有的话就再依次向 根域名服务器、顶级域名服务器、权威域名服务器询问直到找到
5.找到后记录 更新缓存
判断是否同个子网
假设找到的IP为:172.194.72.105 且子网掩码是255.255.255.0
- 用子网掩码与本机IP(假设为 192.168.1.100)做二进制AND运算
- 再用子网掩码与目标IP(172.194.72.105)做AND运算
- 比较两次运算结果,一致则为一个子网反之不是
是则同个广播方式在子网发送询问,否则通过网关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字节)
发送、接收
将封装好的数据包一层一层向下通过数据链路层发送,接受端再一层一层解析最后到应用层,在用同样的步骤将数据返回,至此就完成了,至于四次挥手可以看上一篇详解