目录
IP协议:全称:Internet Protocol(网际互连协议)
IP转发:
IP协议:全称:Internet Protocol(网际互连协议)
IP协议的特点:
IP协议是TCP/IP协议族的动力,它为上层协议提供无状态,无连接,不可靠的服务。
无状态是指IP通信不同步传输数据,发送、传输和接收都是相互独立、没有上下文的。接收方只要收到了完整的IP数据包,就要交付上层协议,所以这些数据包可能是无序的、重复的。IP数据包虽然也有唯一标识,但是不是用来指示接收顺序的,而是用来处理IP分片和重组的。这种无状态的优点是:简单,高效。无需为保持通信状态而分配内核资源,传输数据也无需携带状态信息。
无连接是指IP通信不维持对方的信息。但在每次发送数据时,必须明确对方的IP地址。
不可靠是指IP协议不能保证数据包准确到达。发送失败的原因很多,比如:某个中转路由器发现IP数据包的存活时间太长(TTL),就丢弃此数据包,并返回一个ICMP超时错误给发送端;再比如接收端通过校验机制发现数据包不正确,就丢弃,并返回一个ICMP错误信息给发送端。 发送端IP模块检测到IP数据包发送失败,就通知上层协议发送失败,而不会试图重传。所以传输层协议需要自己实现数据确认、超时重传等机制,已达到可靠传输的目的。
IP头部结构:
4位版本号指定IP协议的版本,有IPv4,SIP,PIP。
4位头部长度是指该IP头部有多少个4字节,因为4位能表示的最大数是15,所以IP头部最长60字节。
8位服务类型,说明了IP数据包的服务需求,包括:最小延时、最大吞吐量、最高可靠性和最小费用。比如ssh和telent这样的登录程序需要的是最小延时服务,文件传输ftp需要最大吞吐量服务。
16为总长度指IP总长度。 MTU(帧的最大传输单元)绝对了1500字节内。
16位标识能唯一标识主机发送的每一个数据报,初值随机,每发送一个,其值就加一,用于分片和重组。同一个数据报的所有分片具有相同的标识值。
3位标志字段,第一位保留,第二位可以设置禁止分片DF,第三位标识数据报的更多分片MF。
13位分片偏移是指相对于原数据报的偏移。
8位生存时间TTL是数据报到达目的地之前允许经过的路由器跳数。
8位协议用来区分上层协议: 1是ICMP 6是TCP 17是UDP
16位头部校验和由发送端填充,接收端用来检查头部是否损坏。
32位源端IP地址和目的端IP地址,传输过程中保持不变。
选项字段: 记录路由(记录途径的路由器)、时间戳(测量途径路由器之前数据报传输的时间)松散源路由选择和严格源路由选择(必须经过这些和仅能通过这些)
IP分片:
分片可能发生在发送端,也可能发生在中转路由器,但是只有在目标机器上才会重组。
一个数据报的每个分片都具有自己的头部信息,其中有相同的标识,不同的片偏移。
帧的最大传输单元是1500字节,IP头部20字节,所以数据部分最多1480字节。
如下一个1501字节的IP数据报的分片示意图:
IP路由:
IP的路由是指决定发送数据报到目标机器的路径。
IP模块的工作流程:
从右往左看,收到来自数据链路层的IP数据报时,先检验,在查看是发送本机的,还是需要转发的。IP输出队列中等待发送的数据报除了转发的,还有本机上层协议(ICMP、TCP、UDP)的IP数据报。
路由表:
路由表按照数据报的目标IP地址分类,同一类型的IP数据报将被发送相同的下一跳路由器。
IP路由机制:
1.查找路由表中和数据报的目标IP地址完全匹配的主机IP地址,如果找到,就是用该路由项,没找到转步骤2.
2.查找路由表中和数据报的目标IP地址具有相同网路ID的网络IP地址(比如局域网),如果找到,就使用该路由项,否则转步骤3.
3.选择默认路由项,这通常意味着数据报的下一跳路由是网关。
路由表的更新:
静态更新:通过route命令修改路由表。
动态更新:使用OSPF(开放最短路径优先)等协议来自动更新路由表。ICMP重定向报文更新路由表。
IP转发:
1.检查数据头部的TTL值。如果TTL值已经是0,则丢弃该数据报。
2.检查数据报头部的严格路由选择选项。如果该选项被设置,则检测数据报的目标IP地址是否是本机的某个IP地址。如果不是,发送一个ICMP源站选路失败报文给发送端。
3.如果有必要,则给源端发送一个ICMP重定向报文,以告诉它一个更合理的下一跳路由器。
4.将TTL值减一
5.处理IP头部选项
6.如果有必要,则执行IP分片操作。