本文已参与「新人创作礼」活动,一起开启掘金创作之路。
概述
网络层不可靠(可靠传输:想方法实现发送端发送什么,接收端就收到什么)不重复,不丢失,不乱序
在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。 争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
数据链路层功能:1、为网络层提供服务,2、做帧的定界(帧从哪里开始从哪里结束),3、检验帧中比特会不会出现错误。
数据链路层问题:1、无法实现可靠传输,2、不能实现不同网络之间的连接
因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。
使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。
与 IP 协议配套使用的还有三个协议:
-
地址解析协议 ARP(Address Resolution Protocol)
-
网际控制报文协议 ICMP(Internet Control Message Protocol)
-
网际组管理协议 IGMP(Internet Group Management Protocol)

所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在 的,但是我们利用IP协议就可以使这些性能各异的网络,从用户看起来好像是一个统一的网络。 使用IP协议的虚拟互连网络可简称为IP网。
如果在这种覆盖全球的IP网的上层使用TCP协议,那么就是现在的互联网(Internet)。
IP 数据报格式
IP如何分片?(当数据报总长度大于MTU值时)
怎么分片传输效率高?(按照最大长度分片,比如规定MTU为1500字节,则分1500字节一片,性能最高)
如何避免IP分片?
确定方片的顺序?(片偏移会记录当前数据在原数据中的位置,8个字节为偏移单位)
接收端怎么确定IP数据报全部到达了?(MF=0表示最后一个分片)
一行为4个字节,一个字节8位,共32位
- 版本 : 有 4(IPv4)和 6(IPv6)两个值;
- 首部长度 : 占 4 位(可表示15个单位,一个单位表示4个字节,IP首部长度最长60个字节),因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为固定部分长度为 20 字节,因此该值最小为 5个单位。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。
- 区分服务 : 用来获得更好的服务,一般情况下不使用。
- 总长度 : 包括首部长度和数据部分长度。(31-16+1)=16位,2^16=65535,IP数据报总长度,即最大传输单元MTU
- 标志(flag) ——占3位,目前只有前两位有意义。标志字段的最低位是MF (More Fragment) MF=1表示后面“还有分片”。MF=0表示最后一个分片。标志字段中间的一位是DF(Don't Fragment) 。只有当DF =0时才允许分片。
- 片偏移——占13位,指出:较长的分组在分片后某片在原分组中的相对位置(即前面的分片有多长)。片偏移以8个字节为偏移单位。
- 生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
- 协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。
- 首部检验和 :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。只计算头部。
IP数据报分片例题
【题】一数据报的总长度为3820字节,其数据部分的长度为3800字节(使用固定首部),需要分片为长度不超过1420字节的数据报片。
分片思路:
因固定首部长度为20字节,因此每个数据报片的数据部分长度不能超过1400字节。
于是分为3个数据报片,其数据部分的长度分别为1400、1400和1000字节。原始数据报首部被复制为各数据报片的首部(固定首部20字节),但必须修改有关字段的值。
分片结果:
三段,即20+1400(0~1399),20+1400(1400~2799),20+1000(2800~3799)
片偏移计算(8个字节一个偏移量):
