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

news2024/11/15 7:11:45

网络层与链路层典型协议

  • 网络层
    • 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.coloradmin.cn/o/431879.html

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

相关文章

算法设计与分析阶段考总结

前言:基本是为了我自己看的一些我容易忘记的东西,为考试作准备把 第一章 算法中的基本概念 程序设计数据结构算法 算法特性 1.有穷性 2.确定性 3.可行性 4.输出 5.输入 算法复杂性分析 算法复杂性依赖于:问题规模N,输入I&#xff…

TCP 的可靠传输

目录 可靠传输有啥用确认应答超时重传总结 可靠传输有啥用 我们知道相比于 UDP, TCP 的传输是可靠的, 啥意思呢? 就是 UDP 发送的数据, 它自己不知道发送的数据对方是否接收到. 而 TCP 发送的数据, 它知道对方是否接收到, 也就是说对方会给个应答. 假设一个场景 : 甲要付款给…

全网最详细,Jmeter性能测试-性能基础详解,接口关联与编写Java脚本(三)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 接口关联 接口关联…

Vector - CAPL - CAN x 总线信息获取(续1)

继续.... 目录 OverLoadFrameCount -- 过载帧数量 代码示例 OverLoadFrameRate -- 过载帧速率 代码示例 StandardFrameCount -- 标准帧数量 代码示例 StandardFrameRate -- 标准帧速率 代码示例 StandardRemoteFrameCount -- 标准远程帧数量 代码示例 StandardRemote…

Java注解编译期处理AbstractProcessor详解

文章目录概述注解处理器注解处理流程AbstractProcessorgetSupportedOptions()getSupportedAnnotationTypesgetSupportedSourceVersioninit初始化process 处理方法如何注册注解处理器如何调试编译期代码Maven相关配置(指定生效的Processor)注意事项自定义注解处理器范例范例一&a…

多线程小知识

多线程 多线程环境使用哈希表HashMapHashtableConcurrentHashMap 死锁死锁是什么两者之间的死锁多人之间的死锁 死锁产生的四个必要条件:互斥使用不可抢占请求和保持循环等待 不同的锁ReentrantLockSynchronized和ReentrantLock之间的区别:具体选择Synchronized加锁工作过程偏向…

using namespace std 是什么意思——C++命名空间

目录 namespace命名空间局部域和全局域namespace展开命名空间指定命名空间 命名空间的嵌套不同文件中的同名命名空间 using namespace std 是什么意思 我们先看一段C代码&#xff1a; #include <stdio.h> #include <stdlib.h>int rand 0;int main() {printf(&quo…

6.2 统计量与抽样分布

学习目标&#xff1a; 我的理解: 统计量是从一个样本中计算得到的数值&#xff0c;用于描述样本的某种特征或性质。统计量可以用来推断总体的特征或性质&#xff0c;因为样本是总体的一部分。 通常&#xff0c;统计量是通过对样本中的数据进行计算得到的&#xff0c;例如平均…

3年轻人20万开店日营业额79.2元,年轻人开店还能赚到钱吗?

最近&#xff0c;河南郑州的蔡先生和2个朋友合伙开一家汉堡店&#xff0c;生意很惨淡&#xff0c;日营业额79.2元。 蔡先生表示&#xff0c;他们开店失败的最大原因就是没有做好前期准备工作&#xff0c;产品没有吸引人的特色&#xff0c;导致正式营业后吸引不到客户。 蔡先生用…

Python 实现海康机器人工业相机 MV-CU060-10GM 的实时显示视频流及拍照功能

一、背景介绍 1、最近项目中需要给客户对接海康机器人工业相机 MV-CU060-10GM&#xff1b; 2、客户要求通过部署的管理平台&#xff0c;可以在页面上实现如下功能&#xff1a; 1&#xff09;相机视频流开始预览&#xff1b; 2&#xff09;相机视频流停止预览&#xff1b; 3&am…

三月份跳槽了,历经阿里测开岗4轮面试,不出意外,被刷了...

大多数情况下&#xff0c;测试员的个人技能成长速度&#xff0c;远远大于公司规模或业务的成长速度。所以&#xff0c;跳槽成为了这个行业里最常见的一个词汇。 前几天&#xff0c;我看到有朋友留言说&#xff0c;他在面试阿里的测试开发工程师的时候&#xff0c;灵魂拷问三小…

NIO非阻塞式网络通信实例

一、概述 1、NIO有三大核心部分&#xff1a;Channel(通道)&#xff0c;Buufer(缓存区)&#xff0c;Selector(选择器) Buffer缓存区 缓冲区本质上是一块可以写入数据&#xff0c;然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象&#xff0c;并提供了 一组方法&am…

❤Linux文件、目录与磁盘格式总结❤

文章目录 Linux文件、目录与磁盘格式总结Linux文件权限chgrpchmodchown文件种类Linux文件扩展名 Linux文件与目录管理常用的目录解释目录树绝对路径与相对路径cd(切换目录)pwd(显示当前目录)mkdir(建立一个新目录)rmdir(删除空目录)执行文件路径变量$PATHls(文件与目录的查看)c…

青藤首提“业安融合”理念,正式发布先进云安全方案CNAPP

4月18日&#xff0c;以“云时代&#xff0c;安全变了”为主题的2023年云安全高峰论坛在北京举行。会上&#xff0c;青藤首次提出“业安融合”理念&#xff0c;正式发布先进云安全方案CNAPP。 中国全面进入云和数字化时代 当前&#xff0c;全球已进入数字经济时代&#xff0c;…

物联感知产品如何助力企业实现智能化转型?

如果您的企业想要实现设备全生命周期管理、设备信息管理、设备监控和数据处理等功能&#xff0c;想要进行智能化数字转型&#xff0c;不妨了解一下物联感知。 物联感知产品是利用物联网技术&#xff0c;实现对物理世界的感知、联接和智能化。物联感知产品一般由四个部分组成&a…

python中的pyc文件了解一下?

基本说明 pyc 文件是 Python 编译过的字节码文件。当你运行一个 Python 程序时&#xff0c;Python 解释器首先将源代码&#xff08;通常是 .py 文件&#xff09;编译成字节码。这个字节码是一种低级的、与平台无关的代码&#xff0c;它可以被 Python 虚拟机&#xff08;Python…

TCP的连接管理机制(三次握手与四次挥手)

目录为啥要三次握手与四次挥手三次握手syn 与 ack三次握手具体流程四次挥手注意为啥要三次握手与四次挥手 相比于UDP, TCP是有连接的, 这个连接就体现在这了. 三次握手就是TCP建立连接, 四次挥手就是TCP断开连接. 三次握手 握手是指通信双方进行网络交互. 三次握手就相当于…

记录上传文件异常 /tmp/tomcat... (No space left on device)

一&#xff0c;问题描述 用postman调用上传接口&#xff0c;基本每两次调用会有一次报错&#xff0c;如下 {"timestamp": "2023-04-11T03:00:15.4690000","status": 500,"error": "Internal Server Error","exceptio…

【活动】想对大学的自己说……

写在前面&#xff1a; 时间过得真的很快&#xff0c;眨眼间我们已经走过了这么多年的大学时光。回想起来&#xff0c;我们曾经有过无数的欢笑和泪水&#xff0c;有过无数的成功和挫败&#xff0c;但是这些经历都让我们变得更加坚强和成熟。如果现在有机会回到大学时光&#xff…

【LInux】进程间通信 -- 匿名管道

前言 我们在学习进程管理&#xff0c;进程替换时&#xff0c;都强调了进程的独立性&#xff0c;那进程间通信是什么&#xff1f;这好像和进程的独立性相矛盾吧&#xff1f; 那么今天&#xff0c;我们就来学习进程间通信&#xff0c;和第一种通信方式 – 管道 文章目录 前言一. …