0%

IP协议

IP协议

IP协议是一个不可靠、无连接的服务,负责在源地址和目的地址之间传送数据报,为了适应不同网络对分组大小的要求,需要对上层传来的报文进行分割,最后调用本地网络协议将数据报传送给下一个网关或目的计算机,所有的TCP、UDP、ICMP数据都是以IP数据报格式传输的

不可靠是指不能保证IP数据报能成功地到达目的地

无连接是指IP并不维护任何关于后续数据报的状态信息,每个数据报的处理是相互独立的

主要功能

  • IP寻址
  • 路由
  • 分包和组包

IP寻址

IP地址

IPv4地址以每8位一组,分成4组,再将每组数转换为十进制,范围从0到255,各组用点分隔,如192.168.0.4

IPv6地址通常写为冒号分隔的8个区块,每个区块是4个十六进制数字

子网掩码

我们在配置IP地址时,通常还会配置子网掩码,那么什么是子网掩码呢?由于IP地址中包含了网络ID主机ID两部分,以便于IPv4地址的寻址操作。

网络ID在数据链路的每个段配置不同的值,要保证相互连接的每个段的地址不重复,相同段内相连的主机必须有相同的网络地址;主机ID则不允许在同一网段内重复出现。

但是在寻址时并不知道哪些位代表网络ID,哪些位代表主机ID,子网掩码就是为了区分IP地址中的网络ID和主机ID的,子网掩码也同样分为网络ID和主机ID,但子网掩码中的网络ID部分全是1,1的数目等于网络ID的长度,主机ID部分全是0,0的数目等于主机ID的长度,这样在寻址过程中使子网掩码与对应的IPv4地址做逻辑与运算时用0部分遮住IPv4中的主机ID部分,就可以确定对应的IPv4所在的网络了

IP首部

最高位在左边,使用版本来区分ipv4还是ipv6,ipv4是32位的

IP首部

路由

路由是指将分组数据发送到最终目标地址的功能。跳是网络中的一个区间,一跳是指利用数据链路层以下分层的功能传输数据帧的一个区间,IP包是在网络中一个跳间被转发,因此IP路由也被称为多跳路由,在每一个区间内决定着包在下一跳被转发的路径

IP路由是按照走一步看一步的流程来的,当IP包到达路由器时,路由器会查找其目标地址,然后决定下一步应该将这个包发往哪个路由器,反复多次,直到找到最终的目标地址将数据包发送给这个节点

路由控制表

为了将数据包发给目标主机,所有的主机都维护着一张路由控制表,该表记录IP数据在下一步应该发给哪个路由器,会根据这个路由表在各个数据链路上传输

分包和组包

对于不同的数据链路,其允许的最大传输单位MTU是不同的,为了解决这个问题,IP进行分片处理,将较大的IP包分为多个小的IP包,分片的包到了对端目标地址后会被组合起来传给上一层,这样就可以忽略掉数据包在途中的各个数据链路上的MTU,只需要按照发送的长度接收数据包就可以了