Linux(网络基础---数据链接层)

文章目录

  • 0. 前言
  • 1. 以太网的帧格式
  • 2. 再谈局域网原理
  • 3. 汇总整体通信流程,补全细节
    • 3-1 理解MAC地址和IP地址
    • 3-2 MTU
      • 1. 认识MTU
      • 2. MTU对IP协议的影响
      • 3. MTU对UDP协议的影响
      • 4. MTU对于TCP协议的影响
    • 3-3 ARP协议
      • 1. 基本概念
      • 2. ARP协议的作用
      • 3. ARP数据报的格式
      • 4. 简述arp协议的工作过程

0. 前言

上一篇我们了解了网络层;我们知道了网络层确定了数据报传送的逻辑路线;而具体数据链接层具体去落实的。
文章链接
https://blog.csdn.net/Dingyuan0/article/details/129626027?spm=1001.2014.3001.5502

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

1. 以太网的帧格式

在这里插入图片描述
(来自相关教材资料)

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

2. 再谈局域网原理

在这里插入图片描述

  • 我们H1主机给H6主机发送你好吗???;其它主机也可以收到,不过根据目的地址发现不是发给自己的就直接丢弃了。
    • 此时我们就可以把局域网理解为一份临界资源,大家都共享的。
  • 我们发数据时,别人也在发;就有可能发生数据碰撞问题。
    • 碰撞避免算法:发生碰撞后发送主机休息随机时间,然后再发送数据。
    • 发送数据时所有主机都可以收到,也包括发送数据的主机。发送主机就可以知道自己的数据是否发生碰撞了。
  • 局域网中主机当然是越少越好。
    • 主机少了不容易发生数据碰撞
  • 局域网的数据帧发送的时候,数据帧长度要适中。
    • 太短了了影响效率
    • 太长了容易发送数据碰撞

在这里插入图片描述
(图片来源于百度)
当然局域网中存在交换机

  • 它划分碰撞区域,减少影响。
    • 很容易理解,1号主机向5号主机发送数据出现了碰撞问题,发生在交换机左边;那么交换机就不让它通过;交换机右面部分还可以正常通信。

3. 汇总整体通信流程,补全细节

3-1 理解MAC地址和IP地址

  • 1 在网络转发的过程中,目的IP不会变。
    • IP地址描述的是路途总体的 起点 和 终点
    • 唐僧从东土大唐去往西天拜佛求经(源IP地址和目的IP地址)
  • 2 MAC帧报头会发生变化。
    • MAC地址描述的是路途上的每一个区间的起点和终点
    • 例如:唐僧从女儿国去往狮驼岭(源MAC地址和目的MAC地址)

3-2 MTU

1. 认识MTU

MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制。

  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位
  • 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU
  • 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)
  • 不同的数据链路层标准的MTU是不同的

2. MTU对IP协议的影响

分片过程网络层已经具体讲过了。

  • 由于数据链路层MTU的限制, 对于较大的IP数据包要进行分包
  • 将较大的IP包分成多个小包, 并给每个小包打上标签
  • 每个小包IP协议头的 16位标识(id) 都是相同的
  • 每个小包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片, 第3位来表示结束标记(当前是否是最后一个小包, 是的话置为1, 否则置为0)
  • 到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层
  • 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据

3. MTU对UDP协议的影响

  • 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报
  • 这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了

4. MTU对于TCP协议的影响

  • TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(Max
    Segment Size)
  • TCP在建立连接的过程中, 通信双方会进行MSS协商
  • 最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)
  • 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值
  • 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS
  • MSS的值就是在TCP首部的40字节变长选项中(kind=2)

查看硬件地址和MTU
在这里插入图片描述

3-3 ARP协议

1. 基本概念

虽然我们在这里介绍ARP协议, 但是需要强调, ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议

2. ARP协议的作用

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

  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃
  • 因此在通讯前必须获得目的主机的硬件地址

3. ARP数据报的格式

在这里插入图片描述

  • 注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的
  • 硬件类型指链路层网络类型,1为以太网
  • 协议类型指要转换的地址类型,0x0800为IP地址
  • 硬件地址长度对于以太网地址为6字节
  • 协议地址长度对于和IP地址为4字节
  • op字段为1表示ARP请求,op字段为2表示ARP应答

注意:
地址解析协议,即ARP(Address Resolution Protocol),是根据 IP地址 获取物理地址 的一个TCP/IP协议 。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

4. 简述arp协议的工作过程

  • 每个主机都会在自己的ARP缓冲区建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系

  • 当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,直接发送数据,如果没有,向本网段的所有主机发送ARP数据包(在这个过程中目的MAC地址填全1,也就是广播号),该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址

  • 当本网络的所有主机收到该ARP数据包时,首先检查数据包中目的MAC地址是否是广播号,如果是mac就交付给ARP;然后再看OP字段是否为一(op字段为1表示ARP请求,op字段为2表示ARP应答);是的话再看ARP中的IP地址是否是自己的IP地址。如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中。如果已经存在,则覆盖,然后将自己的MAC地址写入到ARP响应包中,告诉源主机自己是它想要找的MAC地址。

  • 源主机收到ARP响应包后,将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
    在这里插入图片描述
    (图片来源于百度)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT能够改变时代吗?一点点思考

都知道ChatGPT的出现对整个世界产生了剧烈的影响,前不久出的ChatGPT4更是在ChatGPT3.5的基础上展现了更强的功能。比如说同一个问题,ChatGPT3.5还是乱答的,ChatGPT4已经能给出正确解了。当然这只能说明技术是进步的。 虽然如此,很…

图像识别模型

一、数据准备 首先要做一些数据准备方面的工作:一是把数据集切分为训练集和验证集, 二是转换为tfrecord 格式。在data_prepare/文件夹中提供了会用到的数据集和代码。首先要将自己的数据集切分为训练集和验证集,训练集用于训练模型…

内存泄漏定位工具之 valgrind

内存泄漏检测工具 文章目录内存泄漏检测工具一、valgrind介绍1. memcheck2. cachegrind3. helgrind二、源码下载三、命令操作1.memcheck 工具四、虚拟机下使用1. x86编译2. 正常程序测试3. 申请内存不释放测试4. 内存越界的测试5. 读写已经释放的内存五、ARM平台使用1.交叉编译…

【web前端开发】CSS背景相关内容

文章目录背景颜色背景图片背景平铺背景位置background(复合属性)背景颜色 属性名:background-color 取值:表示颜色的取值都可以填写,如:rgb注意点: 背景颜色默认是透明的背景颜色不影响盒子的大小 实用技巧:在平时使用一些盒子时,可以给盒子设置背景颜色,这样可以看清盒子的…

网络编程套接字( TCP )

目录 1、实现一个TCP网络程序(单进程版) 1.1、服务端serverTcp.cc文件 服务端创建套接字 服务端绑定 服务端监听 服务端获取连接 服务端提供服务 服务端main函数命令行参数 服务端serverTcp.cc总代码 1.2、客户端clientTcp.cc文件 客户端main函数命令行…

Springboot Long类型数据太长返回给前端,精度丢失问题 复现、解决

前言 惯例,收到兄弟求救,关于long类型丢失精度的问题: 存在一个初学者不会,就会有第二个初学者不会,所以我出手。 正文 不多说,开搞。 如题, 后端返回的数据 给到 前端, Long类型数…

Flutter内阴影

前言 在前几天的业务需求中,UI给出的页面中有新拟态的按钮,就是带内部阴影的按钮,如果是利用css中box-shadow的属性,那么实现起来很简单,但是奈何Flutter中的Container的BoxShadow不具备inset内部阴影的功能&#xff…

【Linux内网穿透】使用SFTP工具快速实现内网穿透

文章目录内网穿透简介1. 查看地址2.局域网测试连接3.创建tcp隧道3.1. 安装cpolar4.远程访问5.固定TCP地址内网穿透简介 是一种通过公网将内网服务暴露出来的技术,可以使得内网服务可以被外网访问。以下是内网穿透的一些应用: 远程控制:通过内…

【头歌实验】课外作业一:开通ECS及使用Linux命令

文章目录一、完成下列实验并截图二、简要回答“课堂考核”内容三、在头歌、华为云或阿里云官网上,找出自己的课外学习资源,制定小组的课程学习计划、专业学习计划。四、习题1.10一、完成下列实验并截图 1、实验《ECS云服务器新手上路》 https://develo…

【LeetCode】1022. 从根到叶的二进制数之和、563. 二叉树的坡度

作者:小卢 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 1022. 从根到叶的二进制数之和 1022. 从根到叶的二进制数之和 题目描述: 给出一…

OpenCV入门(十八)快速学会OpenCV 17 直线检测

OpenCV入门(十八)快速学会OpenCV 17 直线检测1.霍夫直线变换概述2.霍夫变换原理3.操作实例3.1 HoughLines函数3.2 HoughLinesP函数作者:Xiou 1.霍夫直线变换概述 霍夫变换是一种在图像中寻找直线、圆形以及其他简单形状的方法。霍夫变换采用…

HTML5庆祝生日蛋糕烟花特效

HTML5庆祝生日蛋糕烟花特效 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>HTML5 Birthday Cake Fireworks</title><style>canvas {position: absolute;top: 0;left: 0;z-index: -1;}</style> </h…

css + js 超好看的消息提示

先看图 css 使用了layui&#xff0c;直接在官网下载引入即可 实现的功能 自定义消息弹出位置自定义消息类型自定义消息关闭时间消息弹出关闭动画 <style>.message {width: 300px;/* background-color: rgba(0, 0, 0, 0.2); */background-color: rgba(255, 255, 255…

Linux - 进程控制(创建和终止)

1.进程创建fork函数初识 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。返回值&#xff1a;子进程返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1getpid()获取子进程id&#xff0c…

【Linux】进程优先级 环境变量

进程优先级 环境变量 一、进程优先级1、基本概念2、查看以及修改系统进程的优先级3、一些其他的关于进程优先级的指令和函数调用4、与进程优先级有关的一些进程性质二、环境变量1、基本概念2、和环境变量相关的命令3、Linux中的常见环境变量介绍4、环境变量的组织方式以及在C代…

人脸识别经典网络-MTCNN(含Python源码实现)

人脸检测-mtcnn 本文参加新星计划人工智能赛道&#xff1a;https://bbs.csdn.net/topics/613989052 文章目录人脸检测-mtcnn1. 人脸检测1.1 人脸检测概述1.2 人脸检测的难点1.3 人脸检测的应用场景2. mtcnn2.1 mtcnn概述2.2 mtcnn的网络结构2.3 图像金字塔2.4 P-Net2.5 R-Net2…

蓝桥杯刷题冲刺 | 倒计时20天

作者&#xff1a;指针不指南吗 专栏&#xff1a;蓝桥杯倒计时冲刺 &#x1f43e;马上就要蓝桥杯了&#xff0c;最后的这几天尤为重要&#xff0c;不可懈怠哦&#x1f43e; 文章目录1.铁路与公路2.数字反转3.奖学金4.求阶乘1.铁路与公路 题目 链接&#xff1a; 4074. 铁路与公路…

论文阅读《Point NeRF:Point-based Neural Radiance Fileds》

论文地址&#xff1a;https://arxiv.org/abs/2201.08845 源码地址&#xff1a;https://xharlie.github.io/projects/project_sites/pointnerf 概述 体素神经渲染的方法生成高质量的结果非常耗时&#xff0c;且对不同场景需要重新训练&#xff08;模型不具备泛化能力&#xff09…

多线程 (六) wait和notify

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

Qt实践项目:仿Everything软件实现一个QtEverything

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…