从IP协议看计算机网络通信

一、序言

在TCP/IP分层模型中,互联网层是心脏,对应OSI的分层模型,则是网络层。网络层的主要作用,是实现终端节点之间的通信,也就是点对点的通信。在该层中,主要是由IP、ICMP两个协议组成,而IP的作用就是在复杂的网络环境中将数据包发送给到最终的主机。

二、网络层跟数据链路层

有的小伙伴可能会分不清IP(网络层)和MAC(数据链路层)的关系,其实很好理解,MAC主要是实现两个直连设备之间的通信,而IP则负责在没有直连的两个网络之间通信,举个栗子:
从IP协议看计算机网络通信_第1张图片
假设我现在要去一个地方游玩,需要转地铁和火车才能到达,制定了一个行程表,可能需要先搭乘A地铁再转B火车才能到达,地铁和火车都只能再特定的区间内移动,该区间就像网络通信中的数据链路层,而区间的起始和中止地址就好比源MAC地址和目的MAC地址。而整个旅程的行程表就好比网络层,记录行程的源IP和目的IP,所有主机都维护着一张路由控制表,记录IP包在下一步应该发给那个路由器。

三、IP分片与重组

对于网络层来说,数据链路层是具备抽象化的,不同的MAC(数据链路层)都有各自的MTU(最大传输单元),就好比寄快递,有的快递大,有的快递小。但对于网络层来说,是需要屏蔽这个差异的,所以对大于MTU的IP包,传输层会进行分片处理,将较大的包分片成多个IP包进行传输,再由接收方目标主机进行重组。

从IP协议看计算机网络通信_第2张图片

在以太网中MTU则是1500个字节,假设我们要发一个4000字节的IP数据包无法再一个帧中发送出去,这时候就会将数据包分成3个分片进行发送。发送前会设置一个唯一数据做为IP首部的标识码发送,分片之后IP首部的识别码都相同,同时有一个“片偏移”字段,用来标识分片之后每个分片再原始数据的相对位置以及是否还有后续其他分片。

在分片传输中,⼀旦某个分片丢失,则会造成整个 IP 数据报作废,所以 TCP 引⼊了 MSS(最大报文长度) 也就是在 TCP 层进行分片不由 IP 层分片,而对于 UDP 我们尽量不要发送一个大于MTU的数据报⽂。
为什么分层是在TCP层而不是在IP层?

四、IP协议相关技术

在实际使用中,其实是很少直接输入某个IP的,通常输入的是域名地址,因此,中间还会涉及到IP地址的映射,此外,在数据链路层还有要依赖MAC地址,所以,在实际中,仅凭IP地址是无法完成通信的,还需要IP的其他辅助技术:DNS、ARP、ICMP、ICMPv6、DHCP、NAT,还包括IP隧道、IP多播、IP任播、质量控制(Qos)以及网络拥塞显示通知以及Mobile IP等技术。

上面罗列的相关技术,有些大家应该比较熟悉,这里列举几个比较典型的进行说明。

3.1 ARP

我们都指导,确定了IP地址,就可以向该地址发送IP报文,但是在通信之前需要先了解IP所对应的MAC地址,而ARP就是用来处理这个内容。以目标IP地址为线索,用来定位下一个接收数据分包网络设备的MAC地址,如果目标主机不在同一个链路,会查找下一跳路由器的MAC地址。
从IP协议看计算机网络通信_第3张图片

3.2 ICMP

通过IP网络架构需要关注两个点:确认网络是否正常、遇到问题时进行网络诊断,制止问题蔓延,ICMP正是提供这类功能的协议,ICMP主要做的是确认IP包是否被成功送达,通知发送过程中IP包被丢弃的具体原因。普遍存在的问题有目标不可达(找不到目标IP)或者是ICMP超时消息。

IP请求头中有一个字段TTL,他的值每经过一个路由器就减1,直到减少0时候该包就被丢弃,此时路由器就会发送一个ICMP超时消息给到发送主机,告知该包已经丢弃,如果传输层是TCP协议的话从而触发超时重传。

设置IP包生命周期的主要目的,是为了防止数据包在网络上被无休止的转发。当消息送达的时候,目的主机会发送ICMP回送应答消息,告知消息已经收到,通常用的ping命令就是利用这个消息实现的。

3.3 显示拥塞通知

当发生网络拥塞时,作为IP上层协议,TCP虽然也能控制网络拥塞,但它是通过发送包的失败进行判断的,并不能在数据包损坏之前减少数据包的发送量。为了解决这个问题,人们提出了一种显示拥塞通知的机制,即ENC。

想要实现ENC机制,需要将TCP首部的TOS字段换成ENC。ENC机制主要是依赖两个标志位,会在TCP首部的保留位追加CWR标志和ECE标志,在发送包中记录在发送过程中是否遇到网络拥塞,并且在返回包的TCP首部通知是否发生过拥塞。拥塞检查是在网络层进行,拥塞通知则是在传输层处理。
从IP协议看计算机网络通信_第4张图片

五、总结

以上的大部分都是来源于《图解TCP_IP》这本书,以及结合小林Coding的《图解网络》的学习和理解,重在思想,例如分片的处理以及拥塞通知,很多在设计上都是相类似的,如果有理解错误的地方,欢迎指出,互相交流。

你可能感兴趣的:(计算机网络,网络协议,tcp/ip,分片重组,MAC,OSI)