IP协议
IP协议是一个不可靠、无连接的服务,负责在源地址和目的地址之间传送数据报,为了适应不同网络对分组大小的要求,需要对上层传来的报文进行分割,最后调用本地网络协议将数据报传送给下一个网关或目的计算机,所有的TCP、UDP、ICMP数据都是以IP数据报格式传输的
不可靠是指不能保证IP数据报能成功地到达目的地
无连接是指IP并不维护任何关于后续数据报的状态信息,每个数据报的处理是相互独立的
主要功能
- IP寻址
- 路由
- 分包和组包
IP协议的作用是把各种数据包传送给对方,传送过去最重要的两个条件是IP地址和MAC地址,IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址,IP地址可以和MAC地址进行配对,IP地址可以变,但是MAC地址基本上是不会更改的
IP寻址
IP地址
IPv4地址以每8位一组,分成4组,再将每组数转换为十进制,范围从0到255,各组用点分隔,如192.168.0.4
IPv6地址通常写为冒号分隔的8个区块,每个区块是4个十六进制数字
子网掩码
我们在配置IP地址时,通常还会配置子网掩码,那么什么是子网掩码呢?由于IP地址中包含了网络ID和主机ID两部分,以便于IPv4地址的寻址操作。
以IPv4为例
网络ID在数据链路的每个段配置不同的值,要保证相互连接的每个段的地址不重复,相同段内相连的主机必须有相同的网络地址;主机ID则不允许在同一网段内重复出现。
但是在寻址时并不知道哪些位代表网络ID,哪些位代表主机ID,子网掩码就是为了区分IP地址中的网络ID和主机ID的,子网掩码也同样分为网络ID和主机ID,但子网掩码中的网络ID部分全是1,用来掩盖网络ID,1的数目等于网络ID的长度,主机ID部分全是0,0的数目等于主机ID的长度,这样在寻址过程中使子网掩码与对应的IPv4地址做逻辑与运算时用0部分遮住IPv4中的主机ID部分,就可以确定对应的IPv4所在的网络了
IP首部
最高位在左边,使用版本来区分ipv4还是ipv6,ipv4是32位的
路由
路由是指将分组数据发送到最终目标地址的功能。跳是网络中的一个区间,一跳是指利用数据链路层以下分层的功能传输数据帧的一个区间,IP包是在网络中一个跳间被转发,因此IP路由也被称为多跳路由,在每一个区间内决定着包在下一跳被转发的路径
IP路由是按照走一步看一步的流程来的,当IP包到达路由器时,路由器会查找其目标地址,然后决定下一步应该将这个包发往哪个路由器,反复多次,直到找到最终的目标地址将数据包发送给这个节点
路由控制表
为了将数据包发给目标主机,所有的主机都维护着一张路由控制表,该表记录IP数据在下一步应该发给哪个路由器,会根据这个路由表在各个数据链路上传输
分包和组包
对于不同的数据链路,其允许的最大传输单位MTU是不同的,为了解决这个问题,IP进行分片处理,将较大的IP包分为多个小的IP包,分片的包到了对端目标地址后会被组合起来传给上一层,这样就可以忽略掉数据包在途中的各个数据链路上的MTU,只需要按照发送的长度接收数据包就可以了