计算机网络(四)网络层

网络层

基本概念

网络互联:

将两个以上的计算机网络,通过一定的办法,用一种或多种通信处理设备(即中间设备)相互连接起来,以构成更大的网络系统。中间设备又称中间系统或中继系统

中继系统分为4种:

  1. 物理层中继系统:中继器,集成器
  2. 数据链路层中继系统:网桥和交换机
  3. 网络层中继系统:路由器
  4. 网络层以上的中继系统:网关

IPV4

IP(Internet Protocol)是互联网协议的缩写,它定义了计算机如何在互联网上寻址和传输数据。IP协议是互联网的核心技术之一,它允许全球范围内的计算机网络相互通信

IPv4分组(也称为IPv4数据报)的格式包括一个头部和一个可选的数据部分头部包含控制信息,用于指导分组在网络中的传输,而数据部分则包含要传输的实际数据
在这里插入图片描述

IP数据报首部 + 数据部分

IP首部部分重要字段
  1. 版本(Version):占 4 位,指示了IPv4协议的版本号,通常为 4

  2. 首部长度(Header Length):占 4 位,表示IPv4首部的长度(记录了整个首部的长度),以 32 位字为单位。IPv4首部的长度是可变的,通常为 20 字节,最大为 60 字节。

    假设首部长度:0101 (5) ,按照一个字32位来算,那5则是(5 * 4 = 20B(字节)); 表示该首段部分总共为20个字节

  3. 总长度(Total Length):占 16 位,表示整个IPv4数据报的长度,包括首部和数据部分的总长度

    16位表示最大数为216 - 1 =65536,表示最大能有65536个字节
    在这里插入图片描述

    由于以太网的最大传输单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部 + 数据部分) 不能超过下面的数据链路层的MTU值

  4. 服务类型(Type of Service):占 8 位,用于描述数据报的服务类型和优先级,如优先权、延迟、吞吐量等。通常用于流量控制和QoS(服务质量)

  5. 标识(Identification):占 16 位,它是一个计数器,每产生一个数据报就加1,并赋给标识字段。但它并不是“序号”。当一个数据报的长度超过网络的MTU时,必须分片(后面介绍),(就是数据部分太大了,超过了范围,必须拆分,拆分后需要有个标识,清楚拆分后属于哪个包就需要有个标识)。此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报

  6. 标志(Flags):占 3 位,包括 DF(Don’t Fragment)、MF(More Fragments)和保留位

    MF = 1表示后面还有分片,MF = 0表示最后一个分片

  7. 片偏移(Fragment Offset):占 13 位,用于标识分段数据报在原始数据报中的位置

  8. 生存时间(Time to Live):占 8 位,指定数据报在网络中的生存时间,每经过一个路由器就减 1,当生存时间为 0 时,数据报将被丢弃

  9. 协议(Protocol):占 8 位,指定了数据报中的上层协议类型,如TCP、UDP、ICMP等

  10. 首部校验和(Header Checksum):占 16 位,用于校验IPv4首部的完整性,保证数据报在传输过程中没有被损坏

  11. 源 IP 地址和目的 IP 地址(Source IP Address, Destination IP Address):每个地址占 32 位,分别指定了数据报的源地址和目的地址

  12. 选项(Options):可选字段,用于指定一些可选的参数和控制信息,如记录路由选项、时间戳选项等

  13. 填充(Padding):用于填充首部使得其长度是32位的整数倍

IP数据报分片

IP数据报分片(IP Datagram Fragmentation)是指在IPv4协议中,当一个数据报太大,无法通过某个网络接口的MTU(最大传输单元)时,网络设备(通常是路由器)会将其分割成多个较小的数据报片段(分片),以便能够通过该网络接口。每个分片都包含一个IP头和一部分原始数据

分片的格式:

  1. 标识(Identification):
    标识字段用于标识分片的原始数据报
    每个分片和原始数据报都包含相同的标识值
  2. 标志(Flags):
    标志字段包含一个分片标志(0),表示这是分片还有一个保留标志,用于未来的扩展,目前应该设置为0
  3. 片偏移(Fragment Offset):
    片偏移字段用于指示每个分片在原始数据报中的位置分片的偏移量以8字节为单位,所以最大值为127 x 8 = 1024字节
  4. 数据(Data):
    分片包含原始数据报的一部分
    数据的长度由总长度字段决定
网络层转发分组的流程
  1. 接收数据报:

    路由器的网络接口接收到一个数据报(或数据包),该数据报通常包含了目标IP地址和源IP地址等信息

  2. 解析目标IP地址:

    路由器解析数据报中的目标IP地址,以确定数据报的目标网络

  3. 查询路由表

    路由器查询本地路由表,根据目标IP地址查找最佳的转发路径。
    路由表中存储了网络层地址与输出接口的映射关系,以及下一跳路由器的地址(如果有)

  4. 选择下一跳路由器

    如果目标IP地址与路由表中的网络地址不匹配,路由器将选择一个下一跳路由器来转发数据报。
    下一跳路由器是能够将数据报转发到目标网络的路由器。

  5. 转发数据报

    路由器根据路由表的信息,将数据报转发到相应的输出接口或下一跳路由器。
    路由器根据目标MAC地址将数据报封装成帧,并通过物理链路发送出去。

  6. 到达目标网络

    经过一系列路由器的转发,数据报最终到达目标网络。
    在目标网络上,路由器将根据目标IP地址将数据报交付给目标主机或下一跳路由器。

  7. 目标主机处理

    如果数据报到达了目标主机,目标主机将从数据报中提取数据,并进行相应的处理,如TCP连接建立、数据包转发等

IPV4地址

IP地址,都是由网络号和主机号两个部分组成。即IP地址:{<网络号>, <主机号>} 其中网络号标主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的

IPV4地址分类:
在这里插入图片描述

IP地址的重要特点:

  1. 每个IP地址都由网络号和主机号两部分组成,一种分级等级地址结构

    IP地址管理机构在分配IP地址时只分配网络号;主机号则由第一级该网络的单位自行分配,方便了IP地址的管理

    路由器仅根据目的主机所连接的网络号来转发分组,从而减少了路由器表所占的存储空间

  2. IP地址是标志一台主机(或路由器)和一条链路的接口

  3. 用转发器或桥接器(网桥)连接的若干LAN仍然是同一个网络(同一个广播域),因此该LAN中所有主机的IP地址的网络号必须相同,主机号必须不同

  4. IP地址中,所有分配到网络号的网络(无论是LAN还是WAN)都是平等的

  5. 同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。路由器总是具有两个以上的IP的地址路由器的每个端口都有一个不同网络号的IP地址

网络地址转换(NAT(Network Address Translation))

是一种在路由器或防火墙等网络设备上执行的技术,用于将私有IP地址转换为公共IP地址,以实现内部网络和外部网络(例如互联网)之间的通信

为了网络安全,划出了部分IP地址为私有IP地址。私有IP地址只用于LAN,不用于WAN连接(私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet)

私有IP网段

在IPv4中,有一部分IP地址被保留用于私有网络,这些地址不会在互联网上公开路由,因此被称为私有地址。私有地址网段是由互联网号码分配 authority (IANA) 定义的标准,它们可以在任何组织内部自由使用,而不会与互联网上的其他设备冲突

A类:10.0.0.0 到 10.255.255.255(10.0.0.0/8)
B类:172.16.0.0 到 172.31.255.255(172.16.0.0/12)
C类:192.168.0.0 到 192.168.255.255(192.168.0.0/16)

NAT的工作过程

地址转换规则配置:管理员配置NAT设备的地址转换规则,包括内部私有地址和外部公共地址的映射关系。通常包括源地址转换(将内部私有地址转换为外部公共地址)和目标地址转换(将外部公共地址转换为内部私有地址)。

内部主机发送数据:当内部主机发送数据包到外部网络时,数据包的源IP地址是内部私有地址,目标IP地址是外部公共地址。

NAT设备进行地址转换:NAT设备接收到数据包后,根据预先配置的地址转换规则,将数据包的源IP地址替换为外部公共地址,并更新数据包的校验和等相关字段。

路由器转发数据:NAT设备根据转换后的地址信息,将数据包转发到外部网络中的目标主机或路由器。

目标主机返回数据:外部网络中的目标主机收到数据包后,将响应数据包发送回内部网络。响应数据包的目标IP地址是NAT设备的外部公共地址。

NAT设备进行逆向地址转换:NAT设备接收到响应数据包后,根据预先配置的地址转换规则,将数据包的目标IP地址替换为内部私有地址,并更新相关字段。

内部主机接收数据:最后,NAT设备将转换后的响应数据包发送到内部网络中的目标主机,完成数据通信过程

eg:

  1. 假设某个宿舍办理了100Mb/s电信宽带,那这个宿舍就获得了一个全球IP地址(假设138.76.30.7),而宿舍内4台主机使用私有地址(如192.168.0.0)
  2. 宿舍的网关路由器启动NAT功能,并应用路由器上的NAT转换表
  3. 当路由器从LAN端口收到源IP及源端口号为192.168.0.2:2233的数据报时,将其映射成138.76.30.7:5001,然后从WAN端口发送到因特网上
  4. 当路由器从WAN端口收到目的IP及目的端口为138.76.30.7:5060的数据报时,就将其映射成192.168.0.3:1234,完后从LAN端口发送给相应的本地主机。
  5. 这样,只需一个全球地址,就可以让多台主机同时访问因特网
子网划分

子网划分纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络

从主机号借用若干比特号作为子网号,当然主机号也就相应减少了相同的比特。三级IP地址的结构:IP地址 = {<网络号>, <子网号>, <主机号>}

子网掩码

子网掩码(Subnet Mask)是一种32位的二进制数字,用于指示一个IP地址中网络号和主机号的边界。子网掩码中的连续的1表示网络号部分,连续的0表示主机号部分。子网掩码通常与IPv4地址一起使用,用于划分IP地址空间,将一个网络划分为若干个子网

子网掩码的常见表示方法有两种:点分十进制表示法和CIDR表示法

  1. 点分十进制表示法将32位的二进制子网掩码划分为4个8位的二进制数,并将每个8位的二进制数转换为对应的十进制数,用点号分隔开

    例如,子网掩码255.255.255.0的二进制表示是11111111.11111111.11111111.00000000

  2. CIDR(Classless Inter-Domain Routing)表示法将子网掩码表示为IP地址后面跟着一个斜杠和一个数字,表示网络号占用的位数

    例如,CIDR表示法中,子网掩码255.255.255.0通常表示为“/24”,表示网络号占用了前24位,主机号占用了后8位

ARP

ARP(Address Resolution Protocol)是一种用于在IPv4网络中解析IP地址与MAC地址之间对应关系的协议。它是网络通信中的重要组成部分,用于将IP地址转换为对应的MAC地址,以实现数据包在局域网中的传输

每台主机都设有一个ARP高速缓存,用来存放局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表

工作原理

  1. 当主机A要发送数据到主机B时,它首先检查自己的ARP缓存中是否有主机B的IP地址对应的MAC地址。如果有,则直接使用缓存中的MAC地址发送数据包

  2. 如果主机A的ARP缓存中没有主机B的IP地址对应的MAC地址,它会发送一个ARP请求广播帧到局域网中的所有主机,询问谁拥有目标IP地址对应的MAC地址

  3. 局域网中的其他主机收到ARP请求后,会检查请求中的IP地址是否与自己匹配。如果匹配,则向主机A发送ARP响应,包含自己的MAC地址

  4. 主机A收到ARP响应后,将目标IP地址与MAC地址的对应关系存储到自己的ARP缓存中,并使用这个MAC地址发送数据包

DHCP

DHCP(Dynamic Host Configuration Protocol)是一种网络协议,用于动态地为网络中的设备分配IP地址和其他网络配置参数,如子网掩码、默认网关、DNS服务器等。DHCP协议能够自动化地管理和分配网络配置,简化了网络管理人员的工作,并提高了网络的灵活性和可扩展性

过程

  1. 客户端发现:当一个设备加入网络时(例如打开电脑或连接到无线网络),它会发送一个DHCP发现广播消息到局域网中的所有设备,请求获取网络配置信息。

  2. DHCP服务器提供IP地址:局域网中的DHCP服务器收到客户端的发现消息后,会从可用的IP地址池中选择一个IP地址,并将其分配给客户端。
    DHCP服务器向客户端发送一个DHCP提供消息,包含分配给客户端的IP地址和其他网络配置参数。

  3. 客户端请求网络配置:客户端收到DHCP提供消息后,会向DHCP服务器发送一个DHCP请求消息,确认接受分配的IP地址和其他网络配置参数。

  4. DHCP确认:DHCP服务器收到客户端的请求消息后,会向客户端发送一个DHCP确认消息,确认客户端已经成功获取了网络配置信息。

  5. 网络配置应用:客户端收到DHCP确认消息后,会将分配到的IP地址和其他网络配置参数应用到自己的网络设置中,从而完成网络配置过程

IP组播

IP组播(IP Multicast)是一种用于在IP网络中向多个目的地发送数据的通信模式。它允许一个发送者将数据发送到一个IP组播地址,然后网络中的多个接收者可以通过加入该组播组来接收数据

组播地址

IP组播地址是一个特殊的IP地址范围,用于标识一个组播组。IPv4的组播地址范围是224.0.0.0到239.255.255.255,IPv6的组播地址范围是FF00::/8

组播地址中的每个接收者都可以通过加入相应的组播组来接收发送到该组播地址的数据

加入组播组

主机可以通过使用特定的协议(如IGMP或MLD)向本地路由器发送请求,请求加入一个或多个组播组

当路由器收到加入组播组的请求后,它会在自己的路由表中添加相应的条目,以便将组播数据转发到相应的主机

组播数据传输

发送者将数据发送到特定的组播地址,而不是发送到单个主机的IP地址

中间路由器负责将组播数据转发到所有加入了该组播组的主机

路由器使用多播路由协议(如PIM)来维护和更新组播转发树,确保组播数据沿着最有效的路径传输到所有接收者

应用

主机可以通过使用特定的协议(如IGMP或MLD)向本地路由器发送请求,请求加入一个或多个组播组

当路由器收到加入组播组的请求后,它会在自己的路由表中添加相应的条目,以便将组播数据转发到相应的主机

组播数据传输

发送者将数据发送到特定的组播地址,而不是发送到单个主机的IP地址

中间路由器负责将组播数据转发到所有加入了该组播组的主机

路由器使用多播路由协议(如PIM)来维护和更新组播转发树,确保组播数据沿着最有效的路径传输到所有接收者

应用

IP组播通常用于流媒体、在线游戏、多播文件传输等应用场景,其中需要向多个接收者同时传输相同的数据流

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Navicat的安装与破解

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

EI级 | Matlab实现TCN-LSTM-MATT、TCN-LSTM、TCN、LSTM多变量时间序列预测对比

EI级 | Matlab实现TCN-LSTM-MATT、TCN-LSTM、TCN、LSTM多变量时间序列预测对比 目录 EI级 | Matlab实现TCN-LSTM-MATT、TCN-LSTM、TCN、LSTM多变量时间序列预测对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 【EI级】Matlab实现TCN-LSTM-MATT、TCN-LSTM、TCN、LSTM…

Unity 扩展自定义编辑器窗口

在Assets文件夹路径下任意位置创建Editor文件夹&#xff0c;将扩展编辑器的代码放在Editor文件夹下 生成编辑器窗口 代码中首先引用命名空间 using UnityEditor; 然后将创建的类继承自EditorWindow public class MenuEditor : EditorWindow 然后通过扩展编辑器菜单功能调用…

AI - 提示词意外收获 (5)

提示词&#xff1a; A soft pink rose with opalescent leaves, located in a surreal desert under the light of a binary star system, The dual shadows and contrasting lights create a dreamlike quality, emphasizing the roses unique beauty,翻译: 一种柔软的粉红…

动态规划|343.整数拆分

力扣题目链接 class Solution { public:int integerBreak(int n) {vector<int> dp(n 1);dp[2] 1;for (int i 3; i < n ; i) {for (int j 1; j < i / 2; j) {dp[i] max(dp[i], max((i - j) * j, dp[i - j] * j));}}return dp[n];} }; 思路 看到这道题目&…

153. 寻找旋转排序数组中的最小值

Problem: 153. 寻找旋转排序数组中的最小值 文章目录 思路解题方法复杂度Code 思路 排序( O ( n l o g n ) O(nlogn) O(nlogn)) 或者 循环一次( O ( n ) O(n) O(n))&#xff0c;但时间复杂度均不满足要求 解题方法 二分 当数组旋转后&#xff0c;只有可能出现如图的两种情况&am…

数据库查询:查询入参类型和数据库字段类型不匹配导致的问题

问题&#xff1a;假设我们现在有这样的一张表 CREATE TABLE test_person (id int(20) NOT NULL COMMENT 主键,name varchar(20) DEFAULT NULL COMMENT 姓名,gender char(2) DEFAULT NULL COMMENT 性别,birthday date DEFAULT NULL COMMENT 生日,created_time timestamp NULL D…

ubuntu 23.10.1 mysql 安装

注&#xff1a;请进入root用户模式下操作&#xff0c;若没有&#xff0c;输入命令前加上sudo 1、更新软件包列表 apt update2、安装最新版的Mysql服务器 apt install mysql-server -y如果不加-y 会在安装过程中&#xff0c;系统将提示你设置MySQL的root密码。确保密码足够强…

《云原生安全攻防》-- 云原生攻防矩阵

在本节课程中&#xff0c;我们将开始学习如何从攻击者的角度思考&#xff0c;一起探讨常见的容器和K8s攻击手法&#xff0c;包含以下两个主要内容&#xff1a; 云原生环境的攻击路径: 了解云原生环境的整体攻击流程。 云原生攻防矩阵: 云原生环境攻击路径的全景视图&#xff0…

Unity解决:导出安卓apk 安装时报错:应用未安装:软件包似乎无效

Unity2018.4.36 导出安卓apk 安装时报错&#xff1a;应用未安装&#xff1a;软件包似乎无效 解决办法&#xff1a;因为安装到安卓12 需要添加添加过滤规则 在AS工程AndroidManifest.xml 添加过滤规则即可。 android:exported"true"

记录flume运行时报NullPointerException异常

【背景说明】 我要起一个将kafka上的topic_log主题中的数据上传到hdfs上的flume进程。 这是我的flume配置文件脚本&#xff1a; #定义组件 a1.sourcesr1 a1.channelsc1 a1.sinksk1#配置source1 a1.sources.r1.type org.apache.flume.source.kafka.KafkaSource a1.sources.r…

使用 npm 工具高效更新项目依赖包

团队内部会用工具定时检查包的最新版本并通知&#xff0c;以便我们及时跟进社区进展&#xff0c;避免和技术栈出现版本脱节导致无法使用最新特性和优化内容 这里只说明手动查看和更新包的主要几个命令。 npm outdated&#xff1a;检查项目中过时的依赖包及其最新版本。 npm i…

MVSplat:稀疏多视点图像的高效3D高斯溅射

MVSplat: Efficient 3D Gaussian Splatting from Sparse Multi-View Images MVSplat&#xff1a;稀疏多视点图像的高效3D高斯溅射 Yuedong Chen1  Haofei Xu2,3  Chuanxia Zheng4  Bohan Zhuang 粤东陈浩飞徐 2,3 郑传霞 4 庄伯涵1 Marc Pollefeys2,5  Andreas Geiger3  T…

如何应对孩子情绪化地发脾气?

你有小孩儿吗&#xff1f;是否受孩子发脾气的困扰&#xff1f;如果都没有&#xff0c;可以跳出去看看别人的文章了&#xff0c;如果有&#xff0c;可以继续往下看。 白牙有个小闺女&#xff0c;3 岁半&#xff0c;今天她看大人洗脚&#xff0c;她也想洗&#xff0c;但没来得及给…

[lesson31]完善的复数类

完善的复数类 完善的复数类 复数类应该具有的操作 运算&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/比较&#xff1a;&#xff0c;!赋值&#xff1a;求模&#xff1a;modulus 利用操作符重载 统一复数与实数的运算方式统一复数与实数的比较方式 注意事项 C规定赋…

HarmonyOS开发实例:【事件的订阅和发布】

介绍 本示例主要展示了公共事件相关的功能&#xff0c;实现了一个检测用户部分行为的应用。具体而言实现了如下几点功能&#xff1a; 1.通过订阅系统公共事件&#xff0c;实现对用户操作行为&#xff08;亮灭屏、锁屏和解锁屏幕、断联网&#xff09;的监测&#xff1b; 2.通…

气象观测站点数据下载与处理

一、下载途径 全国400多个气象站气候数据&#xff08;1942-2022&#xff09; 王晓磊&#xff1a;中国空气质量/气象历史数据 | 北京市空气质量历史数据 气象数据免费下载网站整理 中国气象站观测的气象数据怎么下载 二、R语言处理 2.1 提取站点文件 library(dplyr) library(…

探索顶级短视频素材库:多样化选择助力创作

在数字创作的浪潮中&#xff0c;寻找优质的短视频素材库是每位视频制作者的必经之路。多种短视频素材库有哪些&#xff1f;这里为您介绍一系列精选的素材库&#xff0c;它们不仅丰富多样&#xff0c;而且高质量&#xff0c;能极大地提升您的视频创作效率和质量。 1.蛙学网 蛙学…

绝地求生:PWS韩国联赛结束:KDF夺冠,DNW三年来首次错失世界赛

4.14号PWS韩国联赛结束了为期3天的决赛&#xff0c;KDF战队以73击杀117分获PWS第一阶段冠军&#xff0c;队内Heaven获MVP&#xff0c;DK_seoul伤害王。 常规赛靠前的DNW和Gen.G决赛均发挥失常都没有进入前八&#xff0c;其中上届世界冠军DNW在双S核心出走后时隔三年首次错失世界…

ubuntu20.04安装+ros-noetic安装+内网穿透frp

刷机后的系统安装 ubuntu20.04安装安装ros-noetic安装各种必要的插件安装vscode内网穿透连接实验室主机配置frpc和frps文件运行完成自动化部署免密登录linux的免密登录windows上的免密登录 内网穿透的参考链接&#xff1a;如何优雅地访问远程主机&#xff1f;SSH与frp内网穿透配…