- 博主简介:想进大厂的打工人
- 博主主页:@xyk:
- 所属专栏: JavaEE初阶
网络层重点协议——IP协议,在复杂的网络环境中确定一个合适的路径~
本篇文章我们来讲解什么是 IP协议及以太网,在IP协议中,有 地址管理 和 路由选择 两个方式,IP协议是位于 OSI模型 中第三层(网络层)的协议, 在这层上工作的不止这一个协议, 但 IP协议 是网络层传输所使用的最主流的一种协议。
目录
文章目录
一、IP协议-地址管理
1.1 IPv4报头介绍
1.2 动态分配IP地址(缓解)
1.3 NAT 机制
1.4 使用 IPv6
二、IP地址组成
2.1 分类
2.2 子网掩码
三、路由选择
四、数据链路层——以太网
4.1 ARP协议
五、DNS
一、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 |
大型网络 | 126 | 16777214 ($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 地址,分别是在不同的局域网中,一个路由器的作用就是把两个局域网连接起来~~
- WAN 口 ip
- 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(不绝对, 是可以配置的).
例子(投屏):广播地址
- 手机投屏到电视机上
- 手机和电视机都下载了投屏软件
- 手机和电视机在同一个局域网内
- 手机发起投屏,有一个自动查找电视机的过程,而这个过程就是,将广播地址发送了数据报,哪个设备有回应,就可能是你的电视机
- 因此手机能获取电视机的IP地址
三、路由选择
路由选择其实就是规划路径, 数据想要从一个设备到另一个设备, 需要先规划一条路出来, 然后数据沿着这条路进行传输, 传输到目标IP地址;
在网络上,网络环境更复杂,没这么容易
-
某个路由器,是无法把整个网络环境的模样记录下来的
- 路由器只能记录周围的情况(较小范围,认识邻居或者邻居的邻居)
- 路由器内部使用,路由表这种数据结构来记录邻居的信息~
实际的转发过程,就类似于”问路“这样的过程,逐渐接近目标的
- 如果的“目的IP”在路由表里有,直接指明道路
- 如果没有,它会根据路由表给你规划一条合理的走向目的IP的路
四、数据链路层——以太网
数据链路层中使用的典型协议也有很多, 其中最知名常用的就是 "以太网"了, 考虑的是相邻两个节点(通过网线/光纤/无线直接相连的两个设备)之间的传输.
以太网帧体格式如下:
- 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的;(出厂写死的)
- 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
- 帧末尾是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的的字段就可以进行配置了.
文章来源:https://www.toymoban.com/news/detail-442988.html
这里可以自己去配置DNS服务器的地址, 常用地址百度一下就行, 很多的, 也可以选择自动获取(从路由器中获取).文章来源地址https://www.toymoban.com/news/detail-442988.html
到了这里,关于【JavaEE】计网之IP协议+以太网+DNS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!