在浏览器地址栏输入www.baidu.com到打开百度首页这期间到底发生了什么?

刚才无意间看到这么一个面试题,觉得有点意思,我想从五层网络模型的角度说说我的看法。

1.首先通过DNS域名系统向域名服务器发送域名解析请求来得到百度的IP地址39.156.69.79;
2.系统通过ARP地址解析协议获得百度IP地址映射的MAC地址;
3.系统通过TCP三次握手向百度服务器发送请求连接的报文段并建立连接;
4.应用层形成请求百度首页的HTTP请求报文后下放到传输层;
5.传输层在请求报文前面加上包含源端口和目的端口等字段的TCP首部形成TCP报文段后下放到网络层;
6.网络层在TCP报文段的前面加上包含本机IP地址和百度IP地址的首部形成IP数据报后下放到数据链路层;
7.数据链路层对IP数据报加上含有目的MAC地址和源MAC地址的首部和含有帧检验序列FCS的尾部封装成MAC帧后下放到物理层;
8.在物理层将帧转换为比特流然后在铜线电缆光纤等物理媒介上以电信号的形式传输至北京的百度服务器;
9.百度服务器收到数据后剥洋葱似的一层层反向解包并将HTTP请求报文上传到应用层然后向客户端发送HTTP响应报文;
9.客户端收到HTTP响应报文后由浏览器解析百度首页的HTML代码并渲染出整个页面;
10.系统通过TCP四次挥手释放TCP连接。

END

 

补充:

在同一局域网内,如果主机A要想通过B的IP地址确定其MAC地址并和B进行数据交互,需要按照ARP协议的”广播请求和单播应答”来确定主机B的MAC地址:

  1) A先查看自己的ARP高速缓存表中是否有B主机的MAC地址记录。

  2) 如果A的ARP高速缓存表中有B的MAC地址记录,则直接通过这个MAC地址进行数据的传输。

  3) 如果A主机的ARP高速缓存中没有B主机的记录,则会向局域网的所有主机广播一个ARP请求,寻找B主机的MAC地址。

  4) 当B主机收到A主机广播的ARP请求后,就会直接给A主机回复一个ARP数据包。

  5) 当A主机收到B主机发送过来的请求后,将B的MAC地址写入高速缓存中,然后通过该MAC地址,A主机向B主机进行数据的传输

 跨网段:

A与B不在一个网段,A查询自己的路由表,知道如果想和B通信则必须通过gateway 来中转,所以会在与gateway 直连的接口(假定 Ethernet接口)上请求gateway 的MAC地址。 A主机先通过广播一个ARP请求,找到本网络中的一个路由器的MAC地址,然后将数据包直接给路由器。当路由收到数据包后,如果B主机在同网络中的话,这时通过ARP找到B主机,然后把数据包给B主机。如果B主机不和A主机发送数据的路由器在同一网络内的话,则路由器会通过ARP协议找到下一跳的路由器,然后把数据包发送到该路由上,以此类推。

 

 http协议及报文详解:https://blog.csdn.net/yutiab69/article/details/82869239

posted @ 2019-11-21 22:34  天青色wy  阅读(2860)  评论(0编辑  收藏  举报