从输入网址到页面呈现

357 阅读3分钟

注:以下内容是笔者作为读书笔记的总结,理解和表述肯定过于简单或错误的地方,读者觉得不对的地方,希望指出,会及时纠正。谢谢!!!


应用层

  • 输入网址后,浏览器会会将域名发给DNSDomain Name System:域名系统服务器,获得对应的ip地址。之后建立TCP连接后,发送请求。

传输层

  • TCP层发送每个报文的时候,都需要加上自己的地址(源地址)和它想要去的地址(目标地址),将这两个信息放到IP包首部,交给IP层进行传输。注:TCP发送报文的时候,都需要对方回复一个ACK(acknowledgement),来保证报文可靠的到达了对方。如果没有回应,TCP这一层则会进行重新传输,直到可以到达。

网络层

  • IP层需要查看目标地址和自己的是否在同一个局域网,如果是,就发送ARP协议【Address Resolution Protocol:解析地址的协议,根据通信方的ip地址可以反查出对应的MAC地址】来请求这个目标地址对应的MAC地址【Media Access Control Address】:指网卡所属的固定地址,然后将源MAC地址和目标MAC放入MAC头,发送出去。如果不是一个局域网,就需要发送到网关,这时还需ARP协议,来获取网关的MAC地址,然后将源MAC和网关MAC放入MAC头,发送出去。

链路层

  • 网关收到包发现MAC地址符合,取出目标IP地址,根据路由协议找到在下一跳的路由器,获取下一跳的路由器的MAC地址,将包发给下一跳路由器。这样经过路由器一跳一跳终于到达目标的局域网。最后一跳的路由能够发现,目标地址就在自己的某个出口的局域网上,于是,在这个局域网上发送ARP,获得这个目标地址的MAC地址,将包发送出去。

  • 目标机器发现MAC地址符合,就将包收下,发现IP地址符合,根据IP中协议项,知道自己上一层是TCP协议,于是解析TCP的首部,里边有序列号,需要看看这个序列包是不是我要的,如果是就放入缓存中然后返回一个ACK,如果不是,则丢弃。

  • TCP头里还有一个端口号,HTTP的服务器正在监听这个端口号,于是目标机器自然知道是HTTP服务器这个进程想要这个包,于是将包发送给HTTP服务器,HTTP服务器进程看到后,将网页发给客户端。


以上是笔者的理解,后续会根据自己的理解,进一步完善该文章。下边的图摘自书中的插图,比较清晰直观。

图片来源《图解HTTP》侵删


参考致谢:《图解HTTP》《网络是怎样连接的》