IP:网际协议
IP首部:最高位在0bit处,最低位在31bit处,传输时候每8bit传输一次,成为网络字节序
4bit协议版本:一般为4
4bit的首部长度:IP首部长度是首部占用32bit的数目,最长为15*4=60个字节,一般值为5,所以前面8bit的值通常情况下为0x45
8bit的服务类型:3bit的优先权子字段+4bit的TOS子字段和1bit的0.4bit的子字段代表:最小时延,最大吞吐量,最高可靠性,最小费用
16bit的总长度:是1byte的数目,IP数据报长度最大可达65535个字节,但一般会产生分片,该值也会随着变化
16bit的标识:标识主机发送的每一份数据报,每发送一份报文它的值就加1
3bit的标志字段:
13bit的片偏移:以上3种都是用于产生分片时候的用到
8bit的生存时间:TTL代表可经过多少个路由器,每经过一个路由器,其值减1,TTL变为0时,数据报丢弃,发送ICMP报文通知主机
8bit的协议:向上一级分用时分辨哪个协议向IP发送数据(1代表ICMP协议,2代表IGMP协议,6代表TCP协议,17代表UDP协议)
16bit的首部检验和:计算IP数据报的检验和,第一次置为0,对首部中每16bit进行二进制反码求和,结果存在16位检验和中,接收方对IP首部又一次反码求和(包括检验和本身),如果为1,说明数据报传输无误
32bit的源IP地址:
32bit的目的IP地址:
IP路由选择:
路由表每一项包含以下信息:
1:目的IP地址,如果主机地址位有一个非0,则是一个完整的主机地址,如果主机位全不是0,则是一个网络地址(由标志字段指定类型)
2:下一站(或下一跳)路由器IP地址,或者直接相连的网络IP地址:(由标志字段指定类型)
3:标志:一个标志指明目的IP地址是网络地址还是主机地址,另一个标志位指明下一站路由器是否为下一站路由器还是一个直接相连的网络接口.
4:为数据报的传输指定一个网络接口
IP路由选择功能:
1:搜索路由表,寻找和目的IP完全匹配的表目,找到后把报文发送给指定的下一站路由或者直接相连的网络接口(取决于标志字段)
2:搜索路由表,寻找和目的IP网络号匹配的表目,找到后把报文发送给指定的下一站路由或者直接相连的网络接口(取决于标志字段),此时目的网络上的所有主机都可以通过这个表目处置
3:搜索路由表,寻找默认路由器
通过设定一个子网掩码,可以区分下一站路由器是在同一个子网中或者通过SLIP链路转发出去.通常情况下子网掩码为255.255.255.0,当设定子网掩码为255.255.255.192时,也就前11位为子网号,指定子网号后3位为0x001时将数据通过子网内的主机转发,子网号后3位为0x010时将数据通过SLIP链路转发,可避免主机跨越不同的网络
IP首部选项:
IP记录路由的选项:
格式:IP首部前20固定字节+RR选项3字节(code+len+ptr) +IP地址(最长9个地址*4个字节长度的IP) IP首部最长度为60字节
其中code为选项类型,RR选项,code为7,len是RR选项的总字节数,此时为39,ptr为指向下一个可用指针的位置
IP时间戳选项:(记录经过的IP地址对应的时间)
格式:IP首部前20固定字节+(code+len+ptr+OF(4bit)+FL(4bit)) +IP地址(最长9个地址*4个字节长度的IP) IP首部最长度为60字节
其中code为选项类型,RR选项,code为0x44,len是RR选项的总字节数,此时为36或者40,ptr为指向下一个可用指针的位置,OF为溢出字段,FL为标志字段,0代表只记录时间戳,1代表记录IP地址和时间戳,3代表初始化4个IP地址和对应的值为0的时间戳
对于traceroute程序,使用ICMPping请求报文和IP首部中的TTL字段,traceroute程序就是每次发送一个TTL为1逐步递增端值,就可以逐步记录数据报经过的路由返回来端ICMP超时报文(此时的TTL会变为0),如果在TTL变0前,找到了最终目的主机,又由于端口号过大,又会返回一个ICMP端口不可达的差错报文.这样达到记录路由经过的IP地址端目的
IP源站选路选项:
给定ping报文经过的路由,如果为宽松源站路由,则指定的路由之间可经过别的路由器转发数据报
格式:IP首部前20固定字节+RR选项3字节(code+len+ptr) +IP地址(最长9个地址*4个字节长度的IP) IP首部最长度为60字节
其中code对于宽松端源站选路是0x83,对于严格端源站选路是0x89.
IP选路的原理:
维护一个路由表,指定数据报默认的路由路径
其中Flags标志中U是代表该路由可以使用
G代表间接路由,没有该标志代表直接路由,直接路由中IP首部目的地址为目的端地址,链路层的地址也是该目的端的硬件地址,而间接路由IP首部目的地址为最终的地址,链路层的地址为该路由的硬件地址
H代表是否是主机地址,没有该标志表示是一个网络地址
Refcnt标志代表正在使用路由的活动进程个数
Use标志代表通过该路由发送的分组数
Interface标志代表本地接口的名字
IP分片:
一份IP数据分片后,在下一站路由就会重新组装。其中标识字段代表当前IP的身份标识,只有标识字段统一时候才进行组装。标志字段(3bit)其中一个表示“更多的片”,如果不是最后一片,都是1.还有一个bitDF表示设置是否进行分片,如果设置了1,而路径路由MTU小于IP报文大小,则会返回相对应的ICMP差错报文。还可设置返回ICMP差错报文时,返回下一站路由的MTU值。片偏移字段表示当前分片的报文相对初始报文的偏移量。对于分片的IP数据报,每片都会有相对应的IP首部,除了第一片,其他的都没有UDP首部。
浙公网安备 33010602011771号