1.数据报格式
2.分片
3.IPV4地址
1.数据报格式
1)网络层功能a.IP协议的核心任务: 将数据包从源主机发送到目标主机- 寻址: 就像每家每户都有一个唯一的地址一样, IP协议为网络上的每一台设备分配一个唯一的"身份证号", 也就是IP地址(如192.168.1.1); 没有这个地址, 数据包就不知道要往哪里送- 路由: 数据包在去往目的地的路上, 会经过很多路口(路由器); IP协议负责根据IP地址, 为数据包选择最佳路径- 分片与重组: 网络上的不同链路(比如光纤、Wi-Fi)能承受的数据包大小不同(MTU), 如果一个数据包太大, IP协议会把它"切"成几片, 分别发送; 等到了目的地, 再由目的主机的IP协议把它们"拼"回原样b.ICMP信令协议: 它寄生于IP协议之上, ICMP报文是封装在IP数据包里面进行传输的; 它的功能: 传递网络本身的控制信息和错误报告(ping的本质是发送ICMP数据报)

2).IP数据报格式

第一行a.版本(4比特)- 作用: 指明IP协议的版本, 现在是IPv4和IPv6共存- 例子: 如果是IPv4, 这个字段的值就是4; 如果是IPv6, 就是6; 通信双方必须版本一致b.首部长度(4比特)- 作用: 表示IP数据报首部有多长, 因为这个字段只有4位, 单位是4字节; 所以, 首部最小长度是5(即 5 * 4 = 20字节), 最大是15(即15 * 4 = 60字节)c.区分服务(8比特)- 作用: 用来表示数据包的优先级和服务类型, 比如要求低延迟、高吞吐量等d.总长度(16比特)- 作用: 指整个IP数据报(首部 + 数据部分)的总长度, 单位是字节- 重要性: 因为这个字段有16位, 所以一个IP数据报的最大长度是2^16 - 1 = 65535字节
第二行a.标识(16比特)- 作用: 一个计数器, 用来唯一地标识一个数据报; 当数据报因为太大而被分片时, 同一个数据报的所有分片都拥有相同的标识; 这样, 接收方才能知道哪些分片是属于同一个原始数据报的b.标志(3比特), 目前只有前两位有意义- 最低位(MF): MF = 1表示"后面还有分片"; MF = 0表示这是最后一个分片- 中间位(DF): DF = 1表示"不能分片"; DF = 0 表示"允许分片"; 如果数据报太大, 而DF又被设为1, 路由器会丢弃它并发回一个ICMP差错报文c.片偏移(13比特)- 作用: 指出这个分片在原始数据报中的相对位置, 单位是8字节- 例子: 如果第一个分片的偏移是0, 第二个分片的偏移是185(假设第一个分片的数据部分是1480字节,1480 / 8 = 185), 这样接收方就能按正确顺序重组数据
第三行a.生存时间(8比特)- 作用: 防止数据报在网络中无限循环, 每经过一个路由器, TTL值就减1; 当TTL减到0时, 路由器就会丢弃这个数据报, 并向源站发送ICMP超时消息b.协议(8比特)- 作用: 指出这个IP数据报的数据部分承载的是哪个上层协议的数据; 这样, 接收方的网络层在拆掉IP首部后, 才知道该把数据交给哪个上层协议处理- 常见值: 6代表TCP, 17代表UDP, 1代表ICMPc.首部校验和(16比特)- 作用: 用于检验IP数据报首部在传输过程中是否出错注: "它只校验首部,不校验数据部分"
第四行- 源IP地址(32比特)- 作用: 发送方的IP地址第五行- 目的IP地址(32比特)- 作用: 接收方的IP地址, 这是路由寻址的最终依据
2.分片
a.网络链路有MTU(最大传输单元), 链路层帧所携带的最大数据长度- 不同的链路类型- 不同的MTUb.大的IP数据报在网络上被分片(fragmented)- 一个数据报被分割成若干小的数据报(相同的id, 不同的偏移量, 最后一个分片标记为0)- "重组"只在最终的目标主机进行- IP头部的信息被用于标识, 排序相关分片

想象一个原始数据(比如4000字节长, 首部20字节, 数据部分3980字节)要经过一个网络, 网络上规定最大传输单元(MTU)是1500字节

接收方收到这三个包, 通过片偏移将这三个包进行重组

3.IPV4地址

a.IP地址用32位表示, 对主机或者路由器的接口进行编址b.接口: 主机/路由器和物理链路的连接处- 路由器通常拥有多个接口- 主机也有可能有多个接口- IP地址和每一个接口关联注: "一个IP地址和一个接口相关联"
1).子网简介a.子网就是将一个大网络划分成几个较小的网络b.一个IP地址由两部分组成: 网络部分和主机部分c.子网掩码用来区分IP地址中的网络部分和主机部分2).子网划分就是借用IP地址中主机部分的一些位来作为子网位, 从而将原网络划分成多个更小的网络
假设我们有一个C类网络: 192.168.1.0, 默认子网掩码是255.255.255.0(即/24); 这个网络中有256个地址(从192.168.1.0到192.168.1.255), 其中可用的主机地址是254个192.168.1.1到192.168.1.254现在, 我们想把这个网络划分成两个子网; 我们可以将子网掩码延长一位, 即从24位变成25位255.255.255.128; 这样, 我们就得到了两个子网:a.子网1: 192.168.1.0/25- 网络地址: 192.168.1.0- 可用主机地址范围: 192.168.1.1 到 192.168.1.126- 广播地址: 192.168.1.127b.子网2: 192.168.1.128/25- 网络地址: 192.168.1.128- 可用主机地址范围: 192.168.1.129到192.168.1.254- 广播地址: 192.168.1.255