【JavaEE】计网之IP协议+以太网+DNS

  • 博主简介:想进大厂的打工人
  • 博主主页:@xyk:
  • 所属专栏: JavaEE初阶

网络层重点协议——IP协议,在复杂的网络环境中确定一个合适的路径~

本篇文章我们来讲解什么是 IP协议及以太网,在IP协议中,有 地址管理 和 路由选择 两个方式,IP协议是位于 OSI模型 中第三层(网络层)的协议, 在这层上工作的不止这一个协议, 但 IP协议 是网络层传输所使用的最主流的一种协议。


一、IP协议-地址管理

在IP地址中,地址管理分配的每一个设备的 IP地址 是唯一的~~~

IP协议是位于OSI模型中第三层(网络层)的协议, 在这层上工作的不止这一个协议, 但IP协议是网络层传输所使用的最主流的一种协议。

有IPv4和IPv6两个版本, 目前IPv4在全球仍然是主流使用的协议, 但IPv6在中国已经基本普及了, 而且中国也是全球IPv6覆盖率最高的国家, 下面内容的介绍以IPv4为主。

1.1 IPv4报头介绍

IPv4协议格式如下:

本质上:IP地址,本质上是一个 32 位的整数,通常会把32位的整数,转换成点分十进制的表示方式~~

三个点,把这个整数分成 4 个部分,每个部分,一个字节,每个部分的取值范围 0 - 255

那么 32位 的整数,最多能表示:

  • 它可以表示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 机制

在 NAT 背景下如何通信?

外网设备 -> 外网设备,不需要任何 NAT,直接就能通信

内网设备 -> 其他内网设备,不允许!!

外网设备 -> 内网设备,不允许!!

内网设备 -> 外网设备,对于的内网设备的路由器,触发 NAT 机制进行ip 替换~~

NAT机制下,把所有的IP地址分为两大类:

1.内网IP(私有IP):【10.* 】或者【172.16.* ~ 172.31.* 】或者 【192.168.* 】

  • 只要是这三种开头的,都被称为内网ip

2.外网IP:剩下的IP地址(唯一)

外网IP是互联网中唯一的地址, 不会出现重复的情况, 分配外网IP的设备可以被互联网中其他的电脑直接访问到.

  • 多个设备一个外网IP,一个设备一个内网IP
  • 不同外网IP的设备,可以有同一个内网IP

例子:在网上购物,收货地址填写的是小区的地址,而小区里面有很多人,每个人用姓名和手机号区分,而进入内网IP 后 则是用端口号区分

如果某个内网里的设备想访问公网的设备, 就需要对应的NAT设备(路由器)把内网IP映射成公网IP, 从而完成网络访问;但是这个外网 IP 不是这个设备独占的,而是这个内网中所以的设备都共用这一个外网 IP 了~~一个外网 IP 代表一系列的设备了~~

反之, 公网的设备也是无法直接访问私网的设备的, 不同局域网的私网的设备没法直接相互访问.

两台主机在发送给路由器之前,主机的 源ip 是路由器的 内网ip,当主机去访问外网服务器时 IP地址会被路由器替换成 路由器自己的外网IP,站在服务器的角度看,主机的IP地址就是路由器的源IP,服务器返回的响应先发给路由器,路由器随后根据设备的端口号来区分响应发给哪个设备.

内网ip: 

 

 NAT机制能够有效解决IP地址不够用的问题, 但带来的副作用就是让网络环境更加复杂了…

1.4 使用 IPv6

IPv6 使用16字节表示IP地址,这可表示的IP地址个数就是一个天文数字了,可以把地球上的每一粒沙子都分配一个地址.

IPv6虽然看起来可以完美的解决问题, 但当今世界上仍然是以NAT+ IPV4+动态分配来进行网络组建的,除了国内, 世界上其他地方IPv6的覆盖率还是比较低的, 这是因为, lPv6和IPv4是不兼容的, 要想支持IPv6就需要大范围更换路由器等网络设备, 这个成本是极大的, 而国内环境主要是工信部给力啊.

二、IP地址组成

在IPv4中, IP地址分为两个部分, 即网络号和主机号~

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

网络号能够描述当前的网段信息(标识一个局域网), 主机号区分了一个局域网中的主机;

要求在同一个局域网内, 网络号必须相同, 主机号不能相同, 两个相邻的局域网(同一台路由器连接), 网络号不能是相同的.

那么如何划分网络号和主机号呢?

2.1 分类


过去曾经提出一种划分网络号和主机号的方案,把所有IP 地址分为五类,如下图所示(该图出 自
[TCPIP])

分 类范围适用网络网络数量主机最大连接数
A 类0.0.0.0 ~
127.255.255.255
大型网络12616777214
($2^{24}$-2)
B 类128.0.0.0 ~
191.255.255.255
中等规模网
约16000
65534($2^{16}$-2)
C 类192.0.0.0 ~
223.255.255.255
小型网络-254($2^8$-2)
D 类224.0.0.0 ~
239.255.255.255
E 类240.0.0.0 ~
247.255.255.255

这种分配了解就好,已经不常用了!!!

2.2 子网掩码

格式
(1)子网掩码格式和IP地址一样,也是一个32位的二进制数。其中左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度.

  • 255.255.255.0 => 11111111111111111111111100000000
  • 255.252.0.0 => 11111111111111000000000000000000

下图是一个经典的局域网环境:

图中两个相邻的局域网的网络号是不能相同的, 属于一个局域网中的设备网络号都是相同的但主机号是不同的, 通过这样网络号和主机号这样的划分就可以进行组网了

 

一个路由器,有两个 ip 地址,分别是在不同的局域网中,一个路由器的作用就是把两个局域网连接起来~~

  1. WAN 口 ip
  2. LAN 口 ip

在上图中,此时这个路由器就把两个局域网连接到一起了,此时这两个局域网就称为“相邻"的局域网,这俩个局域网的网络号,是不能重复的!!!

但网络号的位数与主机号的位数并不是固定的, 在计算机网络, 有一个单独的概念叫做子网掩码, 它也是使用32比特位对应IP地址的每一位, 如果为1就表示这一位是网络号, 为0就表示主机号, 它是独立于IP地址的另一串数字来辅组记录的, 子网掩码不会混着排列, 左边为1表示网络号, 右边为0表示主机号.

对于家用设备来说, 子网掩码最常见的就是255.255.255.0了, 即11111111111111111111111100000000, 表示IP地址中左边24位构成网络号, 右边8位构成主机号.

 还有一些特殊的IP地址有着特殊的作用:

  • 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网.
  • 将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包.
  • 127.*的IP地址用于本机环回(loop back), 通常是127.0.0.1, 本机环回主要用于测试程序是否能正常工作, 是本机到本机的网络通信(系统内部为了性能, 不会走网络的方式传输), 对于开发网络通信的程序(即网络编程)而言, 常见的开发方式都是本机到本机的网络通信.
  • 主机号为1, 即IP地址段的第一个, 比如192.168.0.1, 通常是"网关IP(不绝对, 是可以配置的).
     

例子(投屏):广播地址

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

三、路由选择

路由选择其实就是规划路径, 数据想要从一个设备到另一个设备, 需要先规划一条路出来, 然后数据沿着这条路进行传输, 传输到目标IP地址;

 

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

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

实际的转发过程,就类似于”问路“这样的过程,逐渐接近目标的

  1. 如果的“目的IP”在路由表里有,直接指明道路
  2. 如果没有,它会根据路由表给你规划一条合理的走向目的IP的路

四、数据链路层——以太网

数据链路层中使用的典型协议也有很多, 其中最知名常用的就是 "以太网"了, 考虑的是相邻两个节点(通过网线/光纤/无线直接相连的两个设备)之间的传输.

以太网帧体格式如下:

  1. 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的;(出厂写死的)
  2. 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
  3. 帧末尾是CRC校验码

目的地址, 源地址(6字节): 数据链路层的地址是MAC地址, 表示物理层地址, 这个地址和IP地址是完全独立的另一套地址体系, 每一个设备只有一个物理层地址, 在网卡等硬件设备出厂时这个地址就已经写死了(大部分), 使用6个字节来表示, 地址长度比IPv4长了6w多倍

把这个数据链路层数据帧,最大载荷长度,称为 MTU.以太网帧中的数据长度规定最小46字节,最大1500字节.

如果承载的数据,长度超过 MTU,就会在IP层进行分包~~使每个分出来的结果,都能在 MTU 之内~~

 

 

 

4.1 ARP协议

ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议

ARP协议的作用:

ARP协议建立了主机 ip地址 和 MAC地址 的映射关系

  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
  • 因此在通讯前必须获得目的主机的硬件地址
     

五、DNS

DNS,即Domain Name System,域名系统。DNS是一整套从域名映射到IP的系统。

TCP/IP中使用IP地址来确定网络上的一台主机,但是IP地址不方便记忆,且不能表达地址组织信息,于是人们发明了域名,并通过域名系统来映射域名和IP地址
 

域名是一个字符串,如 www.baidu.com , hr.nowcoder.com


域名系统为一个树形结构的系统,包含多个根节点。其中:
1. 根节点即为根域名服务器,最早IPv4的根域名服务器全球只有13台,IPv6在此基础上扩充了数量。
2. 子节点主要由各级DNS服务器,或DNS缓存构成。

  • DNS域名服务器,即提供域名转换为IP地址的服务器。
  • 浏览器、主机系统、路由器中都保存有DNS缓存。
  • Windows系统的DNS缓存在 C:\Windows\System32\drivers\etc\hosts 文件中,
  • Mac/Linux系统的DNS缓存在 /etc/hosts 文件中

在早期的时候, 互联网上的服务器很少, 这域名和IP这样的映射关系只是使用一个hosts文件来维护, 每个用户只需要手动自己的hosts文件就可以了, 现在的电脑还是有这个文件的, 也可以使用. 

网络通信发送数据时,如果使用目的主机的域名,需要先通过域名解析查找到对应的IP地址,
如果电脑的DNS服务器配置不对, 或者是DNS服务器挂了, 就会出现一个典型的情况: 网络正常的情况下, QQ等应用程序可以用, 但是网页打不开了.

我们自己电脑的DNS服务器可以通过如下方式配置,首先打开设置中 “网络和Internet” 中的 “高级网络设置” , 点击 “更多网络适配器器选项”.

然后右击WLAN或者以太网, 选择属性.

 然后选择IPv4的的字段就可以进行配置了.

这里可以自己去配置DNS服务器的地址, 常用地址百度一下就行, 很多的, 也可以选择自动获取(从路由器中获取).

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值