输入网址到显示,期间经历哪些过程?
浏览器第一步工作就是要对输入的URL进行解析,从而确定发送给Web服务器的请求信息。
关于HTTP,可以看以下文章(由于无法给链接,关于以下文章可以私信我获取具体地址):
在进行完URL解析以后,需要通过DNS域名解析获取服务器的IP。
关于DNS,可以看以下文章:
操作系统协议栈
通过DNS获取到IP以后,就可以将传输工作交给操作系统协议栈。
应用程序(浏览器)通过调用Socket库来委托操作系统协议栈工作。协议栈大体分为两部分:
IP协议中还包含ICMP协议(告知网络传输过程中产生的错误和控制信息)和ARP协议(获取MAC地址)。
IP下面的网卡驱动程序负责控制网卡硬件,网卡负责实际的收发操作(对网线中的信号执行收发)。
由于HTTP的传输层协议是TCP,因此我们还需要借助TCP的帮助,通信的双方需要建立TCP连接。
关于TCP,可以看以下文章(由于无法给链接,关于以下文章可以私信我获取具体地址):
TCP在执行数据传输的时候会委托IP模块将数据封装成网络包发送给通信对象。
通过上图可以看出,IP协议里面需要有源IP地址和目的IP地址,由于HTTP是TCP传输,所以在IP首部中的协议后为0x06(表示TCP)。
客户端有多个网卡,源IP地址如何选择?
如果客户端有多个网卡(多个源IP地址),此时需要根据路由表规则来进行网卡(源IP地址)的选择。
# linux中查看路由表
route -n
具体的选择步骤如下:
在IP头部生成以后,需要在IP头部的前面加上MAC头部。
MAC包头里需要发送方的MAC地址和接收方的MAC地址,在TCP/IP通信中,协议类型只有两种:
关于ARP如何获取接收方MAC地址,可以看以下文章:
如何查看MAC地址缓存
arp -a
ARP缓存大体有三部分组成:
网络包只是内存中的一串二进制信息,无法直接发送给对方。需要网卡将数字信息转化为电路信号才能在网线上进行传输。
控制网卡需要借助网卡驱动程序,网卡驱动程序从IP层获取到包以后,会将其复制到网卡内的缓冲区,接着会在其开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列。
数据包封装好以后,网卡会将包转换成电信号通过网线发出去。
交换机是二层网络设备,目的是用来将数据包原样的转发至目的地。
交换机的端口没有MAC地址。
交换机中有MAC地址表,MAC地址表主要包含两个信息:
交换机的包接收操作
MAC地址表中没有如何处理?
MAC地址表中如果没有对应的MAC地址,交换机就无法判断将数据包转发至端口,此时交换机会将数据包发送至除源端口以外的所有端口上。端口上的设备收到数据包以后,如果自己的MAC地址与数据包中的相符,就会接收该数据包,并作出响应,只要返回了响应,交换机就可以将它写入MAC地址表,下次就不需要将包发送至所有端口了。
如果接收方是一个广播地址,交换机还是会把包发送至除源端口以外的所有端口。
数据包在经历过交换机以后,顺利抵达了路由器,在路由器上会被转发到下一个路由器或目标设备。
路由器是三层网络设备的各个端口都有MAC地址和IP地址。
路由器的收发流程
确定完目标IP地址以后,又会通过ARP确定MAC地址,最终将封装数据包(IP层的目标IP不会发生变化)发送出去。在整个数据包转发过程中可以看出源IP和目标IP始终不会变化,但MAC地址一直是在变化的。
页面更新:2024-04-06
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号