IP 协议的详细描述
IP服务特点
IP协议为上层的协议提供了无状态、无连接、不可靠的服务。
无状态:IP通信的双方不同步传输数据的状态信息,有关数据报的传输过程和接收过程都是独立的,没有上下文关系的。缺点:无法处理乱序和重复的IP数据报。优点:简单高效。
对于IP通信来说,当接收端只要确认接收到的数据报是完整的(多个数据报<数据报太大,只能分片发送>或者单个数据报)就会将这些无序的、甚至是有重复的数据报交付给上层的协议,例如TCP。TCP就会将这些数据报排列成有序的、正确的,然后上交给上层协议。
无连接:指IP通信的双方,都不长久的维持对方的信息,因此上层每次发送数据时,都会在数据报中添加接收端的IP地址。
不可靠:指的是不能保证IP协议能够准确的将IP数据报发送到接收端。但是这个缺点由IP协议的上层协议来解决:例如TCP能够实现数据确认、超时重传等机制达到可靠传输。
IPV4的头部结构
IPv4的头部的长度为20字节
4位版本号:对于IPV4是4 ,其他版本不讨论。
4位头部长度:4位的二进制最大为1111=15(十进制)头部长度的单位是4字节,所以头部长度最大字节数为4*15=60字节
16位总长度是数据报的总长度,单位是字节,所以数据报最大长度位216=655235字节,但出于实际情况下的MTU(最大传输单元)限制,达不到这么多,这就需要用到分片。
16位标识唯一的标识主机发送的每一个数据报。随机生成一个初始值,然后每发一个数据报,其值加1.
3位标志字段的第一位保留;第二位(Don‘t Fragment,DF)表示禁止分片;第三位(More Fragment,MF)表示更多分片。
13位片偏移是分片相对于第一个分片的便宜数(不包含头部),实际的偏移值是该值左移3位(乘8)得到的。为了保证每个分片都是8的整数倍。
**8位生存时间(Time To Live)**是数据报到达目的地之前允许经过的路由器的跳数(一般设置为64跳)每经过一个路由器,该值减1,直到为0.就丢弃该数据报。
8位协议是区分上层协议:ICMP是1,TCP是6,UDP是17.
16位头部检验和通过CRC检查是否该IP数据报损坏。
IP模块工作流程图
路由机制
IP的路由机制包括以下3部
(1)、查找路由表中和数据报中的目标IP地址是否具有完全匹配的主机IP地址,如果没找到就进行第2步
(2)、查找路由表中和数据报中的目标IP地址具有完全相同的网路ID的IP地址,如果找到就使用该路由项。否则转第3步
(3)、选择默认路由项,这表示下一跳地址是网关地址。
其中路由表中的数据是实时更新的以反映网络的连接情况