返回

网络层协议

网课视频(上)

网课视频(下)

网络层是OSI参考模型的第3层,这一层的协议包括IP协议、ICMP协议、ARP协议等多个协议。

TCP/IP协议簇

IP协议是TCP/IP协议簇中的核心协议,它的主要作用是对网络中传输的数据进行统一封装,提供数据传输地址,以及隔离软件和硬件。

用IP协议封装的报文称为IP数据报。大部分数据都需要封装成IP数据报再进行传输。

IP协议

IP数据报的首部包括固定部分和可选部分,固定部分长度20字节,可选部分长度0~40字节。所以IP数据报首部的长度在20~60字节。

  • 版本:占4位,指定IP协议的版本。值为4时,表示IPv4数据报。
  • 报头长度:占4位,指示首部长度。单位为4字节,取值范围为5~15,即首部长度为20~60字节。
  • 服务类型:占8位,为数据报添加的一个标志,通常用于指示数据报转发时的优先级。
  • 总长度:占16位,指示IP数据报总长度(含首部和数据部分)。一个IP数据报的最大长度为65535字节(64KB)。
  • 标识、标志、片偏移:在数据报分片和重组时使用。
  • 生存时间(TTL):占8位,取值0~255。数据报每经过一次路由其TTL值就减1,当TTL减为0时就丢弃这个数据报。
  • 协议:占8位,指示携带的数据所使用的协议。比如:数据是TCP数据报时为6,是UDP数据报时为17,是ICMP数据报时为1。
  • 首部校验和:占16位,用于检验数据报在传输中报头是否出错。
  • 源地址、目的地址:各占32位,指示源和目的的IP地址。
  • 可选字段:0~40字节,保存一些额外参数,比如时间戳等。
  • 填充:首部长度必须为4的整数倍,如果不是用填充来补足。

例:一个在ping操作时抓取的IP数据报,内部封装的是ICMP数据报。

IP数据报

IP地址和MAC地址的区别

  1. IP地址是逻辑地址,需要在设备上进行配置;MAC地址是物理地址,是设备出厂时自带的。
  2. IP地址是网络层地址,带有网络信息,可以跨网络;MAC地址是数据链路层地址,没有网络信息,只能在一个网络内部使用。
  3. 在IP数据报中封装的是IP地址,可指定世界上任何一台设备的地址;MAC地址封装在帧中,只能指定本网络中的设备。
  4. 能够处理IP数据报的设备是网络层设备,它们可以跨网络传输数据;只能处理帧的设备是数据链路层设备,它们不能向其它网络传输数据。

IP数据报的分片与重组(选读)

IP数据报还需要封装成帧才能在网络中传输,当IP数据报的长度超过帧容量时,需分片传输。

MTU

MTU称为最大传输单元,是指一帧允许携带的最大数据量,以字节为单位。

MTU值和网络有关,以太网的MTU值是1500,无线网络的MTU值是1492,蓝牙的MTU值是672。

路径MTU是指在整个传输路径中最小的MTU值。当数据报通过一个MTU值较小的段时,要求结点具有分片功能。

IP数据报的分片与重组

当IP数据报的长度超过它所在网络的MTU值时,需要把IP数据报分片传输,到达目的主机时再把各分片重组为原来的IP数据报。

分片的IP数据报在首部用标识、标志和片偏移字段:

  • 标识:占16位。这是一个计数器,主机每发送一个数据报就把计数值增1,这个计数值就写在数据报的标识字段。如果数据报进行了分片,其所有分片的标识字段值是相同的。
  • 标志:占3位。中间一位称为DF,为1时表示不允许分片。最后一位称为MF,为1时表示还有分片,为0时表示这是最后一个分片。
  • 片偏移:占13位。表示本片数据在原数据报中的相对位置,以字节为单位。重组时把本分片中的数据放在该位置处。

例:一个IP数据报的长度为2000字节(含20字节的首部),而网络的MTU值为1500,则这个数据报需分成2片进行发送。

该数据报中的数据大小为1980字节,分片后,第1片数据大小为1480字节,第2片数据大小为500字节。

每片都要再添加20字节的首部,所以第1片长度为1500字节,第1片长度为520字节。

MTU值的查看与测试

使用命令:netsh interface ip show interfaces 可查看本机中各网络连接的MTU值。

查看网络MTU值

Loopback是本机回环,它有一个很大的MTU值。所以本机内部传输IP数据报通常不用分片。

使用的连接不同,MTU值也会不一样。

由于到达目标主机可能会经过多个不同的网络,用 ping -f -l 长度 目标地址 可测试网络允许通过的数据报大小。

参数 -f 表示不允许对IP数据报分片(就是把标志中的DF设置为1)。

参数 -l 表示把指定大小的测试包发往目的主机(是字母l不是数字1)。

如果可以ping通,表示指定大小的数据报可以通过网络,如果ping不通,说明指定的大小超过了途经网络的MTU值。

测试网络MTU值

指定的长度不包括报头,所以传输1500字节的数据时需进行分片。

测试网络MTU值

传输1440字节的数据时不需分片。

考虑到IP数据报有20~60字节的报头,所以该网络的MTU值为1500。

分片会增加系统处理时间,影响访问速度。如果在传输过程中有一个分片出错,都需要重传整个IP数据报,浪费网络资源。所以在设计网络时需考虑这个问题。

ICMP协议

ICMP协议用于在网络设备间传递消息,包括网络通不通、网络是否可达、数据报出错等。

典型的应用就是 ping 命令,它会向目的主机发送几个ICMP请求报文,如果目的主机返回了ICMP响应报文,说明网络是连通的。

另外,如果数据报在传输过程中出错,转发节点会丢弃该数据报,并向源主机发送消息也是用ICMP协议发送的。

ICMP数据报

ICMP数据报需要封装在IP数据报中进行传输。

常见报文类型和代码

请求报文:类型 - 8,代码 - 0

响应报文:类型 - 0,代码 - 0

差错报告报文

网络不可达:类型 - 3,代码 - 0

主机不可达:类型 - 3,代码 - 1

超时:类型 - 11,代码 - 0

ARP协议

ARP协议称为地址解析协议,用于根据IP地址查找目标主机的MAC地址。

IP数据报需要封装成帧才能在网络中传输,IP数据报中的地址是IP地址,而帧中的地址是MAC地址,所以在封装时需获取目的主机的MAC地址。

ARP表

当源主机第一次访问目的主机时,它首先向网络中广播一个ARP查询包。

目的主机收到后,向源主机发送一个ARP响应包,里面包含了本机的MAC地址。

源主机用这个MAC地址封装帧,同时把它记录在本机的ARP表中。

当源主机再次访问同一个目的主机时,会直接使用ARP表中的MAC地址。

在计算机上可以用 arp -a 查看本机的ARP表。

注:如果源主机和目的主机不在同一个网络中,则ARP查询到的是网关设备的MAC地址。

ARP表的配置

通过ARP协议获得的表项是有失效期的,过一段时间就会自动清除。

我们可以用手工方式向ARP表中添加项目,这种项目称为静态表项。

添加ARP表项:arp -s IP地址 MAC地址

删除ARP表项:arp -d IP地址

利用静态ARP表项可防范由ARP欺骗攻击导致的网络瘫痪问题。

首页
单元练习
返回顶部