Java EE——网络层IP协议的格式与内容解析

网络层

网络层需要定义发送方和接收方的位置,并且在发送方和接收方中众多的交换机,路由器之中找到一个合理的路径进行传输数据

IP协议报文格式

  1. 4位版本 (只有IPv4和IPv6两个版本)
  2. 4位首部长度 (和TCP一样,首部可以变长)
  3. 8位服务类型 (实际只有4位有效,并且4位中只有一个可以取1,代表IP协议的工作模式)
  4. 16位总长度 (代表IP数据报的长度)
  5. 16位标识 (同组的包有相同的标识,便于包的组装)
  6. 3位标志 (主要有两位起作用,一位代表当前是否分包,一位代表这个包是不是最后一个)
  7. 13位片偏移 (区分分包后的前后顺序)
  8. 8位生存时间 (单位是次数,一般是32/64/128,每经过一个路由器转发,次数就会减一,如果这个包的生存时间到了0还没有到达接受方,就销毁这个包,防止这个包陷入传输的循环,空空浪费传输的资源)
  9. 8位协议 (IP载荷中的数据报使用的传输层的协议,便于接受方在拆包时区分用哪个传输层协议解析数据)
  10. 32位源IP地址 (发送方IP地址)
  11. 32位目的IP地址 (接收方IP地址)
  12. 数据 (载荷)

可以看到我们的IP地址只有32位,也就是说我们最多有42亿9000万个不同的主机,但是由于我们有各种服务器,物联网装备等等,所以这个数量对于我们来说是不够用的,我们通过以下
方式解决这个问题

动态分配IP地址

并不是一个设备出厂时就绑定好一个IP地址,而是只有当其上网时才给分配一个IP地址,不上网时就把IP地址回收。这样的话当美国人那边到了深夜,就很多人不上网了,就可以给我们这分配很多的IP地址

NAT机制

并不是每个主机都有独立的IP地址

将IP地址分成两类

  1. 外网/公网IP
  2. 内网/私网/局域网IP(例如10.xxx ,172.16xxx,172.31.xxx,192.168.xxx 这些都是内网IP)

我们约定在同一个局域网内部,IP地址不可以重复,而在不同的局域网下,IP地址可以重复。在局域网内部如果访问外网的服务器,就用一个外网的IP来代替局域网中的所有设备

例如我的路由器的IP地址是1.2.3.4,我有三个设备,手机IP是192.168.1.1,平板IP是192.168.1.2,电脑IP是192.168.1.3。这些设备在我的局域网中的IP地址是不能相同的。当我想拿我的手机访问CSDN的服务器(IP是5.6.7.8)时,会构造这样的一份数据报

源IP地址:192.168.1.1
目的IP地址:5.6.7.8

而当这个数据报传输到路由器上时,会将192.168.1.1替换成1。2.3.4,并且记录这个映射关系,然后把数据发送给CSDN的服务器,服务器会收到这样的数据报

源IP地址:1.2.3.4
目的IP地址:5.6.7.8

然后CSDN会根据请求生成响应,构造下面这样的数据报

源IP地址:5.6.7.8
目的IP地址:1.2.3.4

而当这个数据发送到路由器上,路由器会根据之前的映射关系,把1.2.3.4替换成192.168.1.1,再发送回我的手机上

这样的话,我们就可以用一个外网IP地址代替很多的设备的IP地址,也就可以解决IP地址数量不够用的问题了

使用IPv6

上述两个方法只是把不够用的资源通过不同的分配方式分给了主机,使得IP地址够用。然而想要根本上解决这个问题,我们可以使用IPv6这个协议。

IPv4使用4个字节表示IP地址,因此只有42亿个
而IPv6使用14个字节表示IP地址,这个数量就算给地球上每个沙子分配一个IP地址,也是够用的。

而IPv6之所以没有大量普及,就是因为其和IPv4不兼容,因此需要花钱换路由器。然而在国家的强制要求下,许多企业都升级成了IPv6,这也是防止美国对我们的限制

IP地址

主要分为以下两个部分

  1. 网络号,用来标识网段,相互连接的两个网段有不同的标识
  2. 主机号,用来标识主机,同一网段下的主机有相同的网络号,但是有不同的主机号

也就是说,同一个局域网下的设备的网络号是相同的,不同的主机有不同的主机号,两个相邻的局域网的网络号是不同的

而子网掩码(32位)可以划分出来从哪一位到哪一位是网络号
例如这32位中前面是23个一,就代表前23位是网络号,后9位是主机号,而所有连接在同一个局域网中的设备的网络号相同,因此前23位都是相同的
而如果我的路由器连接了两个局域网,那么这两个局域网的网络号是不同的,也即是前23位是不同的

特殊的IP地址

  1. 主机号为0,代表这个IP是网络号
  2. 主机号为1,代表这个IP是这个局域网的网关(一般就是路由器)
  3. 主机号为全1,代表这个IP是广播IP
  4. 127.XXX,代表这个IP是换回IP(例如我们的127.0.0.1)

路由选择

之所以我们的数据能够从发送者精确的规划出路径传送到接受者,就是因为路由选择的概念

当我们的数据到达路由器时,会把我们的数据报中的IP地址提供给路由器,路由器中有一个叫“路由表”的数据结构,也就是这个路由器认识的通往各个IP地址的路,如果认识,就直接告诉数据报应该怎么走,如果不认识,路由器就会把这个数据报转发给别的有可能认识的路由器

因此这个概念就相当于我们出去找地一样,问一个大爷路,这个大爷也许不知道应该怎么走,但是会告诉你一个大致的方向,你按照这个方向再去问问别人怎么走

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值