【JavaEE】网络层和数据链路层重点协议:IP和以太网

news2024/12/24 11:10:17

目录

1、IP协议

1.1、IP协议报头

1.2、解决IPv4地址不够用的问题

2、IP地址管理

2.1、IP地址的组成

2.1.1、子网掩码

2.1.2、IP地址的分类

3、路由选择

4、数据链路层协议:以太网协议


1、IP协议

IP协议属于TCP/IP模型的网络层,在网络层协议存在很多,IP协议作为一个比较重点的协议我们在本篇博客中进行了解。IP协议具有地址管理和路由选择这两个重要的作用,IP协议版本现在具有两种版本IPv4与IPv6,现在使用最广的是IPv4版本,IPv6的出现是为了解决IPv4这个版本的IP地址不够用的问题。

1.1、IP协议报头

  • 4位版本号: 指定IP协议的版本,对于IPv4来说,就是4.
  • 4位首部长度(IHL):描述了IP协议的首部长度(报头),单位是4字节(32比特),首部最短就是没有可选字段+填充,那么IP协议报头就存在5行必要的信息,每行信息有32bit(4个字节),因此总共有5*4 = 20个字节,首部最长长度,因为首部长度占4bit,4bit可以表示的范围是0~15,所以最大值是15,那么最大长度就是15*4=60个字节。
  • 16位总长度:表示IP首部与数据部分合起来的总字节数,该字段长16bit,因此IP报的最大长度为65535个字节。也就是64kb.
  • 3位标志:在后面的内容中有,这里就不介绍了。
  • 13位片偏移:用来标识被分片的每一分段相对于元素数据的位置。第一个分片对应的值位0.
  • 8位生存时间:它最初的意思是以秒为单位记录当前报在网络上应该生存的期限。然而,在实际中它是指可以中转多少个路由器的意思。每经过一个路由器,TTL会减少1,直到变成0则丢弃该报。这个字段主要是用来防止出现路由循环。
  • 8位协议:表示IP首部的下一个首部隶属于那个协议。这个协议包括UDP和TCP等的协议。
  • 16位首部校验和:也叫IP首部校验和,该字段只校验数据报的首部,不校验数据部分(IP数据报的载荷部分UDP/TCP数据报已经有校验和了),它主要用来确保IP数据报头部不被破坏。

1.2、解决IPv4地址不够用的问题

由于IPv4版本的IP地址是32位(4个字节)的,所以能过表示的范围在不考虑负数的情况下是42亿9千万,这个数字在当今这个时代中,就显得比较小了,现在我们每个人至少都有一台设备上网,这个时候就需要给这台设备分配一个的IP地址,当然我们是期望每个设备都有一个唯一的IP,那么全世界这么多台设备,显然IPv4这个版本的地址不够用。所以这个时候就需要一些解决办法。

1️⃣动态分配IP地址(DHCP

设备上网才分配IP地址,不上网就不分配IP地址,这个时候就可以省下很多的IP地址,这种方法只能一定程度的缓解IP地址不够用的问题,并不能彻底解决,这就是因为这个方法并没有增加IP地址的数量。

2️⃣网络地址转换(NAT机制

在NAT机制下将IP地址分为了内网IP外网IP两大类。

📗内网IP(私有IP)

内网IP始于非注册地址,专门为组织机构内部使用。因特网分配委员会保留了3块IP地址作为私有IP地址,10.0.0.0——10.255.255.255;172.16.0.0——172.31.255.255;192.168.0.0——192.168.255.255.

内网IP可以在不同的局域网中重复出现,如果内网中一个设备要访问外网,会给它分配一个外网IP,但是这个外网IP不会被这个设备独占,而是这个内网中所有的设备都共用这一个外网IP。一个路由器连接的网络设备就是处在内网中,也就是局域网。

📘外网IP(公有IP)

外网IP是指合法的IP地址,对外代表一个或者多个内部局域地址,是全球统一的可寻址的地址。

NAT机制就是在局域网中使用内网IP,而当内部结点要与外部网络进行通信时,就要在网关处,将内网IP替换成外网IP,从而在外网上正常使用,NAT机制可以使多台计算机共享Internet连接。通过这种方法就可以只申请一个合法的IP(外网IP),就把整个局域网中的计算机接入Internet中。

就比如,现在两个内网设备要访问百度的服务器(内网设备访问外网设备),路由器会将这两台计算机的内网IP转换成外网IP,去访问百度的服务器。

主机1和主机2想要访问百度服务器首先要构造数据报,这个数据报中包含了源IP和目的IP,通过路由器转发,路由器拿到这个数据报之后,就会把主机2发来的数据报的源IP替换成路由器的IP(公有IP),将这个数据报发送给百度服务器,百度服务器将数据处理之后,通过路由器的公有地址,将数据发送给路由器。这个时候,路由器会根据端口号将响应发送给相应的计算机(之前说到端口号是用来区分同一个计算机的不同进程的,这里用来区分不同计算机的不同进程也是完全可以)。

在现实生活中,我们是将前动态分配IP和网络地址转换结合使用的,这样虽然缓解了IP地址不够有的问题,但是还是没有从根本上解决这个问题。

注意:在NAT背景下通信

  1. 外网设备访问外网设备,不需要任何的NAT,直接就能通信
  2. 内网设备访问其他内网设备是不被允许的。但是可以使用一个外网设备进行中转,也就实现了通信。
  3. 外网设备访问内网设备这也是不被允许的。
  4. 内网设备访问外网设备,对应的内网设备的路由器就会触发NAT机制进行IP替换,此时就会给这个网络数据的源IP替换成路由器字节的IP。

3️⃣使用IPv6地址

IPv6是使用16个字节(128位)来表示IP地址的,这就使IPv6可以表示的IP地址个数是一个天文数字了,给地球上的每一粒沙子都分配一个IPv6版本IP地址都是够用的,虽说IPv6可以完美解决IP地址不够用的问题,但是从IPv6被提出到现在真正被使用到的还是非常少的,现实中还是大量的使用IPv4版本的IP地址。这主要还是IPv4和IPv6不兼容,想要大范围的使用IPv6,就需要将原本的路由器等的网络设备更换掉,这个更换的成本还是很大的,还有原因就是目前IPv6的各方面还没有IPv4一样成熟。

2、IP地址管理

2.1、IP地址的组成

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

  1. 网络号用来标识网段(标识一个局域网),保证相互连接的两个网段具有不同的标识;
  2. 主机号用来标识主机(标识一个局域网内部的主机),同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号

就比如这样一个IP地址192.168.1.8,192.168.1表示的就是网络号,8表示的就是主机号。通过下面的局域网环境来了解一下网络号和主机号。

  一个路由器存在两个IP分属不同的网段(局域网),通过这两个IP就可以将两个局域网连接在一起,此时这两个局域网就称为"相邻"局域网,这两个局域网的网络号是不能重复的。上述图片中路由器和光猫都有两个IP,一个是LAN口IP,一个WAN口IP,路由器的WAN口连接在光猫的LAN口,这个时候连接在光猫的LAN口的设备的网络号和路由器的WAN口IP的网络号相同。光猫的WAN口连接着光纤。

但是在一个IP地址中,哪个部分是网络号,那个部分是主机号,不一定是前三个字节表示网络号 。对于网络号和主机号的划分,主要有两种分类方式,一种是通过IP地址分类(ABCDE),一种是子网掩码。

2.1.1、子网掩码

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

🌈子网号

我们通过下面的例子来了解一下IP地址为192.168.1.113,子网掩码为255.255.255.192,我们将他们转换成二进制的形式。

 按照子网掩码的定义,子网掩码中1所对应的为网络号位,而0所对应的位为主机号位,可以看到上述使用的子网掩码中原本主机号被借走了两位用来表示网络号了,这就是子网号。

2.1.2、IP地址的分类

这五类IP地址的前缀使用来区分类别的,每个类别下,网络号和主机号长度都是固定的。AB类由于主机号太长,实际中很少有那么大的局域网,这就导致很多IP地址会被浪费掉 ,这种分类方式在实际中被淘汰掉了

🌈特殊IP地址

  1. 主机号为0的IP:例如192.168.0.0 表示的就是网络号,局域网里不应该存在某个主机的主机号为0
  2. 主机号为全1的IP:例如192.168.0.255,假定子网掩码是255.255.255.0,这种称为是广播地址,(广播地址就是往这个地址上发送UDP数据报,此时这个数据报就会被转发给整个局域网中的所有主机,TCP不支持广播。)
  3. 环回地址:IP以127开头的,使用最多的是127.0.0.1,是指Windows系统自带的虚拟网卡,这块网卡于任何外部网络不能通讯,只限于本机通讯。
  4. 主机号为1:例如192.168.0.1,一般被用作"网关IP",这只是习惯用法,并不强制约定。

3、路由选择

路由选择其实就是对数据在网络中传输的路径规划,数据在发送的过程中,两台主机先是建立连接,两台主机都知道了对方的IP的地址,然后之后的每次数据传输过程中,由于网络环境非常复杂,每个数据报传输的路径不可能都相同,每条数据在网络中进行传输的时候都会经历网络中的中间节点(路由器),这些结点是无法感知到网络环境的全貌的,一个路由器最多只认识它的一些邻居结点(或者是邻居的邻居),也就是说一个网络设备是不可能有数据传输的完整路径,当这些网络设备知道了这个数据报的目的地址(目的IP),具体该怎样走他会向邻居结点进行询问(就类似于我们日常生活中向别人问路)。

路由选择的核心思路就是"问路",每个路由器中都会有一个路由表这样的数据结构用来记录邻居结点的信息,当一个IP数据报在进行网络转发的过程中,每个路由器在接收到这个IP数据报之后,就会将这个IP数据报中的目的IP与路由表中的信息进行比对,有匹配的结果就会按照当前路由器规划的路径传输,但是当前路由器的路由表中没有匹配的信息,此时就会走路由器给你指出的一条默认的路径(路由表的"下一跳表项"),这个下一跳表项就会将把这个IP数据报指引向更上一级的路由器(越上一级的路由器中的路由表中记录的信息就会更多),这样直到到达目的IP,当然也有到达不了的情况,因为每经过一个路由器问一次,生存的时间TTL就会减1,如果减到了0还没有到达目标IP,就表示这个包永远到不了了,这个包就会丢弃。


4、数据链路层协议:以太网协议

数据链路层也存在很多协议,最著名的使用最广泛的就是"以太网"协议,以太网协议不仅在数据链路层进行了规定,同时也在物理层也存在一些协议规定了一些内容。

🌈以太网数据帧的格式

这里的以太网数据帧的目的地址和源地址都是6个字节的长度,表示的范围比IPv4大了6w多倍,所以MAC地址现在还不存在地址短缺的问题,所以大部分网卡等的硬件设备在出场的时候地址就已经写死了。

一个完整的以太网数据帧是由帧头(目的地址+源地址+类型)、帧尾(校验和)和载荷构成,上面的0800类型的数据帧表示的就是用来传输数据的普通的数据帧。上述的0800类型的数据帧的载荷长度46~1500,这个1500表示的就是载荷最大长度就是1500.这是由于不同的数据链路层协议,对应不同的硬件物理设备,这个时候数据报的载荷上限也就不一样我们把这个数据链路层的数据帧最大载荷长度称为MTU。

如果要传输的数据长度超过了MTU,那么就会在IP层进行分包,使分出来的报的长度都在MTU的范围内。 在IP协议中使用16位标识、13位片偏移和3位标志位这三个字段来支撑IP协议的分包和组包的。

 0806类型的数据报载荷部分是ARP报文, 0835类型载荷部分就是一个RARP报文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

volatile,wait和notify,懒汉模式和饿汉模式,阻塞式队列,定时器

目录 可见性 volatile volatile保证内存可见性 volatile不保证原子性 synchronized也可以保证内存可见性 wait和notify wait () notify() notifyAll() wait和sleep对比 顺序执行ABC三个线程 单例模式 饿汉模式 懒汉模式 懒汉模式和饿汉模式在多线程环境下调用getInstance,是否…

将条码图片批量嵌入到Excel单元格中

项目源码(如果有帮助希望可以点一个star) 业务场景: 需要将条码图片存到excel之中方便归档。 效果展示: 直接运行org.example.Main.main()就会将file目录中的图片插入到excel中,并且在项目根目录会生成一个.xlsx文件…

CTFshow-pwn入门-前置基础pwn20-pwn22

pwn20-pwn22是关于.got节跟.got.plt节的。这3道题的问题描述全是一样的,全都是问.got跟.got.plt是否可写以及他们的地址是什么,然后根据这些信息来拼成flag。那么关于.got和.got.plt的内容非常复杂,这里呢我也不解释了,推荐一个牛…

【kubernetes】负载均衡器安装部署-Haproxy与keepalived

前言:二进制部署kubernetes集群在企业应用中扮演着非常重要的角色。无论是集群升级,还是证书设置有效期都非常方便,也是从事云原生相关工作从入门到精通不得不迈过的坎。通过本系列文章,你将从虚拟机准备开始,到使用二进制方式从零到一搭建起安全稳定的高可用kubernetes集…

不要再用 count(*) 查询记录数了

来源 | 苏三说技术 (ID:susanSayJava) 已获得原公众号的授权转载 前言 最近我在公司优化过几个慢查询接口的性能,总结了一些心得体会拿出来跟大家一起分享一下,希望对你会有所帮助。 我们使用的数据库是Mysql8&…

【6.19】用户自己写String类会发生什么(双亲委派机制)

用户自己写一个String类会发生什么? 了解“类加载器” Java是运行在Java的虚拟机(JVM)中的。我们在IDE里编写的Java源代码先编译成.class的字节码文件,再由ClassLoader将class文件加载到JVM中执行。 JVM中有三层ClassLoader&am…

apple pc install windows 10

苹果笔记本安装window10,做个U盘启动,开机狂摁option,选择U盘,当然你最好去windows官方下个镜像,避免我前面出现提出镜像不行。另外苹果后来机器好像不能安windows了。呼呼…

GPT-3解数学题准确率升至92.5%!无需微调即可打造理科语言模型

原文:百度安全验证 【新智元导读】ChatGPT的文科脑有救了! 大型语言模型最为人诟病的缺点,除了一本正经地胡言乱语以外,估计就是「不会算数」了。 比如一个需要多步推理的复杂数学问题,语言模型通常都无法给出正确答…

很有必要更新:LightningChart.NET 10.5.1 Crack

LightningChart.NET v10.5.1版本--这个版本比SciChart 更好,更快,更强 为所有3D、Polar和Smith系列添加DataCursor功能。 2023年6月19日-10:53新版 特点 为所有3D、Polar和Smith系列启用了DataCursor功能。DataCursor允许用户浏览一个系列&#xff0…

【一起啃书】《机器学习》第十章 降维与度量学习

文章目录 第十章 降维与度量学习10.1 k k k近邻学习10.2 低维嵌入10.3 主成分分析10.3.1 定义与步骤10.3.2 最近重构性与最大可分性 10.4 核化线性降维10.5 流形学习10.6 度量学习 第十章 降维与度量学习 10.1 k k k近邻学习 k k k近邻学习是一种常用的监督学习方法&#xf…

数字图像处理实验报告(二)

报告目录 实验四、图像复原 实验五、图像压缩及编码 实验四、图像复原 一、实验目的 了解图像复原的意义和手段;熟悉图像退化成因及处理方法;通过实验了解不同图像退化模型的特点;通过本实验掌握利用MATLAB建立图像退化模型并进行复原的方…

linux CentOS7 keepalived+LVS(DR)搭建部署

目录 一、服务器准备 二、操作步骤 1.部署web服务器 2.部署LVS主备调度器 测试 部署NFS共享服务器 一、服务器准备 .准备6台虚拟机,2台做LVS主备调度器,2台做web服务器,1台做存储,1台客户机验证 1.LVS主调度器 &#xff08…

20个你应该掌握的强大而有用的正则表达式

关注“大前端私房菜”微信公众号,回复暗号【面试宝典】即可免费领取107页前端面试题。 正则表达式是一种很强大的字符串模式匹配工具。掌握常见的正则表达式可以大大提高我们在字符串操作和文本处理上的效率。 1.货币格式化 我经常需要在工作中使用到格式化的货币&…

哈希及其哈希思想的应用

1. unordered 系列关联式容器 在 C98 中, STL 提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 $log_2 N$ ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好 的查询…

Ubuntu20.04,samba服务器搭建。

0.前言 推荐个电视剧吧,百看不厌,《雍正王朝》。 这篇博客没什么技术含量,纯粹的表现一下我的勤劳。 1.Ubuntu 安装 终端输入 $ sudo apt install samba samba-common 配置需要共享的目录 # 新建目录(自定义)&am…

CarFramework打造无缝用户体验:提升汽车信息娱乐和控制

CarFramework框架解析 CarFramework(汽车框架)是Android Automotive平台上的一个关键框架,它提供了专门针对车辆应用程序开发的功能和工具。CarFramework通过提供一组API和服务,简化了与车辆硬件和车辆特定功能的交互。 CarFram…

被ChatGPT骗了!再用ChatGPT可要小心了。

被ChatGPT戏耍的周末 1. 被ChatGPT戏耍全过程2. 拆穿ChatGPT的把戏3. AIGC与内容安全 1. 被ChatGPT戏耍全过程 电动垂直起降飞行器(eVTOL,Electric Vertical Takeoff and Landing)技术越来越成熟,为了解下相关产品我周末打开了Cha…

Android Java判断密码强度 强度显示

1,正则表达式 密码强度的正则表达式 public static final String WEAK_PATTERN "(^(?.*[0-9])(?.*[a-z])[0-9a-z]{6,18}$)|(^(?.*[0-9])(?.*[A-Z])[0-9A-Z]{6,18}$)";//全数字字母(大/小)public static final String MEDIUM_…

61、基于51单片机无线蓝牙音乐喷泉控制系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)

方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元…