上篇文章:
目录
1 数据链路层
数据链路层负责两个相邻节点之间的转发,数据链路层采用以太网协议,网线就是以太网线。以太网帧的格式如下:
源地址和目的地址:是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的,一个设备的MAC地址唯一。
帧协议类型:有三种值,分别对应IP、ARP、RARP,ARP是利用广播根据IP地址寻找对应MAC地址,RARP根据MAC地址寻找对应的IP地址。
注意:每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。
帧末尾:是CRC校验码。
以太网帧的数据长度是46-1500字节(不足46字节的数据包会在其后补位,比如ARP数据包),把最大传输长度1500字节称为MTU(不同的数据链路层标准的MTU不同)。如果网络层的数据包超过1500字节,就会导致IP数据包分片(这是主要原因)。
注意:由于数据链路层是负责相邻两个节点的传播,因此以太网帧在传播过程中的源MAC是上一个节点,而目的MAC是下一个节点,MAC地址是通过ARP协议获取的。
1.1 MTU对IP协议的影响
将较大的IP包分成多个小包,并给每个小包打上标签。每个小包IP协议头的16位标识都是相同的。每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记(当前是否是最后一个小包,是的话置为1,否则置为0)。到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层。一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据。
1.2 MTU对UDP协议的影响
UDP携带的数据超过1472(1500-20(IP首部)-8(UDP首部)),那么就会在网络层分成多个IP数据报。这多个IP数据报有任意一个丢失,都会引起接收端网络层重组失败。那么这就意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就大大增加。
1.3 MTU对TCP协议的影响
TCP报文段也不能无限大,还是受制于MTU。TCP的报文段的最大消息长度,称为MSS(Max Segment Size)。TCP在建立连接的过程中,通信双方会进行MSS协商。最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)。双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。然后双方得知对方的MSS值之后,选择较小的作为最终MSS。MSS的值就是在TCP首部的40字节变长选项中(kind=2)。
2 DNS协议
DNS既是一个协议,又是一个系统,它工作在应用层,建立了网址(域名)和IP地址之间的关系。最早的DNS系统是hosts文件,通常在C:\Windows\System32\drivers\etc路径下:
hosts文件中左侧是IP地址,右侧是对应的网址。但是这种方式现在很少使用,这是由于网站现在太多了,全存在hosts文件中存不下。现在使用的方式是把网址IP映射关系存储在DNS服务器,哪个主机需要进行DNS解析,就向DNS服务器发送请求获取这种映射关系。
注意:主机如何知道DNS服务器的地址?由家庭路由器获取,家庭路由器由运营路由器获取,运营路由器由网管配置最近的DNS服务器地址。
DNS服务器为了能抗住访问量过高的请求会进行如下操作:
1.主机进行DNS解析后,把映射关系缓存到本地。
2.在全世界架设多个DNS的镜像服务器,镜像服务器从根服务器进行数据的同步。
3 网络原理知识总结
对于网络原理的知识总结,这里用一个问题来贯穿整个网络原理的知识,在浏览器地址栏输入URL开始,到看到网页,中间过程发生了什么事?
1.应用层:(1)DNS解析,如果是第一次访问该域名,地址栏输入的域名主机不知道对应的IP,就会给DNS服务器发送请求,请求的内容是域名的IP是什么。DNS服务器返回响应,响应的内容是域名对应的IP。主机拿到IP后会在本地做地址IP映射,方便多次访问同一个域名而不用再次获取IP。(2)构造HTTP请求,浏览器把希望获得的页面内容的需求构造成HTTP请求发送给URL对应的服务器。
2.传输层:HTTP协议使用TCP协议来传输(封装),(1)三报文握手建立连接(细节:客户端发送SYN报文,服务器发送SYN+ACK报文,客户端再发ACK报文,这样做的目的是验证双端收发能力,不能两报文或四报文)(2)传输数据(细节:报文段序号和确认号、确认应答、超时重传、滑动窗口、流量控制、拥塞控制等机制)。
3.网络层:传输层报文在网络层统一使用IP协议,添加IP首部(封装),填写源IP和目的IP,构造成IP数据包采用一跳一跳的形式传播(路由表)。
4.数据链路层:采用以太网协议对IP数据包进行封装,添加首部(源MAC地址和目的MAC地址,使用ARP协议来进行IP和MAC地址映射)和尾部构造成以太网帧,并根据以太网帧数据载荷最大长度(MTU)来对IP数据包进行分片(标识、标志、片偏移),以太网帧在传播过程中会修改源MAC和目的MAC(分别对应传播过程的上一个节点和下一个节点)。
5.物理层:以太网帧在物理层最终会以比特流的形式传播,传播介质是光纤或电缆,因此数据最终是以光信号(频率的快慢来代表1或0)或电信号(电平的高低来代表1或0)来传播。
6.1-5的过程是封装的过程,最终经过物理层的传输,数据到达服务器端,服务器端将比特流从物理层向上层进行层层分用(每层负责本层的校验和的验证、首部尾部的拆除、数据报顺序的排序(可能有多个数据报)),最终得到请求的内容由应用层进行处理,即后端代码来根据请求计算响应(业务代码的核心),并返回响应。
7.响应经过1-5的步骤后,到达客户端,浏览器经过解析,最终将页面渲染到用户的显示屏上。如果后续长时间没有数据交互或用户关闭页面,在传输层的连接就会断开,经过四次挥手断开连接(客户端发送FIN报文,服务器返回ACK,可能经过一定时间的数据处理,服务器再次发送FIN报文,客户端返回ACK,服务器接收到ACK进入关闭状态,客户端等待2MSL后再关闭(防止客户端第四次挥手的ACK报文丢失服务器超时重传再发送FIN后客户端能及时处理,同时保证所有的报文在2MSL都可以消失在网络中避免影响下次连接))
注:上述过程只是简单的脉络,对于细节部分,需要补充,在后续的学习中会不断补充其他有关但未讲述细节的部分,建议越详细越好。