目录
[1 IP协议作用和意义](#1 IP协议作用和意义)
[2 IP数据报首部格式](#2 IP数据报首部格式)
[3 IP数据报分片](#3 IP数据报分片)
[4 以太网协议作用和意义(链路层)](#4 以太网协议作用和意义(链路层))
[5 练习](#5 练习)
1 IP协议作用和意义

IP网的意义
- 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。
- 如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。
网络互联使用路由器,路由器转发的都是IP协议

分组在互联网中的传送过程

分组传输路径

2 IP数据报首部格式

- 版本------占 4 位,指 IP 协议的版本。 目前的 IP 协议版本号为 4 (即 IPv4)。
- 首部长度------占 4 位,可表示的最大数值 是 15 个单位(一个单位为 4 字节), 因此 IP 的首部长度的最大值是 60 字节。
- 区分服务------占 8 位,用来获得更好的服务(优先级)。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 在一般的情况下都不使用这个字段
- 总长度------占 16 位,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节。 总长度必须不超过最大传送单元 MTU。
- 标识 (identification) ------占 16 位, 它是一个计数器,用来产生 IP 数据报的标识
- 标志(flag) ------占 3 位,目前只有前两位有意义。 标志字段的最低位是 MF (More Fragment)。 MF=1 表示后面还有分片,MF=0 表示最后一个分片。 标志字段中间的一位是 DF (Don't Fragment) 。 只有当 DF=0 时才允许分片。
- 片偏移------占 13 位,指出:较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。
3 IP数据报分片
IP数据报分片是指在网络传输过程中,当一个IP数据报的大小超过了网络链路的最大传输单元(Maximum Transmission Unit, MTU)时,将该数据报分成多个较小的片段进行传输的过程。
IP数据报分片通常发生在发送方的路由器上,以适应不同链路的传输要求。当一个IP数据报需要在某个链路上传输,但其大小超过了该链路的MTU时,发送方的路由器会将数据报分成多个片段。这些片段会被分配序列号,并分别打上标记表示它们是同一个数据报的一部分。
在接收方的路由器或目标主机上,它们会重新组装这些分片,按照序列号将它们合并成完整的IP数据报。这样,接收方就能够得到和发送方完全相同的原始数据。

IP 数据报首部中与分片有关的字段中的数值
标识相同,DF=0才允许分片,MF=0代表最后的数据报
|----------------|----------|-----------|--------|--------|---------|
| | 总长度 | 标识 | MF | DF | 片偏移 |
| 原始数据报 | 3820 | 12345 | 0 | 0 | 0 |
| 数据报片 1 | 1420 | 12345 | 1 | 0 | 0 |
| 数据报片 2 | 1420 | 12345 | 1 | 0 | 175 |
| 数据报片 3 | 1020 | 12345 | 0 | 0 | 350 |
IP 数据报首部的固定部分中的各字段

- 生存时间------占 8 位,记为 TTL (Time To Live), 指示数据报在网络中可通过的路由器数的最大值(最多255)。
- 协议------占 8 位,指出此数据报携带的数据使用何种协议, 以便目的主机的 IP 层将数据部分上交给那个处理过程
- IP 协议支持多种协议,IP 数据报可以封装多种协议 PDU。
- 首部检验和,只检验首部。

ICMP(Internet Control Message Protocol)是一种网络协议,主要用于在IP网络中传递控制消息。ICMP报文通常被用于测试和调试网络,比如网络测量、故障诊断、路由器交互等。
ICMP报文包含一个类型字段和一个代码字段。类型字段表示该报文的作用,通常包括echo回显请求、目的不可达、时间超时等等,而代码字段则更加具体地描述了该类型消息的细节。
比如,ICMP的echo回显请求报文(Type=8)会被发送方发送到目标主机上,目标主机需要根据该报文的内容向发送方返回一个echo回显响应(Type=0),以表明主机之间的连通性。
IGMP(Internet Group Management Protocol)是一种多播协议,主要用于管理多播组或频道的成员关系。IGMP一般运行在网络层上,可以与IP协议一起工作。
使用IGMP时,当主机要加入或离开一个多播组时,它会向所在的局域网发送一个IGMP报文,请求或通知局域网上的路由器,告知它当前主机的多播组成员状态。
路由器会根据收到的IGMP报文进行相应处理,如果发现没有任何主机对该多播组感兴趣,那么它就不会将多播数据包传送到该局域网中,以避免不必要的网络负载。
因此,在一个多播网络中,IGMP可以帮助路由器和主机有效地管理多播组成员关系,并避免造成不必要的网络拥塞。
4 以太网协议作用和意义(链路层)

数据链路层的地位

数据链路层信道类型

使用一对一的点对点通信方式。(ppp)

使用一对多的广播通信方式。
必须使用专用的共享信道协议来协调这些主机的数据发送。
以太网 V2 的 MAC 帧格式

类型字段用来标志上一层使用的是什么协议, 以便把收到的 MAC 帧的数据上交给上一层的这个协议。(mac地址与ip地址的关系是arp协议)
数据字段的正式名称是 MAC 客户数据字段。 最小长度 64 字节 - 18 字节的首部和尾部 = 数据字段的最小长度(46字节) 举例:MTU是根据链路层规定,如IP数据报最大1500,目标地址6,源地址6,类型2,FCS4,那么MTU最大1518。
无效的 MAC 帧
数据字段的长度与长度字段的值不一致;
帧的长度不是整数个字节;
用收到的帧检验序列 FCS 查出有差错;(CRC算法得出的内容叫做FCS)
数据字段的长度不在 46 ~ 1500 字节之间。
有效的 MAC 帧长度为 64 ~ 1518 字节之间。
5 练习
举例说明IP分片是如何进行的?
当一个IP数据报的大小超过了网络链路的最大传输单元(MTU)时,发送方的路由器会将该数据报进行分片,以下是一个具体的示例:
假设发送方有一个大的IP数据报,大小为1800字节,而链路的MTU为1500字节。
-
发送方的路由器首先检查数据报的大小是否超过了链路的MTU。如果超过了,就需要进行分片。
-
路由器根据链路的MTU大小(1500字节),将原始数据报分成两个片段。
第一个片段:包含前面的1500字节数据,剩余300字节被截断。 第二个片段:包含剩余的300字节数据。
-
每个分片都会被分配一个序列号,并设置相应的标志位来指示它们是同一个数据报的一部分。
-
发送方的路由器将这两个分片分别封装成新的IP数据报,并在其中设置相应的分片信息。
-
这两个分片进入网络后,可能经过不同的路径到达目标主机。
-
目标主机或接收方的路由器接收到这些分片后,根据它们的序列号和标志位,进行重新组装。
-
目标主机成功地将两个分片重新组装成原始的IP数据报,恢复了原始的1800字节数据。
通过IP分片,发送方就能够将超过MTU的大数据报合理地分解成多个小片段,以适应不同链路的传输要求。接收方可以根据序列号将这些分片重新组装,得到与发送方完全相同的原始数据。