当前位置: 首页 > news >正文

网络原理2-网络层与数据链路层

目录

  • 网络层
  • 数据链路层

网络层

网络层做的工作:

1、地址管理–>IP地址

2、路由选择–>数据包传输的路径规划

网络层主要的协议就是IP协议

IP协议的报头结构:
在这里插入图片描述

4位版本: 有两个取值,4表示IPv4,6表示IPv6,默认是IPv4

4位首部长度: IP协议的报头也是可变长的,实际报头长度是该值*4,例如首部长度为10时,实际报头长度是40

8位服务类型TOS: type of service,表示IP协议以哪种模式进行工作。3位优先权已经弃用,1位保留字段,实际上只有4位有效,4位分别表示:最小延迟,最大吞吐量,最高可靠性,最小成本,这4个相互冲突,只能选择一个

16位总长度: IP数据包的总长度,表示IP数据报整体占多少个字节,16位,也就是64kb,IP协议会把大的数据包拆成多个小的数据包,到达接收方后会自动组包。所以不代表IP协议不能传输64kb以上的数据包。

16位标识: 同一个载荷的数据会被分成多个IP数据包来进行传输,这些数据包的16位标识是相同的,

3位标志位: 只有2个有效,其中一个表示这个包是否需要组包(判断是否是拆包的一部分),另一个表示当前包是否是组包中最后一个包。剩下一个是保留位。

13位片偏移: 片偏移决定拼装组包时,数据包的位置

8位生存时间(TTL): 表示一个数据包在网络中最多存活多长时间。TTL的单位是次数,表示经过路由器转发的次数。如果一个IP数据包的中的目的IP写错了,写成不存在的IP地址,这样的数据包不能让它无限传输,当达到了TTL的上限后,这个数据包就会被自动丢弃。发送数据包时会有一个初始的TTL(32、64、128…),数据包每经过一个路由器转发,TTL就会-1,TTL一旦减为0,这个数据包就会被当前的路由器丢弃。

8位协议: 描述了IP数据包携带的载荷,是根据哪种传输层协议进行传输的(TCP、UDP等)

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

32位源IP地址: 描述IP数据包从哪来的

32位目的IP地址: 描述IP数据包到哪里去

选项: 可选的项

数据: 要传输的数据

关于IP地址:

IP地址一般是用32位整数描述的,一个IP地址分为两部分,左边部分是网络号,右边部分是主机号。至于哪些部分是网络号,哪些部分是主机号,需要根据子网掩码判断。根据子网掩码的二进制形式,判断,子网掩码为1的部分就是网络号,为0的部分就是主机号。例如:

子网掩码为255.255.255.0,IP地址为192.168.100.150,子网掩码换成二进制形式就是:11111111 11111111 11111111 00000000,说明前24位是网络号,也就是192.168.100是网络号,150是主机号。

以上这种子网掩码的方案,是比较常用的一种方式,还有一种方案:ABCDE五类网络,在如今,这种方式只出现在教材中,我们不过多介绍。

特殊的IP地址:

1、主机号全为0:这个IP相当于当前网段(相当于网络号)。给某个设备分配IP地址时不能把主机号设为全0

2、主机号全为1:如192.168.0.255,这个IP是广播IP,往这个IP地址发送数据包,相当于给整个局域网中所有的设备发送了数据包

3、127开头:这个叫环回IP,给这个IP地址发送数据,设备就会从这个IP地址上收到相同的数据,相当于自己给自己发,常见的环回IP是127.0.0.1

我们知道IP地址用是32位表示的,表示的范围也就是0 ~ 42亿9千万,这样的范围放在现在的时代,有非常大的可能会出现IP地址不够用的情况,毕竟光全球人口数量就比42亿多,那么有没有什么办法解决这个问题?

方案1:动态分配IP地址

动态分配就是,当设备上网的时候,就分配IP地址,不上网的时候就不分配。

方案2:NAT(Network Address Translation)网络地址转换

NAT的原理就是,一个设备上网的时候,IP数据包的地址会被NAT设备进行修改。

我们一般把IP地址分为两大类:

一类是私网IP(内网IP):10.开头,前8位是网络号、172.16 ~ 172.31,前12位是网络号,192.168开头,前16位是网络号。这些范围内的都称为私网IP

一类是公网IP(外网IP):除了私网IP范围之外的IP

同一个局域网内,A主机范围主机B是可以的(不涉及NAT);公网上的设备A访问公网上的设备B也是可以的(不涉及NAT);一个局域网中的主机A访问另一个局域网的设备B,NAT机制不允许这样做;NAT主要处理的是:局域网内部的设备A访问公网上的设备B。
在这里插入图片描述

问题是,局域网内不止我一个人使用CSDN,当CSDN收到数据包时,返回数据包,怎么知道是给谁返回呢?网络通信中不止有IP地址信息,还有端口号,在NAT中,端口号可以区分不同主机上的不同应用程序。

在这里插入图片描述

运营商的NAT设备,会保存替换的映射关系,根据映射关系,就能确定是返回给我还是返回给朋友。

方案3:使用IPv6,IPv4使用的是32位表示地址,而IPv6使用128位表示,这个范围可以使地球上的每一粒沙子都能有自己的IP地址,IPv6不是IPv4的升级版,所以想大力推广使用IPv6,需要更换硬件设备,成本非常大,目前咱们普及程度是非常高了~

路由选择:

路由选择就是路线规划,规划数据包在网络中走哪个路由器进行传输。当IP数据包到达路由器时,路由器会查看目的IP,决定数据包是不是能直接发给目的主机,还是说要发送给下一个路由器,如此往复直到达到目的IP地址。具体的流程可以查看资料,咱们Java程序员了解一下即可。

数据链路层

数据链路层中最常见的协议:以太网

以太网数据帧格式如下:
在这里插入图片描述

目的地址和源地址都是mac地址,不是IP地址。

mac地址和IP地址的区别

1、mac地址使用6个字节表示,范围大

2、一般计算机或者其他设备在出厂时,mac地址就被分配好了,不能再修改了,mac地址也能作为设备的身份标识。IP地址可以手动修改

3、mac地址使用在数据链路层,用来实现两个设备之间的数据转发;IP地址是在网络层中使用的。

类型:描述了载荷中是什么样的数据

在这里插入图片描述

ARP是建立IP地址和mac地址的映射关系,当前设备接入网络时,会往广播地址发送ARP报文,收到ARP请求的设备会返回ARP响应,在响应中告知自己的IP和mac地址

46 ~ 1500字节:1500描述了数据链路层数据帧最大载荷长度
以上是网络层和数据链路层的相关介绍,作为Java程序员,我们需要了解的就是这些~


http://www.mrgr.cn/news/27700.html

相关文章:

  • 【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩
  • shell bash---类似数组类型
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】标题栏
  • 对称加密与非对称加密:密码学的基石及 RSA 算法详解
  • CentOS 8 安装 chronyd 服务
  • shell脚本(1)
  • 日系编曲:电吉他音色制作 拾音器选择 电吉他音色制作逻辑 音箱分类 效果器单块分类
  • 深入理解Python中的魔法参数 *args 和 **kwargs
  • C# 反射之动态生成dll/exe
  • CODESYS标准化编程之输入输出映射
  • 通信工程学习:什么是接入网(AN)中的CF核心功能
  • 电子电气架构——中央计算的软件定义汽车架构
  • 台风,也称为热带气旋,是一种在热带海洋上形成的强烈风暴系统。台风的形成需要满足以下几个条件:
  • Cyber Weekly #24
  • quartz 搭配SQL Server时出现deadlock的解决方案
  • Presto
  • RockyLinux-软件实现RAID5
  • String/StringBuffer/StringBuilder的区别
  • 一文速通calcite结合flink理解SQL从文本变成执行计划详细过程
  • for循环语句
  • 抽象工厂模式(Abstract Factory)
  • 结构体的内存对齐
  • 【C++】STL--string(上)
  • HashSet及其实现原理
  • 四、(JS)JS中常见的加载事件
  • IEEE 754浮点数表示