IP协议(网络层)

    IP协议(Internet Protocol,互联网协议),是TCP/IP协议栈中最核心的协议之一,通过IP地址,保证了联网设备的唯一性,实现了网络通信的面向无连接和不可靠的传输功能。

1. 报文格式

5.网络之IP-LMLPHP

  • 版本号:代表的是当前的IP协议的版本信息。IPv4版本的值为4(二进制0100),根据版本号决定对IP数据报的处理方法

  • 首部长度: 代表的是整个IP报头的长度,这个报头长度是可变长的,可变长的原因在于报头中的选项,这个属性是一个可有可无的属性,会改变报头长度,它的单位是32bit,比如里面存放的是1,那么整个IP报头的长度就是4个字节(32bit).

  • 服务类型 共占8位,但是实际上只有4位是有效的,其中这4位表示当前IP协议的4种工作模式:最小延时、最大吞吐量、最高可靠性、最小成本.实际开发中可能会根据需要来选择当前的IP工作模式.

  • 总长度 代表的是整个IP数据报的总长度(报头+载荷)

    • 同时也说明IP数据报最多只能携载64KB的数据,但是IP协议支持拆包和组包
  • 标识:用于为数据分片的数据单元提供唯一标识。

  • 标志:标志在该分片是否为数据分片的最后一片,也就是分片的结束标志.

  • 片偏移:标识了拆分后每个包的顺序

  • 生存时间 表示一个数据报在网络上传输的最大时间,这里的时间并不是以"秒"、"毫秒"这样的单位来计量的,而是以"次数"来计量.

    • 比如有一个TTL初始值为32,此时这个数据报每经过一个路由器转发,TTL的值就会-1,当TTL的值减到0时,就会认为这份数据传输不到了,可以丢弃了.
  • 协议 代表的是当前数据报中传输层的协议(UDP/TCP…)

  • 首部检验和 和UDP、TCP的相同,但是此处只检验报头,因为载荷部分传输层会进行检验.

2. IP地址

5.网络之IP-LMLPHP

    IP数据报中这两个部分分别表示发送方的IP地址和接收方的IP地址。

    在报文中是以32位的整数方式存在的,表示一般使用点分十进制的方式进行标识,如:127.0.0.1。

    IP地址4个字节32位一共有42亿个,但是在今天这个数据爆炸式增长的时代,已经捉襟见肘了,即IP地址耗尽。

    解决这个问题,有以下两种方法:

    1. 进行动态分配IP地址,此时虽然可以省下也配IP地址,但是总数没有增加.
    NAT网络地址转换.本质上是将一个地址同时给多台设备使用.可以大大提高了IP地址的利用率,在区分时也可以用端口号来区分.
NAT将IP地址分为内网IP和外网IP,内网IP不能直接上网,需要由外网IP进行换发,当然外网想要访问到内网也需要有内网所在的公网进行转发。

  • 内网IP(私有IP):以10.开头的、以172.16.~172.31.开头的、以192.168.开头的.

  • 外网IP(共有IP):除了内网IP之外的IP地址.

  • 内网IP是可以重复出现的,外网IP是不可以重复出现的.

    2. 使用IPv6,IPv6由16位二进制表示,是一个非常大的天文数字,想要将其耗尽基本不可能。但是由于IPv6和IPv4不兼容,需要更换硬件设备,所以IPv6并没有大规模的普及。

2. 地址管理

    这里讨论的是IP协议在NAT下针对IP地址的管理。一个IP地址,可以分成两个部分,网络号和主机号。

  • 网络号:标识网段,保证连接的两个网段具有不同的标识.
  • 主机号:标识主机,同一网段内,主机之间的网络号是相同的,但是主机号必须是不同的.

    子网掩码,使用子网掩码来区分那部分是网络号,哪部分是主机号。

3. 特殊IP地址

    如果IP地址中,主机号全0,代表当前这个局域网,这个IP地址是不能被分配给具体的主机的。
    如果IP地址中,主机号全1,这个地址是一个广播地址(UDP支持广播就是因为这个地址),只有向这个地址发一个UDP包,局域网中的所有设备都能收到。
    127.0.0.1这个地址表示当前主机,叫做环回IP,是操作系统抽象出的特殊的虚拟网卡,发出的数据最终会回到本机。通常用于测试和一些分布式系统。

    如果本篇文章对你有帮助,请点赞、评论、转发,你的支持是我创作的动力。

11-05 07:43