互联网世界一切通信都将IP化。IT行业无论你用哪种语音(C++,Java,PHP等),无论你偏软件或偏硬件,最大公约数之一可能就有IP。国家在搞三网融合,即Internet,电话网,有线电视网将全用IP数据包传输数据。可以说IP是网络的基石。本篇是我对IP协议包括VLSM和CIDR的理解。
IP的责任简单地说就是将数据从源传送到目的地。IP协议被封装在TCPIP 5层协议中的网络层上,具体格式如下:(以下是我个人对IP包头的理解,权威的请查阅wikipedia或RFC791,另文中出现的IP均指IPv4)
1.版本(4位):
4或6,表示IPv4还是IPv6
2.首部长度(4位):
指明IP包头部长度(不包含数据)。如没有可选项长度是20 byte。可选项最大40 byte,因此IP包头部最大长度是60 byte
3.优先级与服务类型(8位)(直接RFC791上截图了):
4.总长度(16位):
IP包的长度,总长度 - 首部长度 = 数据长度
5.标识符(16位),标志(3位),段偏移量(13位):
三个结合在一起使用,用于数据分包。比如A->B->C,A的MTU是1500,B的MTU是1000,那B收到A的包转发给C时就要分包:第一个包1000,第二个包500。
标识符(16位):分包后,每个包上标记相同的值,以便区分哪些包原本是同一个包拆开来的。
标志(3位):第一位固定是0。第二位DF(Don't Fragment)为1时不切片,这样B收到MTU1500的包就不能分包,无法转发给C只能直接丢弃。第三位MF(More Fragments)为1时表示后面还有切片。
段偏移量(13位)用于分包后合并时确定依次顺序。
6.TTL(8位):
TTL本是想用做统计时间的,后来变为跳数,最大255,一般为64,