UNIX网络编程--IPV4 IPV6 ICMPV4 ICMPV6
一、IPV4首部
IP层提东无连接不可靠的数据报递送服务。它会尽力把IP数据报递送到指定的目的地,然而并不保证他们一定到达,也不保证他们的到达顺序与发送顺序一致,还不保证每个IP数据报只到达一次。任何期望的可靠性(既五差错按顺序不重复地递送用户数据)必须由上层提供支持。对于TCP应用程序而言,这有TCP本身完成,对于UDP应用程序而言,这得由应用程序完成。IP层最重要的功能之一是路由。每个IP数据报包含一个源地址和一个目的地址。
1)4位版本字段值为4.
2)首部长度字段是包括任何选项在内的整个IP首部的32位字长度。这个4位字段的最大取值为15,因而IP首部的最大长度为60个字节。扣除首部拱顶部分所占据的20字节外,它最多允许40个字节的选项。
3)历史性的8位服务类型字段被替换为两个字段:6位区分服务码点和2位显示拥塞通知
4)16位总长度字段是包括IPV4首部在内的整个IP数据报的字节长度。数据报中的数据量就是笨字段减掉4乘以首部长度(首部长度都是32位或4字节的整数倍)本字段是必需的,因为有些数据链路要求把帧垫补成某个最小长度(例如以太网),因而有效IP数据报的大小有可能小于数据链路的最小长度。
5)16位标识字段由IP模块为每个IP数据报设置成不同的值,用于分片和重组。该字段必须就源IPV4地址、目的IPV4地址和协议这三个字段至少在数据报的网络存活期唯一标识每个IP数据报。如果分组不会被分片,那么就不需设置此段
6)DF位、MF位和13位片段偏移字段也用于分片和重组。DF位还用于路径MTU发现。
7)8位存活时间(TTL)字段由本IP数据报的发送者设置,并由转发它的每个路由器地阿金。当被减到0时,响应路由器就丢弃该数据报。任何IP数据报的生命期限定位最多255跳。
8)8位协议字段指定包括在本IP数据报中的数据类型。它的典型值有1(ICMPV4)、2(IGMPV4)、6(TCP)、17(UDP)
9)16位首部校验和字段只对IP首部进行计算。
10)源头IPV4地址和目的IPV4地址都是32位字段
11)选项字段