【Linux】网络基础(网络层与链路层)

news/2024/10/31 3:19:02/

网络层与链路层典型协议

  • 网络层
    • IP 地址
    • 地址管理
      • 网络号的划分(五种)
      • 特殊的网络以及IP地址
    • 路由选择
  • 链路层
    • MAC 地址
    • ARP 协议
    • MTU 最大传输单元
  • 其他典型协议:ICMP、DNS 、NAT技术
    • ICMP协议
    • DNS 协议
    • NAT & NAPT 技术
    • 代理

网络层

功能:负责地址管理与路由选择

IP 地址

在这里插入图片描述

(1)4位版本:4-ipv4 ,6-ipv6
(2)4位报头长度:以 4 字节为单位描述报头长度,IP报头最长长度 60 字节,最小 20 字节
(3)8位服务类型:3位优先权弃用,4位服务类型TOS,1位保留置 0

服务类型:最小延时、最大吞吐量、最高可靠性、最小成本

(4)16位数据报长度:限制一个IP报文包含报头在内最大不超过65535(64K)大小

UDP 报文中最大数据大小必须小于 64k-8(报头长度)-20(udp协议头部)

(5)16位分片标识:
在链路层有个限制报文大小的字段–MTU 最大传输数据大小,以太网协议默认大小为 1500字节

若一个报文在网络层封装了 IP 报头之后大于MTU,则在链路层就无法进行传输,因此需要在网络层进行数据分片,将一个大的报文分割成多个小报文,分别封装在 IP 报头进行发送,这个小报文—分片

若一个大的报文被分割成了多个小的分片进行传输,则多个分片到达对端网络需要进行分片重组,重组成一个完整的报文后交付给传输层

16位分片标识:标识当前分片属于哪个原始报文
3为标志:一位保留,第二位标识禁止分片,第三位标识更多分片
13位分片偏移:标识当前分片在原始报文中的位置(相较于起始位置的偏移量),分片偏移以 8 字节为单位

Q1:网络不稳定,有可能出现乱序,如何辨别哪个分片属于哪个原始报文?
16位分片标识 — 标识当前分片属于哪个原始报文

Q2:如何获知当前分片在原始报文中的位置?
13位分片偏移 — 标识了当前分片相对于原始报文起始位置的偏移量
13位分片偏移,能够表达的最大大小:8192,因此分片偏移的单位是 8 字节
每个分片的大小都是 8 的整数倍大小(除过最后一个分片)

(6)8 位生存时间 TTL:存放一个数据报文在网络中所能经过的路由器跳数,每经过路由器一跳就会 -1,为 0 时,将报文丢弃,主要是为了避免路由器环路

(7)8 位协议版本:当前 IP 报文封装的数据所使用的协议类型(对方进行数据分用时所使用的协议类型)

(8)16 位校验和:校验数据的一致性

(9)32位源端 IP ,32位对端 IP 地址:描述数据从哪来到哪去

(10)0~40 字节的选项数据

地址管理

ipv4 版本的 IP 地址:4 字节无符号整型数字,描述的主机个数 :42亿9千万+

IP 地址不够用:动态地址分配 DHCP ;使用 NAT 技术组建私网

ipv6 版本的 IP 地址:16 字节无符号整型数字

IP 地址的组成:
网络号:一个网络的标识,一个网络所分配的IP地址中都会包含这个标识
通过网络号,路由器能够判断某个 IP 地址属于哪个网络

主机号:一台主机在一个网络中的标识
通过主机号,路由器能够判断某个 IP 是当前网络中的哪台主机;一个网络中有多少个主机号代表可以连接多少台主机

网络号的划分(五种)

(1)A 类网络:
高 1 位固定为 0,有 7 位网络号,24 位主机号
网络号范围:0~127
IP 地址范围:0.0.0.0 ~ 127.255.255.255
A 类网络通常用于组建大型网络

(2)B类网络:
高 2 位固定为 10,有 14 位网络号,16 位主机号
网络号范围:128.0 ~ 191.255
IP 地址范围:128.0.0.0 ~ 191.255.255.255
B类网络通常用于组建中型网络

(3)C类网络:
高 3 位固定为 110,21 位网络号,8 位主机号
网络号范围:192.0.0 ~ 223.255.255
IP 地址范围:192.0.0.0 ~ 223.255.255.255
C类网络通常用于组建小型网络

(4)D/E 类网络:
D类高四位固定为 1110,28位为多播组号
E类高五位固定为 11110,27位留待后用

在这里插入图片描述

CIDR :使用子网掩码进行网络划分
子网掩码:4字节无符号整数,数据必须由二进制连续的 1 组成

在这里插入图片描述

例题

一个公司申请了C类网络 193.23.24.0/24,而公司由四个部门构成,想要划分为 4 个子网,平均将 IP 地址分配给四个部门,请问每个子网网络号、子网掩码、IP 地址范围?

答:
193.23.24.0/24 :24标识网络号为 24 位构成,C 类网络的 主机号为 8 位,因此C类网络中一个网络中可以拥有主机号 256 个(2^8)
平均划分为 4 个子网,则每个子网的主机号个数就是 256/4=64 个,也就是 0~63

子网掩码取反可以得到子网最大主机号
子网掩码与IP地址相与可以得到网络号

因此,子网掩码也就是等于子网最大主机号取反---- 63取反:

在这里插入图片描述
在这里插入图片描述

特殊的网络以及IP地址

(一)特殊网络:私网

私网组建要搭配一个技术:NAT 技术----网络地址转换技术

一个私网要向外发送数据,需要流经网关设备,进行网络地址替换,替换成为网关设备对外的地址,并且在设备中记录映射关系
在这里插入图片描述

网络划分时候,专门为组建私网划分出来几个网络号,避免与公网网络号重复

在这里插入图片描述

私网的网络号,只要注意相邻网络不使用相同网络号,就能保证私网地址不冲突,因为私网主机对外通信使用的都是对外的公网地址,经过 NAT 网络地址替换后,对外地址不冲突,因此不相邻的私网是可以使用相同的网络号(IP地址可以重复)

(二)特殊 IP 地址

0.0.0.0:代表本地主机上的任意网卡 IP 地址(通过用于服务端程序的绑定监听地址)
255.255.255.255:全网广播地址(UDP广播)
主机号全为 0 的地址:网络号,是网络的标识–不能分配给主机
主机号全为 1 的地址:局域网广播地址,也不能分配给主机

在这里插入图片描述

127.0.0.1:本地主机上的虚拟回环网卡地址,进行主机内部的网络通信 —> 本地网络回环测试

路由选择

路由器为流经的数据选择合适的路径进行转发(route 路由表)

每一个网络通信设备上都会有一张路由表

一个路由器连接了多少个网络,就得有多少块网卡,每一块网卡都能获取一个对应网络的IP地址,它的路由表中就会有多少条路由信息

链路层

负责相邻设备之间的数据传输

网络层 IP 地址描述的是数据从哪个主机来要到哪去,描述的是起点与终点,但是起点到终点中间需要进行层层转发才能够到达目标主机,然而中间设备间的数据转发也需要具有标识:MAC 地址

MAC 地址

MAC 地址:网卡的物理硬件地址(网卡出厂时设定的固定地址)
(1)类型:uint8_t mac[6] :无符号48位数字
早期网卡的mac地址不可修改,现在可以修改
(2)mac 作用:相邻设备间的标识

以太网协议:ether

在这里插入图片描述

如何知道指定相邻设备的 MAC 地址:依赖于 ARP 协议

ARP 协议

介于链路层与网络层之间的协议(既包含 MAC 地址,也包含 IP 地址)
作用:通过 IP 地址,获取指定设备的 MAC 地址

在这里插入图片描述

在这里插入图片描述

获取指定设备硬件地址的流程:
(1)当前主机封装一个 ARP 请求,在请求中填充源端 MAC,以及 IP 地址信息,并且将以太网帧头中的目标 MAC 地址填充为 0xffffffffffff-广播地址;
(2)将 ARP 请求广播给所有相邻设备;
(3)收到 ARP 请求的主机,对数据帧进行解析,若目标 IP 地址匹配则填充自己的 MAC 地址和 IP 地址进行响应;若不匹配则直接丢弃;
(4)当前主机受到响应后,就知道了指定设备的 MAC 地址;
(5)当前主机将 MAC - IP 映射关系缓存起来,并保持一段时间(并非永久)

在这里插入图片描述

MTU 最大传输单元

链路层限制的最大数据帧大小

在这里插入图片描述
MTU 对于传输层协议的影响:

TCP在进行三次握手阶段就会协商 MSS (根据 MATU 计算而来),然后在后续的数据传输中,每次从缓冲区取出合适大小数据进行头部封装传输
TCP在传输层会自动进行数据分段,因此不会在网络层进行数据分段

UDP并没有MSS协商,只要数据大小最大下于 64k-8 -20 即可传输,但是有可能在网络层因为大于MTU大小而导致数据分片
但所有分片需要在对端主机上进行重组,重组失败就会丢弃数据,因为分片越多风险越大(一个分片出问题会导致全部丢弃)
因此程序员在设计UDP数据传输时候,尽量在应用层考虑MSS,也就是尽量在进行传输时候,提前将报文分割好了,减少在网络层的数据分片

其他典型协议:ICMP、DNS 、NAT技术

ICMP协议

作用:用于进行网络探测

ping:进行网络探测
ping 就是通过 icmp 协议实现的:
(1)给指定主机发送icmp请求,要求对方进行icmp响应;
(2)若对方网络路由器,得不到响应就会组织对应的目标主机不可达的响应返回

ICMP 是网络协议,因此工作在网络层不涉及到端口的处理

DNS 协议

DNS (domain name system) 域名系统

网络中服务器特别多,但是请求服务器需要使用到 IP 地址,而 IP 地址并不容易记忆,因此设计出来域名

域名:服务器的别名,一个便于记忆的字符串(不区分字符串大小写)

为解决压力分摊问题以及容灾性,因此在世界各地都架设了域名服务器,并对域名服务器进行了层级划分:
(1)根域名服务器;
(2)顶级(一级)域名服务器;
顶级域名服务器的种类:
根据使用性质:.com;.org;.gov;.net;.edu…
根据地域划分:.cn;.us;.jp
(3)二级域名服务器;
二级域名通常都是根据机构名称进行命名:.baidu.com

针对不同等级域名也进行了划分,以便于域名管理,不同的域名服务器管理不同的域名

域名的解析流程:

在这里插入图片描述

NAT & NAPT 技术

NAT:网络地址转换技术,用于组建私网时候在网关设备上进行数据源端地址替换
(1)保护了私网主机安全性(私网主机对外不可见)
NAPT:网络地址端口转换技术(防止端口号重复使用)
(2)节省了公网 IP 地址的使用

在这里插入图片描述

代理

客户端主机将自己的请求并不直接发送给目标服务器,而是将请求发送给代理服务器,代理服务器去请求目标服务器,得到响应后将响应回复给客户端主机

在这里插入图片描述


http://www.ppmy.cn/news/42078.html

相关文章

如何利用空号检测 API 降低企业的业务成本

引言 电话营销和短信营销是现代营销活动的重要手段,但是无效号码的存在导致了很多资源浪费。利用空号检测 API 就可以避免企业向无效号码发送营销信息,降低营销成本。 本文将介绍空号检测 API 的工作原理以及如何利用空号检测 API 降低业务成本的多种方…

自动驾驶TPM技术杂谈 ———— CCRT验收标准(评分标准)

文章目录介绍评价方法指标体系算分方法一级指标二级指标三级指标四级指标五级指标行车辅助能力得分说明跟车能力得分说明前车静止识别与响应得分说明前车低速识别与响应得分说明前车减速识别与响应得分说明前车切入识别与响应得分说明前车切出识别与响应得分说明跟随前车起停得…

Can‘‘t connect to MySQL server on localhost (10061)解决方法

首先检查MySQL 服务没有启动》如果没有启动,则要启动这个服务。 有时候安装mysql后使用mysql命令时报错 Cant connect to MySQL server on localhost (10061),或者用net start mysql 时报服务名无效,一般是因为mysql服务没有启动。 打开 powe…

哪个品牌的触控笔质量好?ipad好用的触控笔

从这一点就能看出来,苹果原装的这一款电容笔,确实是贵得让人无法入手,一支就要一千多块钱。实际上,平替电容笔对没有太多预算的用户是个不错的选择。就拿正版电容笔来说,一正版的电容笔来说,就是4支平替电容…

一篇文章让你搞懂TypeScript中的??和?:和?.和!.是什么意思

TypeScript中的??和?:和?.和!.是什么意思?知识回调(不懂就看这儿!)场景复现核心干货???:?.!.知识回调(不懂就看这儿!) 知识专栏专栏链接TypeScript知识专栏https://blog.csdn.net/xsl_…

Nestjs实战干货-概况-第一步

第一步 在这组文章中,你将学习 Nest 的核心基础知识。为了熟悉 Nest 应用程序的基本构件,我们将建立一个基本的 CRUD 应用程序,其功能涵盖了入门级的很多方面。 语言 我们爱上了 TypeScript,但最重要的是–我们爱 Node.js。这就…

[c++17新增语言特性] --- 折叠表达式

折叠表达式(Fold Expression)是C++17引入的一个新特性,它允许对多个参数进行操作,并返回一个值。折叠表达式的语法如下: ( pack op ... ) ( ... op pack ) ( pack op ... op init ) ( init op ... op pack

基于Spring boot和Vue3的博客平台:系统通知、评论回复通知、专栏更新通知、用户角色与权限管理模块

目录 一、系统通知、评论回复通知、专栏更新通知 1.前端通知展示 2.后端通知实现 3.发送评论回复通知 4.发送专栏更新通知 二、实时通知与邮件通知 1.实时通知 三、用户角色与权限管理 1.角色与权限数据模型 2.分配角色与权限 3.基于角色的访问控制 在这篇博客中&am…