A.HTTP协议是基于TCP协议的,所以它使用面向连接的方式发送请求,通过二进制流的方式传给对方,到了TCP层,它会把二进制流变成一个个报文段发送给服务器。在发送每个报文段后,都需要对方有一个ACK回应,来保证报文可靠地到达了对方,如果没有回应,那么TCP这一层会进行重新传输,直到收到回应。
B.TCP层发送每一个报文的时候,都需要加上自己的地址(源地址)和它想要去的地方(目标地址),将这两个信息放到IP头里面,交给IP层进行传输。
C. IP层需要查看目标地址和自己是否是在同一个局域网,如果是,就发送ARP协议来请求这个目标地址对应的MAC地址,然后将源MAC和目标MAC放入MAC头,发送出去即可;如果不在同一个局域网,就需要发送到网关,仍需要发送ARP协议,来获取网关的MAC地址,然后将源MAC和网关MAC放入MAC头,发送出去。
D.网关收到包后,若发现MAC符合,取出目标IP地址,根据路由协议找到下一跳的路由器,获取下一跳路由器的MAC地址,将包发给下一跳路由器,这样循环下去直到到达目标的局域网。最后一跳的路由器如果发现,目标地址就在自己的某一个出口的局域网上,就在这个局域网上发送ARP,获得这个目标地址的MAC地址,将包发出去。
E.目标机器发现MAC地址符合,就将包收起来;发现IP地址符合,根据IP头中的协议项解析TCP的头,根据里面有序列号判断这个序列的包是否是想要的,如果是就放入缓存中,然后返回一个ACK,如果不是就丢弃。
F.TCP头里面还有端口号,如果HTTP的服务器正在监听这个端口号,于是将包发给HTTP服务器,HTTP服务器的进程将请求的内容发给客户端。
原文:https://www.cnblogs.com/kongzimengzixiaozhuzi/p/13591076.html