自学内容网 自学内容网

JavaEE: 探索网络世界的核心-IP协议


IP 协议

协议头格式

在这里插入图片描述

  • 4位版本号: 只有两个取值,4(IPv4)和6(IPv6).

    IPv2,IPv5这些在实际中是没有的,可能是理论上/实验室中存在~

  • 4位首部长度: IP头部的长度是多少个32bit,也就是length*4的字节数.4bit表示最大的数字是15,因此IP头部最大长度是60字节.

  • 8位服务类型: IP协议以哪种模式进行工作.

  • 16位总长度: IP数据报整体占多少个字节.

  • 16位标识: 一个大的数据,拆成多个IP数据报传输,此时这多个IP的数据报的16位标识,就是相同的值.

  • 3位位标志字段: 一位保留(现在不用,但是说不定以后要用到).1位表示当前是否是拆包/组包.1位表示当前包是否是组包中的最后一个.

  • 13位分片偏移: 是分片相对于原始IP报文开始处的偏移.其实就是在表示当前分片在原报文中处在哪个位置.实际偏移的字节数是这个值 * 8 得到的.因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了).

  • 8位生存时间(TTL): 描述了一个数据报在网络中最多存活多长时间.TTL的单位不是 s 或者 min ,而是 “次数”(经过路由器转发的次数,一般是64).这个字段主要是用来防止出现路由循环.

    发送一个IP数据报的时候,会有一个初识的TTL的值(32,64,128…)
    数据报每次经过一个路由器转发,TTL就会 -1 (经过交换机,不减).
    一旦TTL减到0了,此时这个数据包就会被当前的路由器直接丢弃掉.

  • 8位协议: 描述了IP数据报中,携带的载荷,是哪种传输层协议的数据报.

    通过这里不同的数值,来表示接下来要把数据交给TCP解析,还是UDP解析,还是其他协议解析.
    有点类似于TCP/UDP报头中的"端口号".

  • 16位首部校验和: 验证数据在传输中是否出错(只是针对首部,IP报头).

    载荷部分TCP/UDP都有自己的校验和~

  • 32位源地址和31位目标地址: IP数据报中的最关键的信息,描述了数据报从哪里来,要到哪里去~

  • 选项字段: 略.

IP 地址

IP地址,用来标识网络上的一个设备.

IP地址的数量限制

我们知道,IP地址(IPv4)是一个4字节32位的正整数,那么一共只有2的32次方个IP地址,大概是42亿九千万左右.而TCP/IP协议规定,每一个主机都需要有一个IP地址.

这意味着,一共只有42亿九千万主机能接入网络吗?

实际上,由于一些特殊IP地址的存在,IP地址的数量远不足42亿九千万.另外IP地址并非是按照主机台数来配置的,而是每一个网卡都需要配置一个或多个IP地址.

解决IP不够用的问题

方案一: 动态分配IP地址.一个设备上网就分配IP,不上网就先不分配IP.(只是一个权宜之计)

方案二: NAT网络地址转换.以一当千,使用一个IP代表一大波设备.

  • NAT把IP地址分成两大类:
    1. 内网IP / 私网IP
    2. 外网IP / 公网IP

    要求公网IP必须是唯一的.但是私网IP是允许重复的(在不同的局域网中是允许重复的)

NAT 网络地址转换:

  • 一个设备在进行上网的时候,IP数据报中的IP地址,就会被NAT设备(通常是路由器)自动修改.
    1. 同一个局域网内,主机 A 访问主机 B ,不会涉及到 NAT 机制.
    2. 公网上的设备 A ,访问公网上的设备 B ,不会涉及到 NAT .
    3. 一个局域网中的主机 A 访问另一个局域网的主机 B ,这在 NAT 机制中,是不允许的.
    4. 局域网内部的设备 A ,访问公网上的设备 B ,NAT机制生效.

在这里插入图片描述

但凡是搭建一个服务器给别人使用,都是需要公网IP的.

NAT 机制的缺点:

  • 在这个机制之下,网络环境太复杂了.
  • 替换过程中,每一层路由器都需要维护映射关系,每次转发数据,都要查询映射关系…(都是开销).

方案二是一个办法,但是不太优雅.别急,还有一个办法.

方案三: IPv6 .

IPv6可以从根本上解决 IP 地址不够用的问题~

  • IPv4 使用 32 位 4 个字节表示 IP 地址.
  • IPv6 使用 128 位 16个 字节来表示 IP 地址.

IPv6 的地址空间非常巨大,大到可以给地球上的每一粒沙子都分配一个唯一的 IPv6 地址.

关于 IPv6 可以看看这个视频 电子监听、全国断网,棱镜门背后,中国如何从末路狂奔到世界之巅

IP 地址的网段划分

IP 地址分为两个部分,网络号和主机号.

网络中规定:

  • 同一个局域网中的设备,网络号必须相同,主机号必须不同.
  • 两个相邻的局域网,网络号必须不同.

子网掩码

网络号和主机号如何区分呢?
答: 通过子网掩码来区分.

子网掩码:

  • 子网掩码是一个 32 位的正整数,通常用一串 “0” 来结尾.
  • 子网掩码中的连续的 1 表示网络号的部分,连续的 0 表示主机号的部分。
  • 将 IP 地址和子网掩码进行 “按位与” 操作,得到的结果就是网络号.
    举个例子:
    在这里插入图片描述

ABCDE五类网络

除了子网掩码的方案,还有一种方案,ABCDE五类网络.
在这里插入图片描述

这是上古时期的网络划分方式,现在已经看不到了.但是仍然存在于教科书上,期末网络考试一般会有一道题靠这个.

特殊的 IP 地址

  1. 将 IP 地址中的主机地址全部设为 0 (二进制),就成为了网络号,代表这个局域网.

    因此,给局域网中的某个设备,分配 IP 地址的时候,不能把主机号设为全 0.

  2. 将 IP 地址中的主机地址全部设为 1 (二进制),就成了广播地址,用于给同一个链路中相互连接的所有主机发送数据包.
  3. 127.* 的 IP 地址用于本机环回测试,通常是 127.0.0.1

    自发自收,给这个 IP 发一个数据,设备就会从这个 IP 上再收到同一个数据,自己发给自己~


本文到这里就结束啦~

在这里插入图片描述


原文地址:https://blog.csdn.net/qrwitu142857/article/details/142602507

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!