1 IP首部报文
IP首部每行起始位为0bit位,末尾位为31bit位,在传输时,首先是 0~7 bit,其次8~15 bit,然后1 6~23 bit,最后是24~31 bit。这种传输次序称作big endian字节序,也称网络字节序。
①4位版本,目前协议版本号为4,所以现在IP协议也称IPV4。
②4位首部长度,指的是首部占32字节的行数(一行32bit),默认为5行,最长为15行,即60字节。
③8位服务类型,前三个bit为优先权字段(现已废弃),最后一个bit无用,固定为0。中间四个bit代表TOS:最小时延、最大吞吐量、最高可靠性和最小费用。在这四个bit中,最多只能有一个bit是1,如果全为0则表示一般服务。
④16位总长度字段,指的是整个IP数据报的长度,根据首部长度以及总长度就可以计算出真实数据的起始位置(最长为65535字节,环回地址的MTU因为不需要拆包,所以就是65535)。
⑤16位标识字段,唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加 1。
⑥3位标志,13位偏移在IP数据分片时使用。
⑦8位TTL生存时间,表示最多经过多少个路由器数(默认32或64),每经过一个就会减一,当值为0时就会被抛弃,并通过ICMP报文通知源主机。
⑧8位协议字段,用来表示时是上层的哪个协议向IP层发送数据。
⑨16位首部校验和字段,是根据I P首部计算的检验和码,它不对首部后面的数据进行计算。为了计算一份数据报的 I P检验和,首先把检验和字段置为 0。然后,对首部中每个 16 bit进行二进制反码求和(整个首部看成是由一串 16 bit的字组成),结果存在检验和字段中。当收到一份I P数据报后,同样对首部中每个 16 bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全 1。如果结果不是全1(即检验和错误),那么I P就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。
⑩32位源IP地址,32位目标IP地址,从哪里来到哪里去。
⑩①选项(可选信息):例如安全处理,时间戳,路径等等,都以32bit位界限,不够则需要填充。
2 IP路由选择
①如果目的主机在直接相连的网络上,那么就把数据报直接传给目的主机,否则传给默认路由器
②在进行路由选择决策时,主机和路由器都使用路由表。在表中有三种类型的路由:特定主机型、特定网络型和默认路由型。路由表中的表目具有一定的优先级。在选择路由时,主机路由优先于网络路由,最后在没有其他可选路由存在时才选择默认路由
③I P路由选择是通过逐跳来实现的。数据报在各站的传输过程中目的 I P地址始终不变,但是封装和目的链路层地址在每一站都可以改变。大多数的主机和许多路由器对于非本地网络的数据报都使用默认的下一站路由器。
④A类和B类地址一般都要进行子网划分。用于子网号的比特数通过子网掩码来指定。
3 子网
子网:AB类IP地址通常最后两个8bit位(不完全是,可以通过子网掩码确认)用来表示网络号与主机名。
这样140.252.*.*只需要维护一个8位子网号的路由,然后每个子网号只需要维护一个子网内部8位的主机路由。
4 子网掩码
子网掩码用来表示当前网段用来表示子网号以及主机号的位数的划分,子网号与主机号位数占用的就是ABC类IP地址中的主机号。其中值为 1的比特留给网络号和子网号,为0的比特留给主机号。
(上图中第二列最后主机号应该是6位)
给定I P地址和子网掩码以后,主机就可以确定 I P数据报的目的是:
①本子网上的主机;
②本网络中其他子网中的主机;
③其他网络上的主机。如果知道本机的 I P地址,那么就知道它是否为A类、B类或C类地址(从I P地址的高位可以得知),也就知道网络号和子网号之间的分界线。而根据子网掩码就可知道子网号与主机号之间的分界线。
5 特殊的IP地址
0表示所有的比特位全为 0;- 1 表示所有的比特位全为 1;netid、subnetid和hostid分别表示不为全 0或全1的对应字段。子网号栏为空表示该地址没有进行子网划分