【linux】网络基础 ---- 数据链路层

用于两个设备(同一种数据链路节点)之间进行传递

数据链路层解决的问题是:直接相连的主机之间,进行数据交付

1. 认识以太网

"以太网" 不是一种具体的网络, 而是一种技术标准: 既包含了数据链路层的内容, 也包含了一些物理层的内容

以太网是当前应用最广泛的局域网技术, 和以太网并列的还有令牌环网, 无线LAN等

2. 以太网帧格式

  • 源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP
  • 帧末尾是CRC校验码

3. 认识MAC地址

  1. MAC地址用来识别数据链路层中相连的节点
  2. 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  3. 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突, 也有些网卡支持用户配置mac地址)
  4. MAC地址描述的是路途上的每一个区间的起点和终点

注意:

mac地址只在局域网中有效(数据交给路由器是需要重新解包封装的,mac地址会改变)

4. 认识MTU

(一)MTU的基本概念

  1. MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层产生的限制.
  2. 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位
  3. 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU
  4. 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片
  5. 不同的数据链路层标准的MTU是不同的

(二)MTU对IP协议的影响

由于数据链路层MTU的限制, 对于较大的IP数据包要进行分包

将较大的IP包分成多个小包, 并给每个小包打上标签

每个小包IP协议头的 16位标识(id) 都是相同的

每个小包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片, 第3位来表示结束标记(当前是否是最

后一个小包, 是的话置为1, 否则置为0)

到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层

一旦这些小包中任意一个小包丢失, 接收端的重组就会失败,对ip协议无影响

(三)MTU对UDP协议的影响

一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报.

这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在

网络层被分片, 整个数据被丢失的概率就大大增加了

(四)MTU对于TCP协议的影响

TCP的一个数据报也不能无限大, 还是受制于MTU

TCP的单个数据报的最大消息长度, 称为MSS

TCP在建立连接的过程中(即三次握手), 通信双方会进行MSS协商

最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的

MTU)

双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值

然后双方得知对方的MSS值之后, 选择较小的作为最终MSS

MSS的值就是在TCP首部的40字节变长选项中

5. 查看硬件地址和MTU

使用ifconfig命令, 即可查看ip地址, mac地址, 和MTU

使用ifconfig命令, 即可查看ip地址, mac地址, 和MTU

6. ARP协议

ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议

(一) ARP协议的作用

通过IP地址,知道它的 MAC地址

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址(MAC地址)

数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃

因此在通讯前必须获得目的主机的硬件地址

(二)ARP数据报的格式

  • 硬件类型指链路层网络类型,1为以太网
  • 协议类型指要转换的地址类型,0x0800为IP地址
  • 硬件地址长度对于以太网地址为6字节
  • 协议地址长度对于和IP地址为4字节

(三)ARP协议的工作流程

  1. 源主机发出ARP请求,询问目标IP地址是MAC地址, 并将这个请求广播到子网中(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播);
  2. 目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的MAC地址填写在应答包中
  3. 每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址

7. DNS

DNS是一整套从域名映射到IP的系统

(一)DNS背景

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆

于是发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系

DNS系统:一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系

如果新计算机接入网络, 将这个信息注册到数据库中

用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址

至今, 我们的计算机上仍然保留了hosts文件. 在域名解析的过程中仍然会优先查找hosts文件的内容

(二)指令查找hosts文件内容

  • cat /etc/hosts

查找 hosts文件的内容

8. 域名简介

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称

举例 域名使用

www.baidu.com

com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.

baidu: 二级域名, 公司名

www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格

式, 来表示主机支持的协议

9. ICMP协议

(一)了解ICMP协议

ICMP协议是一个 网络层协议

一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因

(二)ICMP功能

ICMP主要功能包括:

确认IP包是否成功到达目标地址

通知在发送过程中IP包被丢弃的原因

注意:

  1. ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议
  2. ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6

10. ping 指令

  • ping + 域名

注意:

此处 ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址

ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期)

ping命令会先发送一个 ICMP Echo Request给对端

对端接收到之后, 会返回一个ICMP Echo Reply

ping 命令是基于ICMP协议,属于网络层,不关系端口号(不会到达应用层)

11. NAT技术

(一)NAT技术背景

NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能

NAT能够将私有IP对外通信时转为公网IP. 也就是就是一种将私有IP和公网IP相互转化的技术方法

(二)NAT IP转换过程

将私有IP转换从公网IP

(三)NAPT

将公网IP转换成私有IP

这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项

(四)NAT技术的缺陷

NAT依赖这个转换表, 所以有诸多限制:

  1. 无法从NAT外部向内部服务器建立连接
  2. 装换表的生成和销毁都需要额外开销;
  3. 通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开

(五)NAT和代理服务器

路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程

代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端

举例:通过校园网上网

注意:

  1. 学校服务器在这里就充当代理服务器,客户端的请求必须通过代理服务器,由代理服务器发送到公网上,得到的回应也必须先经过代理服务器,由代理服务器将回应传给相应的主机
  2. 这种代理服务器是正向代理的

举例:大公司回应多个客户端请求

注意:

  1. 这里的代理服务器并不对客户端的报文进行回应,而是把它分配给处理这些报文的服务器
  2. 这种代理服务是反向代理的

举例内网穿透:

这种代理服务器属于反向代理的

那么NAT和代理服务器的区别:

  1. 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器
  2. 从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层
  3. 从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网
  4. 从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上

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

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

相关文章

递归(二)---力扣22括号生成,力扣78求子集

22. 括号生成https://leetcode.cn/problems/generate-parentheses/ 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:["((()))&quo…

数据分布之指数分布(sample database classicmodels _No.10)

数据分布之指数分布(sample database classicmodels _No.10) 准备工作,可以去下载 classicmodels 数据库具体如下 点击:classicmodels 也可以去 下面我的博客资源下载 https://download.csdn.net/download/tomxjc/88685970 文章…

C++语言之类与对象1

什么是类 类是一种抽象的数据类型,作为对象的蓝图或模板,它将具有相同属性和行为的对象进行统一抽象封装。其中属性描述对象的特征,如 “汽车” 类中的颜色、品牌等;方法则定义对象可执行的操作,像 “汽车” 类的启动、…

Elasticsearch 和 Kibana 8.16:Kibana 获得上下文和 BBQ 速度并节省开支!

作者:来自 Elastic Platform Product Team Elastic Search AI 平台(Elasticsearch、Kibana 和机器学习)的 8.16 版本包含大量新功能,可提高性能、优化工作流程和简化数据管理。 使用更好的二进制量化 (Better Binary Quantizatio…

【Golang】——Gin 框架简介与安装

文章目录 1. Gin 框架概述1.1 什么是 Gin 框架?1.2 为什么选择 Gin?1.3 使用场景 2. 安装 Go 与 Gin 框架2.1 安装 Go 语言环境2.2 初始化 Go 项目2.3 安装 Gin 框架 3. 编写第一个 Gin 应用3.1 Gin 最小化示例代码代码解读3.2 运行程序3.3 测试服务 4. …

RGB与YCbCr转换算法

目录 RGB与YCbCr转换算法RGB与YCbCr色域介绍RGB模型YCbCr色域简介YCbCr的应用YUV 和 YCbCr 的区别 色彩转换公式 RGB 转 YCbCr 实现RGB 转 YCbCr 的 Matlab 实现RGB 转 YCbCr 的 FPGA 实现 YCbCr 转 RGB 实现YCbCr 转 RGB 的 Matlab 实现YCbCr 转 RGB 的 FPGA 实现 RGB与YCbCr转…

WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇

WebRTC视频 01 - 视频采集整体架构 WebRTC视频 02 - 视频采集类 VideoCaptureModule WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇 WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇(本文) WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇 一、前言…

MAC上的Office三件套报53错误解决方案(随笔记)

目录 现象原因解决方式1. 可视化2. 命令行 参考链接 现象 最近Mac Mini M4非常热门,我也种草买了一台丐中丐版本来体验一下。 在安装Office三件套后,遇到了一个53的错误: Run-time error 53:File not found: Library/Application Support/A…

人工智能与SEO优化中的关键词策略解析

内容概要 在当今数字化快速发展的时代,人工智能(AI)与搜索引擎优化(SEO)的结合正变得愈发重要。关键词策略是SEO优化的一项基础工作,它直接影响到网站的可见性和流量。通过运用智能算法,企业能…

【数据库】如何保证数据库迁移过程中数据的一致性?

在数据库迁移过程中,保证数据的一致性是非常重要的,尤其是在涉及到多个表、多个数据库或分布式系统的情况下。以下是一些确保数据一致性的最佳实践和方法: 1. 备份数据 在开始迁移之前,进行全面的数据备份是确保数据一致性的第…

Kubernetes 10 问,测测你对 k8s 的理解程度

Kubernetes 10 问 假设集群有 2 个 node 节点,其中一个有 pod,另一个则没有,那么新的 pod 会被调度到哪个节点上? 应用程序通过容器的形式运行,如果 OOM(Out-of-Memory)了,是容器重…

Spring:IoC/DI加载properties文件

Spring框架可以通过Spring的配置文件完成两个数据源druid和C3P0的配置(Spring:IOC/DI配置管理第三方bean),但是其中包含了一些问题,我们来分析下: 这两个数据源中都使用到了一些固定的常量如数据库连接四要素&#xf…

时钟之CSS+JS版

写在前面 此版本绘制的时钟基于CSSJS模式。 优点操作简单&#xff0c;缺点当然是不够灵活。下一篇会基于HTML5的canvas标签&#xff0c;使用JS绘制。会更灵活&#xff0c;元素更加丰富。 HTML代码 <div class"box"><article class"clock"><…

云计算虚拟化-kvm创建虚拟机

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 虚拟化&#xff0c;简单来说就是把一台服务器/PC电脑&#xff0c;虚拟成多台独立的虚拟机&#xff0c;每台虚拟机之间相互隔…

<QNAP 453D QTS-5.x> 日志记录:在 Docker 中运行的 Flask 应用安装 自签名 SSL 证书 解决 Chrome 等浏览器证书安全

原因&#xff1a;Chrome 不信任 ssc 证书 使启用了 HTTPS&#xff0c;即使有使用 自签名证书 (self-signed certificate 非由可信的证书颁发机构 【CA&#xff0c;Certificate Authority】签发的&#xff09;。浏览器 Chrome 默认不信任自签名证书&#xff0c;也会报 NET::ERR_…

模板——实现泛型编程的有力武器

模板——实现泛型编程的有力武器 我们为什么需要模板&#xff1f;模板 前言&#xff1a;关于模板&#xff0c;相信大家都有所而闻&#xff0c;以下是我对C模板的个人看法&#xff0c;希望能够帮助到你们呀&#xff01; 我们为什么需要模板&#xff1f; 请到大家看这一段代码&a…

针对git、giteeVSCode连接的使用 || Live Share插件使用

1.下载git 链接 打开终端&#xff0c;桌面鼠标右键 2.配置密钥 登录gitee。 设置密钥 查看官方文档 跟着教程 复制最后的输出进行密钥添加 验证是否添加成功 3.创建&连接远程仓库 创建仓库 git终端进行配置 远程仓库克隆到本地 桌面终端clone,克隆他人|自己的仓库到本地…

OpenGL ES 文字渲染进阶--渲染中文字体

旧文 OpenGL ES 文字渲染方式有几种? 一文中分别介绍了 OpenGL 利用 Canvas 和 FreeType 绘制文字的方法。 无论采用哪种方式进行渲染,本质上原理都是纹理贴图:将带有文字的图像上传到纹理,然后进行贴图。 渲染中文字体 利用 Canvas 绘制中文字体和绘制其他字体在操作方式上…

c# 调用c++ 的dll 出现找不到函数入口点

今天在调用一个设备的dll文件时遇到了一点波折&#xff0c;因为多c 不熟悉&#xff0c;调用过程张出现了找不到函数入口点&#xff0c;一般我们使用c# 调用c 文件&#xff0c;还是比较简单。 [DllImport("AtnDll2.dll",CharSet CharSet.Ansi)]public static extern …

贴代码框架PasteForm特性介绍之markdown和richtext

简介 PasteForm是贴代码推出的 “新一代CRUD” &#xff0c;基于ABPvNext&#xff0c;目的是通过对Dto的特性的标注&#xff0c;从而实现管理端的统一UI&#xff0c;借助于配套的PasteBuilder代码生成器&#xff0c;你可以快速的为自己的项目构建后台管理端&#xff01;目前管…