Linux网络编程:数据链路层协议
目录
前言:
1.以太网
1.1.以太网帧格式
1.2.MTU(最大传输单元)
1.2.1.IP协议和MTU
1.2.2.UDP协议和MTU
1.2.3.TCP协议和MTU
2.ARP协议(地址解析协议)
2.1.ARP在局域网通信的角色
2.2.ARP报文格式
2.3.ARP报文的传输
前言:
为什么需要数据链路层
我们在之前的学习知道了网络层实现将数据报文从远端A主机经过若干个路由器的转发,最终到达目的主机B。
本质上就是数据从不同的局域网间进行转发直到转发到终点,比如家用主机转发到局域网中的家用路由器,家用路由器转发到局域网中的运营商路由器,最终在广域网这个“局域网”中转发到服务器!!!那么再按照相同的方式转发到目标主机B
那么我们如何进行局域网之间的转发呢?也就是实现家用主机转发到家用路由器呢?这时我们就需要构建数据链路层协议来实现数据报文在局域网内进行转发。
因此我们也可以看出:网络层时确定往哪里发送,实现路由和路由选择的。而数据链路层就是一个跑腿的,实现数据包的发送。
局域网通信
在局域网中,所有主机都是直连的,这时某一台主机发送信息,其他主机都能够接收到这个信息,所以我们进行局域网通信时需要特别指定接收方进行信息响应,而其他主机不进行消息响应。
MAC地址和IP地址
MAC地址(又称为---以太网地址):
- MAC地址用来识别数据链路层中相连的节点;长度为48位,及6个字节
- 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19) 在网卡出厂时就确定了,不能修改
- mac地址通常是唯一的
- IP地址作用:描述整个数据传输过程中的起点和终点(进行路径选择)
- MAC地址作用:数据传输过程中在同一个局域网之间每一跳的起点和终点
如何理解这两个地址呢?
我们知道在进行数据报文转发时,起始的IP地址可能为内网的IP,需要不断的通过局域网中的路由器转换成WAN口IP最后转为公网IP。而这个过程需要进行局域网中主机找到路由器,当前层路由器找到向上层转发的路由器,这时就需要MAC地址,进行局域网内的数据移动(因为局域网中的所有主机都能够读到局域网中发出的信息,那么这时我们进行对这个目的MAC地址进行比对)
交换机的引入
通过MAC地址我们实现了:信息被对应的MAC地址的主机接收,但是当同一个局域网内获取到大量的信息,这时会出现数据碰撞问题,因为局域网可以看做多台主机的一份“临界”资源。
- 局域网中,任何时刻只允许一台主机在向局域网中发送数据
- 如果同时发送,会产生局域网数据碰撞问题,这时我们通过碰撞检测和碰撞避免算法来解决
如图:当我们引入交换机,交换机左端为A、B、F、E,右端为C、D、G
场景一:
A主机信息发送给E主机,如图这时A主机直接可以转发给E主机
场景二:
A发送信息给G,因为A到G之间存在交换机,此时就需要通过交换机转发到右边
交换机的作用:划分碰撞域,减少数据碰撞的概率
交换机的引入,实现了数据不会直接扩散在整个局域网中,只有数据需要跨碰撞域才会通过交换机,那么就允许不同的局部(碰撞域)同时发送信息,增大了传输效率。
1.以太网
1.1.以太网帧格式
目的地址和源地址
表示当前数据报文需要发往局域网中的哪一个地址,当前的地址。这里的地址为mac地址
类型
表示当前的数据报文内存储的是IP数据包、还是ARP、RARP请求/应答
CRC
CRC-循环冗余校验码,用于校验数据传输过程中是否发生了更改、出错。
1.2.MTU(最大传输单元)
我们在Linux网络编程:网络层协议|IP-CSDN博客 曾经提及了MTU最大传输单元,即以太网帧的最大数据长度。实际上帧长度为:46~MTU大小,当以太网帧小于46时,会将他补齐至少为46字节,当以太网帧大于MTU时,会进行切片成适合的以太网帧。
这时我们联想到了快递的包裹大小也是有范围的,不会过于小也不会过于大。
1.2.1.IP协议和MTU
在IP协议中我们对过长的数据报文进行分片,最大有效载荷 = MTU - IP协议报头,并且将对应的报头标志位设为切片的状态,具体可以看Linux网络编程:网络层协议|IP-CSDN博客 这篇博客!!!
1.2.2.UDP协议和MTU
我们知道UDP协议是不可靠的传输层协议,他没有UDP的确认应答机制和超时重传机制,所以我们如果使用UDP协议进行通信时,报文大小过大,进入IP层就会出现切片成若干个UDP报文,那么这样数据丢包的可能性增加。所以UDP协议的 最大有效载荷大小 = MTU - UDP报头 - IP报头
1.2.3.TCP协议和MTU
同理我们知道TCP协议的最大有效载荷大小为: 最大有效载荷大小 = MTU - TCP报头 - IP报头,这个值也称为MSS。
在TCP三次握手期间,双方会进行各自主机的MTU大小进行协商(协议可能不同),双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值,并且选取最小的MSS值作为通信时的MTU大小
这里我们就需要注意加粗字段的内容来理解:“有效载荷”即可
2.ARP协议(地址解析协议)
2.1.ARP在局域网通信的角色
我们在前言中局域网通信模块,学习到了数据传输是需要MAC地址来实现的,那么对于发送端,他知道自己的源MAC地址,但是他怎么知道接收端的MAC地址呢?所以为了知道局域网内某个主机的MAC地址,我们实现了ARP协议,用来建立主机IP地址和MAC地址的映射关系。
- 通信开始初期,在局域网内发送一条广播信息,内容大致为:我是主机A,我的MAC地址是MAC-A,我要和主机B进行通信,我知道你的IP是IP-B,请告诉我你的MAC-B
- 这时在局域网域中,所有主机都能够接收到这个信息,然后用自己的IP地址和IP-B匹配
- 最终其他的主机不接受这个报文,只有B主机接收,并返回MAC-B
- 这时我们就能够通过IP地址来找到对应的MAC地址,进而完成通信
并且在实际通信中,ARP协议完成获取主机MAC地址后,会将其进行缓存,也就是不需要一致用过发送ARP请求报文来获取MAC地址,直接在这个缓存表获取即可。
值得一提的是:为了应对某一台主机的网卡设备更改导致MAC地址改变,所以ARP缓存表定期更新,重新发送ARP请求
这时我们回顾以太网帧格式:在图中我们就看到以太网报文中的有效载荷可以为IP报文、ARP请求/应答、RARP请求/应答。
2.2.ARP报文格式
我们已经知道了ARP报文可以作为以太网报文的有效载荷,发到局域网中进行IP地址到MAC地址的映射。如图为:发送ARP报文的以太网格式:
那么接下来我们来学习一下ARP报文的字段!!!
- 硬件类型指链路层网络类型,1为以太网
- 协议类型指要转换的地址类型,0x0800为IP地址
- 硬件地址长度内填6字节
- 协议地址长度内填4字节
- op字段为1表示ARP请求,op字段为2表示ARP应答
2.3.ARP报文的传输
- 首先完善ARP报文,然后通过MAC帧进行封装,默认以太网首部(报头)的目的地址为:FFFFFFF,表示传输给所有主机。并且帧类型设为
- 当发出ARP请求的报文进入局域网时,所有在局域网的主机都可以接收到,当接收到信息后,解包掉以太网首部,读取当前ARP报文的OP字段,如果是请求报文,那么接下来就分析IP地址是否符合
- 如果不符合,直接丢包。如果符合,那么就进行构建ARP应答报文,这时我们也获得了以太网首部的源MAC地址,接着进行以太网帧的构建并发送,完成IP地址和MAC地址的映射。
以上内容即为ARP地址解析,这里我们看出局域网中的任何一台主机都可能接收到ARP请求或者是ARP回应,并且ARP地址解析正是IP地址和MAC地址的互相映射,所以IP地址、MAC地址在实际网络通信都具有各自重要的意义……
相关文章:
Linux网络编程:数据链路层协议
目录 前言: 1.以太网 1.1.以太网帧格式 1.2.MTU(最大传输单元) 1.2.1.IP协议和MTU 1.2.2.UDP协议和MTU 1.2.3.TCP协议和MTU 2.ARP协议(地址解析协议) 2.1.ARP在局域网通信的角色 2.2.ARP报文格式 2.3.ARP报文…...
企业估值的三种方法
估值模型三剑客—DCF、P/E、EV /EBITDA 三种主要估值模型的优缺点: DCF 优点:通过对自由现金流的折现计算,反映了公司内在价值的本质,是最重要与最合理的估值方法。 缺点:未来自由现金流的估计不准确,受折现率影响…...
比亚迪正式签约国际皮划艇联合会和中国皮划艇协会,助推龙舟入奥新阶段
6月5日,比亚迪与国际皮划艇联合会、中国皮划艇协会在深圳共同签署合作协议,国际皮划艇联合会主席托马斯科涅茨科,国际皮划艇联合会秘书长理查德派蒂特,中国皮划艇协会秘书长张茵,比亚迪品牌及公关处总经理李云飞&#…...
宏集Panorama SCADA:个性化定制,满足多元角色需求
前言 在考虑不同人员在企业中的职能和职责时,他们对于SCADA系统的需求可能因其角色和工作职责的不同而有所差异。在SCADA系统的设计和实施过程中,必须充分考虑和解决这种差异性。 为了满足不同人员的需求, 宏集Panorama SCADA平台具备灵活的功能和定制…...
聪明人社交的基本顺序:千万别搞反了,越早明白越好
聪明人社交的基本顺序:千万别搞反了,越早明白越好 国学文化 德鲁克博雅管理 2024-03-27 17:00 作者:方小格 来源:国学文化(gxwh001) 导语 比一个好的圈子更重要的,是自己优质的能力。 唐诗宋…...
图片和PDF展示预览、并支持下载
需求 展示图片和PDF类型,并且点击图片或者PDF可以预览 第一步:遍历所有的图片和PDF列表 <div v-for"(data,index) in parerFont(item.fileInfo)" :key"index" class"data-list-item"><downloadCard :file-inf…...
图论第5天
127.单词接龙 需要cout看一下过程。 #include <iostream> #include <queue> #include <stack> #include <unordered_map> #include <unordered_set> #include <vector> using namespace ::std;class Solution { public:int ladderLength(…...
Java开发-面试题-0004-HashMap 和 Hashtable的区别
Java开发-面试题-0004-HashMap 和 Hashtable的区别 更多内容欢迎关注我(持续更新中,欢迎Star✨) Github:CodeZeng1998/Java-Developer-Work-Note 技术公众号:CodeZeng1998(纯纯技术文) 生活…...
Swift 序列(Sequence)排序面面俱到 - 从过去到现在(一)
概览 在任何语言中对序列(或集合)元素的排序无疑是一种司空见惯的常规操作,在 Swift 语言里自然也不例外。序列排序看似简单,实则“暗藏玄机”。 要想真正掌握 Swift 语言中对排序的“各种姿势”,我们还得从长计议。不如就先从最简单的排序基本功开始聊起吧。 在本篇博…...
redis 04 redis结构
1.客户端...
【原创】springboot+mysql农业园区管理系统设计与实现
个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…...
web前端 孙俏:深度探索与实战之路
web前端 孙俏:深度探索与实战之路 在这个数字化、信息化的时代,web前端技术以其独特的魅力,吸引着越来越多的开发者投身其中。今天,我们将跟随孙俏的脚步,一同探索web前端的深度与广度,揭开其神秘的面纱。…...
opencv实战小结-银行卡号识别
实战1-银行卡号识别 项目来源:opencv入门 项目目的:识别传入的银行卡照片中的卡号 难点:银行卡上会有一些干扰项,如何排除这些干扰项,并且打印正确的号码是一个问题 最终效果如上图 实现这样的功能需要以下几个步骤…...
Windows API 开发桌面应用程序,在窗口按下鼠标左键不放可以拖图,并且拖图期间鼠标图标变成手掌
在Windows API中,要实现鼠标左键按下并拖动以移动窗口中的某个图形,并且同时改变鼠标图标为“手掌”形状(这通常指的是“拖动”或“移动”的图标),你需要执行几个步骤。 以下是一个基本的步骤指南,用于在W…...
Docker的网络管理
文章目录 一、Docker容器之间的通信1、直接互联(默认Bridge网络)1.1、Docker安装后默认的网络配置1.2、创建容器后的网络配置1.2.1、首先创建一个容器1.2.2、ip a 列出网卡变化信息1.2.3、查看新建容器后的桥接状态 1.3、容器内安装常见的工具1.4、容器间…...
【数据结构】平衡二叉树左旋右旋与红黑树
平衡二叉树左旋右旋与红黑树 平衡二叉树 定义 平衡二叉树是二叉搜索树的一种特殊形式。二叉搜索树(Binary Search Tree,BST)是一种具有以下性质的二叉树: 对于树中的每个节点,其左子树中的所有节点都小于该节点的值…...
2024蓝桥杯初赛决赛pwn题全解
蓝桥杯初赛决赛pwn题解 初赛第一题第二题 决赛getting_startedbabyheap 初赛 第一题 有system函数,并且能在bss上读入字符 而且存在栈溢出,只要过掉check函数即可 check函数中,主要是对system常规获取权限的参数,进行了过滤&…...
大模型多轮问答的两种方式
前言 大模型的多轮问答难点就是在于如何精确识别用户最新的提问的真实意图,而在常见的使用大模型进行多轮对话方式中,我接触到的只有两种方式: 一种是简单地直接使用 user 和 assistant 两个角色将一问一答的会话内容喂给大模型,…...
【无标题】1877A
足球锦标赛中有 n支球队。每对队伍匹配一次。每场比赛结束后,Pak Chanek收到两个整数作为比赛结果,即两队在比赛中得分的数量。一支球队的效率等于本队每场比赛的总进球数减去对手每场比赛的总进球数。 比赛结束后,Pak Dengklek会计算每支球…...
直播美颜工具解析:美颜SDK核心技术与性能优化方法
本篇文章,小编将深入解析直播美颜SDK的核心技术及其性能优化方法,以期为开发者提供有价值的参考。 一、美颜SDK核心技术 1.实时人脸检测与识别 美颜SDK的核心技术之一是实时人脸检测与识别。这项技术基于深度学习算法,能够快速、准确地识别…...
YOLOv10开源,高效轻量实时端到端目标检测新标准,速度提升46%
前言 实时目标检测在自动驾驶、机器人导航、物体追踪等领域应用广泛,近年来,YOLO 系列模型凭借其高效的性能和实时性,成为了该领域的主流方法。但传统的 YOLO 模型通常采用非极大值抑制 (NMS) 进行后处理,这会增加推理延迟&#…...
如何解决访问网站时IP被限制的问题?
在互联网上,用户可能会面临一个令人困扰的问题——当尝试访问某个特定的网站时,却发现自己的IP地址被该网站屏蔽。 IP地址被网站屏蔽是一个相对常见的现象,而导致这种情况的原因多种多样,包括恶意行为、违规访问等。本文将解释IP地…...
springboot城市美发管理系统的设计与实现-计算机毕业设计源码71715
摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对城市美发管理系统等问题,对城市…...
微软 Windows 10 22H2 发布可选更新 19045.4474,修复窗口显示问题等
微软今天面向 Windows 10 22H2 版本,发布了 KB5037849 非安全可选更新,用户安装后版本号升至 Build 19045.4474。 IT之家 5 月 30 日消息,微软今天面向 Windows 10 22H2 版本,发布了 KB5037849 非安全可选更新,用户安…...
代码随想录算法训练营第五十三天 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
309.最佳买卖股票时机含冷冻期 视频讲解:动态规划来决定最佳时机,这次有冷冻期!| LeetCode:309.买卖股票的最佳时机含冷冻期_哔哩哔哩_bilibili代码随想录 解题思路 1. dp[i][0] 第i天持有股票的状态 dp[i][1]第i天不持股的状…...
Polar Web【中等】反序列化
Polar Web【中等】反序列化 Contents Polar Web【中等】反序列化思路&探索EXPPHP生成PayloadGET传递参数 运行&总结 思路&探索 一个经典的反序列化问题,本文采用PHP代码辅助生成序列字符串的方式生成 Payload 来进行手动渗透。 打开站点,分析…...
测试工具链
缺陷管理 bug管理工具 devops---项目管理--缺陷管理 bug管理地址 https://devsecops.mychery.com:8443/chery/project?filterROLE&statusACTIVE bug管理环境 采用公司的devops平台,对每个项目的bug进行管理。目前在使用 接口测试和服务端性能测试 工具…...
【求助】ansible synchronize 问题
求助贴,不是解答贴哈 最近把一台服务器从centos7.9升级到alibaba cloud linux3之后,出现了一个ansible的问题。 版本是ansible8.3.0ansible-core-2.15.3,在使用synchronize模块时,我使用了别名(比如web1)会…...
sql server 把表的所有的null改为0,不要限制某列
DECLARE tableName NVARCHAR(256) Linear -- 替换为你的表名 DECLARE sql NVARCHAR(MAX) SELECT sql UPDATE tableName SET COLUMN_NAME 0 WHERE COLUMN_NAME IS NULL; FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME tableName AND TABLE_SCHEM…...
【C#】WinForm关闭新(二级)界面使主程序关闭
参考视频:https://www.bilibili.com/video/BV1JY4y1G7jo?p14&vd_source1c57ab1b2e551da5b65c0dfb0f05a493 1.背景介绍 主程序界面,点击弹出二级界面(同时隐藏主界面),不做任何设置,这时关闭二级界面…...
bing网站收录/网站优化策略分析论文
简单的问答已经实现了,那么问题也跟着出现了,我不能确定问题一定是"你叫什么名字",也有可能是"你是谁","你叫啥"之类的,这就引出了人工智能中的另一项技术:自然语言处理(NLP) : 大概意思就是 让计算机明白一句话要表达的意思,NLP就相当于计算机在…...
个人可以做商城网站/新网站排名优化怎么做
可以在游戏中添加或者删除物品及方块,包括mod附加的东西。保存和读取某个时间点背包机身上的东西。创建一个可以无限使用的物品和工具。可以用来检测mod的功能,创建巨大的用来生存的世界。控制界面开关:在背包界面按“o”可以控制TMI界面的开…...
东莞做企业网站/推广app赚钱的平台
进入当前项目目录 cd android adb reverse tcp:8081 tcp:8081 cd .. npm start gradlew.bat assembleRelease --console plain (自己最常用的,只打包不安装) gradlew assembleRelease (打包加自动安装)...
网站 外包方案/怎么创建网站平台
题目描述 小明很喜欢3和5这两个数字,他将能被3或5整除的数叫做美丽数。现在给你一个整数N(1<N<100000),你能告诉小明第N个美丽数是多少吗? 输入 输入包含多组测试数据。每组输入一个整数N(1<N<…...
wordpress 换空间 换域名/欧美seo查询
最近一些项目开始使用机器学习和神经网络,有一个项目是对从搜索引擎抓回来的文字判断倾向性,看文章是正面的还是负面的(抱怨、怀疑、责备),没办法,我们所服务的互联网金融最近就是一个被高度关注的领域。之前开发小组使用 R 语言基…...
网络运维网站/软文推广是什么
多家市调机构近日预估二季度印度智能手机市场发生重大变化,中国手机企业的市场份额或出现一定幅度的下滑,而三星和苹果这两家手机企业可望趁机抢夺市场。一季度的数据显示,中国手机企业在印度市场已取得绝对优势,市调机构Canalys公…...