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

【Linux】网络层协议

目录

一. IP协议介绍

二. IP协议格式

三. 分片与组装

四. 网段划分

五. IP地址的数量限制

六. 私网IP地址与公网IP地址

七. 路由


一. IP协议介绍

IP 协议是TCP/IP体系中的网络层协议,TCP作为传输层协议负责传输的策略制定,但实际的传输是由网络层和链路层执行的。

我们在进行网络通信时,不是直接有从一方传输层传到另一方传输层。是由传输层进行策略制定,将数据打包给网络层,网络层确定发送终点,再打包给链路层。链路层负责寻找路由,最后找到目的地,再从链路层向上逐级解包,传输层拿到数据。

二. IP协议格式

4位版本号:IP协议的版本,是IPv4/IPv6

4位首部长度:IP报头的长度

8位服务类型:8 位服务类型通常指 8 位二进制编码的服务分类,核心用于标识不同服务场景的编码体系

16位总长度:IP报头+有效载荷 总长度

16位标识:主机发送的报文在网络层进行分片,被分片的报文带同一份标识表示是同一份报文

3位标志:第一位保留,暂时没有规定字段意义;第二段表示禁止分片,若报文长度超过MTU,IP层就会丢弃报文;第三位表示更多分片,若报文没有进行分片,则该字段设置为0,若报文进行了分片,且不是最后一片分片,该位设置为1

13位片偏移:分片数据相对于原始位置的偏移量,实际偏移量=片偏移字段值*8(字节)

8位生存时间:用于限制数据报在网络中的传播范围,防止路由器导致数据报回路无限循环

8位协议:上层的协议类型

16位首部校验和:鉴别数据报是否损坏

32位源IP地址和32位目的IP地址:表示发送端和接收端对应IP地址

三. 分片与组装

首先我们来了解MTU,MTU是指数据链路层中,一次能够传递的最大数据帧大小,包括报头和有效载荷。在以太网中这个大小默认为1500字节。

也就是说,我们最大的单次传输大小就是1500字节,倘若我们的数据量很大超过了当前大小该怎么办。

我们可以对数据进行分片,将同一份数据切成一片一片的,通过16位标识符标记同一份数据,底层链路层再将一份一份的数据发送出去。到了对端后,网络层根据标识符和偏移量来对报文进行重新排序,组装好后再将完整报文传给传输层,这样传输层就可以实现发送和接收时都是完整的报文大小。

倘若对端在接受数据时,存在单个分片丢失,此时对端会将所有的报文都丢弃,将单个报文分成多份发送同时也增加了丢包率。所以通常情况下,网络通信中不会使用分片。

四. 网段划分

IP地址由网络号和主机号组成

网络号:标识设备所属的网络(子网)

主机号:表示该子网下的具体设备

例如IP地址 192.168.1.100 ,那么192.168.1 就是网络号,100 就是主机号

在 IP 地址后面加一个 / ,并在 / 后加一个数字,表示 IP 地址中的网络号位数。例如 192.168.1.100/24 表示前24位是网络号,后8位是主机号(一共32位)


我们在一个子网中若新增主机,就需要为其分配相应的主机号,当该主机号断开连接就需要对其端口号进行回收,便于分配主机号给后续新增主机使用。对于IP地址的分配和回收一般不会手动进行,而是采用 DHCP技术进行自主管理,一般的路由器都是携带DHCP功能。

如何理解网段划分?我们可以类比于送快递,快递通常都是由 省份 + 具体地址 组成,我们可以将省份地址市区地址理解为一个个子网上下级,而具体的地址可以理解为主机号。我们要将数据从一端发送到另一端,本质就是数据在一个一个排查目的地寻找目的地的过程,通过找网络号一级一级的向下,可以排除许多选项,提升效率


IP 地址通常分为5类

A 类:0.0.0.0 到 127.255.255.255

B 类:128.0.0.0 到 191.255.255.255

C 类:192.0.0.0 到 223.255.255.255

D 类:224.0.0.0 到 239.255.255.255

E 类:240.0.0.0 到 247.255.255.255


上述的这几种划分策略容易导致浪费,例如学校想申请B类,主机号占16位,但是实际一个局域网中不会出现这么多的主机,也就意味着大量的IP会被浪费。

于是我们可以在此基础上再进行子网划分(CIDR),从借用的主机号中抽出几位充当网络号,网络号位数增加,可使用的子网数量增加,主机号减少,相应的,每个子网内可用的主机号就相应减少。因此我们就可以进行按位分配使其达到平衡。

那么既然进行了借位,我们就要清楚网络号和主机号的划分界限,我们可以使用子网掩码进行划分。子网掩码是一个32位整数组成,都是0和1,1对应IP地址的网络号,0对应IP地址的主机号,我们只需要按位与就可以得到最终的网络号和主机号。

五. IP地址的数量限制

IP地址是一个4字节32位的正整数,所以IP地址的总数就是2^32,将近43亿个IP地址。但如今世界人口已经远远超出这个数,我们日常生活的网络设备,冰箱,手表可能都需要使用IP地址。因此提出了几种方法来应对。

CIDR:减少主机号浪费,但没有提升IP地址的上限

动态分配IP地址:根据实时的使用情况动态分配IP地址,提高利用率

NAT技术:让不同的局域网中,存在相同的IP地址

Ipv6:将32位字节升级为128位,提高了IP地址的上限,但是目前IPv4与IPv6互不兼容,暂未广泛普及

六. 私网IP地址与公网IP地址

公网IP和私网IP的区别在于能否被互联网直接访问。公网地址是全球唯一的IP地址,任何互联网设备都能找到连接它,私网地址存在于局域网内部。私网地址想要访问公网地址,需要使用NAT技术,将私网地址给路由器,路由器分配一个公网地址才能进行访问。而公网地址想要访问私网地址,需要通过路由器端口映射进行间接访问


在理解私网和公网之前,我们得先理解路由器。路由器上有两种接口,一种是LAN口,一种是WAN口。

LAN口是连接局域网的接口,WAN口是连接外部广域网的接口。我们的手机连接网络,路由器给我们分配一个私网IP,我们发送信息,首先数据从LAN口进入到路由器,路由器存在一个公网IP地址,用路由器的公网IP地址传到对端的路由器WAN口,由WAN口转化成LAN口送到对端。两台不同局域网的主机若想通信,必须通过公网进行传递。

每一台路由器都有一个公网IP,这个IP是由运营商分配的。不同的私网之间,IP地址可以重复,但是相同的私网内IP地址不能重复。因为私网无法直接对公网进行访问,所以在私网内IP地址可以是任意的。

七. 路由

路由器是底部数据传输的一个一个节点,数据从路由器开始向目的IP进行传输,此时数据是不知道该往哪个方向走的,所以需要不断的进行“问路”。每当一份新的数据到路由器时,首先会查询路由表,路由表会记录缓存,该IP的数据通常会往哪台路由器发送。若路由表没有相关记录,就会走默认路径,直到找到对应的主机

相关的路由细节我们放到下面的链路层进行详细讲解

http://www.dtcms.com/a/580942.html

相关文章:

  • 深入解析 WPF 中的 DataTemplateSelector:动态模板选择的艺术
  • svn: E155000:
  • 【C++】:C++基于微服务的即时通讯系统(2)
  • Apple Pay 与 Google Pay 开发与结算全流程文档
  • Babylon.js相机交互:从 ArcRotateCamera 输入禁用说起
  • 安徽工程建设信息网站进皖企业wordpress优酷视频插件
  • git推送操作时报错error: failed to push some refs
  • 小程序弱网 / 无网场景下 CacheManager 离线表单与拍照上传解决方案
  • 邹平做网站公司一般的美工可以做网站吗
  • Vue3.4 Effect 作用域 API 与 React Server Components 实战解析
  • 基于改进TransUNet的港口船只图像分割系统研究
  • LeetCode 4. 寻找两个正序数组的中位数(困难)
  • 宇宙的几何诗篇:当空间本身成为运动的主角
  • Javascript函数之函数的基本使用以及封装?
  • 力扣 寻找两个正序数组的中位数
  • 文库类网站建设建议及经验上海高风险区域最新
  • 建设工程自学网站网站建设及管理使用情况汇报
  • Java 多线程同步机制深度解析:从 synchronized 到 Lock
  • AR眼镜在核电操作智能监护应用技术方案|阿法龙XR云平台
  • Rust 练习册 :Nth Prime与素数算法
  • 杭州网站建设机构win7做网站服务器卡
  • 算法基础篇:(三)基础算法之枚举:暴力美学的艺术,从穷举到高效优化
  • 【大模型学习3】预训练语言模型详解
  • 《Linux系统编程之开发工具》【实战:倒计时 + 进度条】
  • 【Frida Android】实战篇1:环境准备
  • 【2025 CVPR】EmoEdit: Evoking Emotions through Image Manipulation
  • 如何创建网站内容网站名称不能涉及
  • 编写微服务api
  • Flutter Transform.rotate 与动画控制器 实现旋转动画
  • Flutter进行命令打包各版本程序(2025.11)