【JavaEE】IP协议详细讲解

详细讲解IP协议 O > O

JavaEE & IP协议

1. 地址管理

我们希望,每个网络上的设备,要能分配到一个地址(唯一)

1.1 IP协议报文格式

在这里插入图片描述

本质上,IP地址就是一个32为的整数

  • 点分十进制的形式~
  • 三个点分成四个部分,每个部分0-255

而如果单看int的取值范围

  • 它可以表示42亿9千万的数据
  • 2147483648 * 2
    • 字节换算牢记(常见)
    • 0 - 255 ==> -128 - 127
    • 0 - 65535 ==> -32768 - 32767
    • 0 - 42亿9千万 ==> -21亿 - 21亿

显然,这是不够用的

  • 全世界有很多的电脑,服务器路由器,还有很多很多很多的手机~

1.2 动态分配IP地址

设备上网才分配,不上网就不分配

  • 可以省下一大批ip地址,但是并没有增加ip地址的数量
  • 治标不治本,只能缓解~

路由器的一个功能,DHCP

  • 如果开启了DHCP,此时路由器就自动给你的设备分配一个局域网内唯一的ip
    • 默认是开启自动分配的
    • 不开启也可以,但是需要人工来保证你的ip是唯一的
    • 如果与别人重了,两个人都得寄

昨天的IP和今天的很可能不一样~

1.3 NAT机制

它把所有的IP地址分为两大类:

  1. 内网IP: 【10.* 】或者【172.16.* ~ 172.31.* 】或者 【192.168.* 】
    • 只要是这三种开头的,都被称为内网ip
  2. 外网IP:剩下的ip
  • 多个设备一个外网IP,一个设备一个内网IP
  • 不同外网IP的设备,可以有同一个内网IP

例子:

我们在现实中其实也不少见这种情况

  • 例如在学校网购,如果只有一个快递驿站,那么所有学生老师的快递的地址都填的是学校的地址
  • 学校的地址是唯一的,但是这个包裹的主人不一定唯一

即,内网设备如果要访问外网,会给它分配一个外网IP

  • 这个外网IP并非某设备的专属,
  • 而是这个内网中的所有设备都共用这一个外网IP~

在这样的放宽之下,IP就够用了~

什么是内网和外网:

  • 局域网可以称之为内网
    • 一个设备的局域网的内网IP
  • 对于内网和外网的规模规范,没有明确,类似局域网和广域网的界限
  • 在广域网内的外网ip(局域网在广域网中的位置),内网设备要向与外界交流,必然有一个外网IP,即所属局域网共用IP

在这里插入图片描述
控制台ipconfig:

在这里插入图片描述

  • 这就是一个外网IP
  • 共用IP

1.4 IP协议

1.4 IP协议工作过程

  • 设备1要发消息给设备2:

在这里插入图片描述

  1. 构造IP数据报

在这里插入图片描述

  1. 经过路由器:

    • 内网设备必须有外网IP才能发送给外网设备

    • 源IP替换为路由器(NAT设备)的IP

在这里插入图片描述

  1. 设备2收到通过网络传输来的IP数据报:

在这里插入图片描述

  • 也就是说,设备1所在局域网,也有其他设备用的是同一个外网IP
    • 设备2无法分辨这两个数据报属于不同的设备的请求

在这里插入图片描述

  1. 设备2返回响应:

    • 让路由器去处理,设备2按照数据报发送就好了~
    • 路由器是知道替换关系的

    端口号用来区分一个主机的不同程序,

    配合内网IP去区分不同主机的不同程序,也完全可以

在这里插入图片描述

在NAT背景下如何通信:

  1. 外网设备 => 其他外网设备,不需要任何NAT,直接就能通信
  2. 内网设备 => 其他内网设备,不允许!
    • 你的内网IP,不同局域网也可以有
  3. 外网设备 => 内网设备,不允许!
    • 只能交给那个路由器,他秘密地交给对应的设备
    • 好比说,你知道了内网设备的内网IP,那么这个IP不同局域网也能用(有很多),那么你怎么发送呢?
      • 并且,你也不能通过这个内网IP获取这个内网设备的外网IP~
  4. 内网设备 => 外网设备,对应的内网设备的路由器
    • 触发NAT机制进行ip替换,此时就会给这个网络数据报的源ip替换成路由器自己的ip
    • 即,内网设备的数据报获取一个共用的外网ip

1.5 IPV6协议

在这里插入图片描述

从根本上解决IP不够用问题

  • 前面的IP协议,其实是IPv4
    • IPv4是传统的IP协议,使用4个字节,32位表示ip地址
  • IPv6是更新了一些的IP协议,使用16个字节,128位来表示ip地址~
    • 大了可不止4倍,而是296次方倍!!!
    • 这个数字,给地球的每一粒砂子分配ip都是够用的~
    • 电子产品 本质上是 Si,Si的来源就是砂子(SiO2

IPv6早在2000时期提出,但是现在上网还是以IPv4为主

  • IPv6,真正被用到的情况很少~

IPv6月IPv4并不兼容

  • 一个IPv4路由器,要想支持动态分配和NAT软件上升级下系统就行了(成本低)
  • 一个IPv4路由器,要想支持IPv6,光升级软件没有用,还得升级硬件(成本很高)
    • 旧的路由器得丢了换新的IPv6路由器

在我国,IPv6的普及率很高了(世界一流) => 70% +

  • 已经准备就绪了,但是还没开启使用,就是我们一般的路由器支持IPv4和IPv6,但是IPv6默认是关闭的~

1.6 IP地址的组成

  1. 网络号
    • 标识一个局域网
  2. 主机号
    • 标识了一个局域网内部的主机
    • 同一网段网络号一样,不同主机的主机号一定不一样

一个路由器有两个IP:

  1. WAN口IP
  2. LAN口IP

在这里插入图片描述

例子:

  • 上面的局域网,192.168.1就是网络号,最后一个点后面就是主机号
  • 下面的局域网,192.168.0就是网络号,最后一个点后面就是主机号
    • 路由器1,连接两个局域网,这两个局域网就是“相邻”的局域网
    • 这两个局域网的网络号不能重复!

在这里插入图片描述

网路号与主机号的划分:

  1. IP地址分类(ABCDE)(淘汰了)

    • 前缀:用来区分类别(A类B类…)

    • 每个类别的网络号和主机号是固定的

      1. 本来就不富裕的IP地址,我还要浪费比特位去区分类别

      2. 主机号的位数太多没必要(一般不会有那么大的局域网去连接那么多台主机)

在这里插入图片描述

  1. 子网掩码(真实的划分方式)

命令行+ ipconfig /all:

子网掩码,也是一个32位整数

  • 但是它的特点就是,左侧是1右侧是0,1和0的个数和为32!
  • 255.255.255.0 => 11111111111111111111111100000000
  • 255.252.0.0 => 11111111111111000000000000000000

子网掩码的

  • 1的那段】代表IP地址的网络号
  • 0的那段】代表IP地址的主机号
  • 这样其实就可以据局域网实际情况调整主机号的“上限”
    在这里插入图片描述

家用网络,子网掩码一般是255.255.255.0但是对于一些大型网络,就可能会更复杂~

  • 网络管理员负责

1.7 特殊的IP地址

假定子网掩码为 255.255.255.0

  1. 主机号比特位为0的IP

192.168.0.0 => 这个称为网络号

  • 局域网里不应该存在某个主机的主机号为0
  1. 主机号比特位全为1的IP

192.168.0.255 => 这个称为广播地址

  • 往这个地址发送UDP数据报,此时这个数据报会被转发给这个局域网里的所有主机!
  • TCP不支持广播,TCP要建立连接嘛~

例子(投屏):

  1. 手机投屏到电视机上
  2. 手机和电视机都下载了投屏软件
  3. 手机和电视机在同一个局域网内
  4. 手机发起投屏,有一个自动查找电视机的过程,而这个过程就是,将广播地址发送了数据报,哪个设备有回应,就可能是你的电视机
  5. 因此手机能获取电视机的IP地址

发送数据报给广播地址,是在我不能预先知道对方的地址的情况下,所需要采取的探测操作

  1. 127开头的IP

127.0.0.1(最常用) => 称之为 “环回IP”

  • 127.1.1.1
  • 127.1.1.10

环回ip对应特殊的虚拟网卡io

  • 传入或者传出环回ip的数据,走的就是这个虚拟网卡(这个过程没有io操作,是纯内存操作)

所以,这个ip的数据传输要比普通ip快~

  1. 主机号为1的IP

192.168.0.1 => 一般称之为 “网关IP”

区别于刚才三种,这一种是习惯约定,不是强制约定

  • 可以手动改的,但是正常没人会去改~

网关 — 局域网的出入口~
在这里插入图片描述

2. 路由选择

机器之间的信息交流,具体要走哪条路?

  • 这就是“网络层”对传输路径规划

互联网,存在大量的冗余

  • 之前核战争的时候,为了防止爆炸导致传播中断,所以是有多条线传输数据的!

那么在这几条路径里,应该要走哪条呢?

  • 地图软件是站在上帝视角,他知道整块地区的模样,只需要解决“带权图的最短路径”问题就行了
    在这里插入图片描述

在网络上,网络环境更复杂,没这么容易

  • 某个路由器,是无法把整个网络环境的模样记录下来的
    • 路由器只能记录周围的情况(较小范围,认识邻居或者邻居的邻居)
  • 路由器内部使用,路由表这种数据结构来记录邻居的信息~

实际的转发过程,是渐进式的,类似于 “问路 一样”逐渐接近最终目标的~

  • 每到一个路由器,就规划一下接下来的路径

图示:

在这里插入图片描述

  1. 如果的“目的IP”在路由表里有,直接指明道路
  2. 如果没有,它会根据路由表给你规划一条合理的走向目的IP的路
    • 路由表中的“下一跳表项”
    • 指向更上一级的路由器
      • 越上级的路由器,它的路由表就越大,记忆的就越多,功能也会越多(见多识广的路由器)
    • 这个指向,就是到达终点的大致方向

对于路由表这种数据结构,如果不是路由器开发工程师,大概率涉及不到的。在这里不做研究~


文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆

网络层告一段落,接下来是数据链路层,这也距离程序员更远

敬请期待~


  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

s:103

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值