网络 链路层

2023-11-17

数据链路层是计算机网络的底层,主要负责相邻设备之间的数据帧传输

在这里插入图片描述

链路层就是负责每一个相邻结点之间的数据传输,但是相邻设备之间也需要描述识别,主要是因为每一个设备都有可能有多个相邻的设备。这种识别在链路层中是通过MAC地址来实现的

MAC地址:mac地址就是网卡的硬件地址,用于识别相邻的设备,它是一个无符号6字节的整数 uint8_t mac[6]

以太网协议

以太网协议格式
在这里插入图片描述

目的地址和源地址:描述识别相邻的设备之间的数据传输
上层协议类型:网络层的协议类型,进行数据分用时选择上层的解析协议
数据:网络层的数据报文
CRC:数据帧尾,包含校验和,校验数据的一致性

如何获取对端的mac地址
一个主机,第一次通过网线连接到路由器上,然后发送DHCP请求,路由器收到之后就会进行响应,给主机分配IP地址,但是此时是不知道对方的mac地址,那我们如何获取呢?

ARP协议

ARP协议:ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议。主要功能是通过IP地址获取mac地址

ARP协议格式
在这里插入图片描述
以太网目的地址和以太网源地址:描述识别相邻的设备之间的数据传输
上层协议类型:网络层的协议类型,进行数据分用时选择上层的解析协议
硬件类型:链路层网络类型,1为以太网
协议类型:要转换的地址类型,0x0800为IP地址
硬件地址长度:对于以太网地址为6字节
协议地址长度:对于和IP地址为4字节
op字段:1表示ARP请求,op字段为2表示ARP应答

arp协议如何通过IP地址获取MAC地址
封装arp请求,然后将arp请求广播到整个局域网(私网)中,(以太网头中设置的对端mac地址为FFFFFFFFFFFF,在arp请求中描述自己的mac地址和ip地址,以及对端的IP地址和对端的mac地址空白),相邻设备收到arp请求之后,检测目的IP地址是否与自己相符,若相符则组织arp响应,填充自己的mac地址回复过去,若不符合则直接丢弃。
在这里插入图片描述

主机获取相邻设备mac地址之后,会缓存一段时间(默认为20 ~30分钟)

arp局域网欺骗攻击:恶意主机收到arp广播请求,伪装自己,告诉主机自己就是目标主机,将自己的mac地址发送过去。解决方案:防火墙白名单,直接列出受信任的相邻主机,如果发送过来的mac地址不在白名单上,则直接丢弃

MTU

MTU:MTU为最大传输单元,是链路层限制的数据帧大小(根据组网方式不同,默认数值也不同,以太网默认为1500B)

mtu对上层协议应用的影响

tcp协议:tcp在传输层进行三次握手时,进行MSS协商,也就是最大数据段大小协商,告诉对方自己的mss是多少,然后通信时取较小的一方作为最大传输数据段大小,每次从缓冲区中取出不大于mss大小数据进行传输。因此通常也说tco在传输层会自动进行数据分段。MSS = MTU - 最小IP报头长度 - 最小TCP报头长度;

udp协议:因为udp不考虑mss,只要数据段大小小于64k-28,就可以进行传输,但是这个数据大小若是大于mtu,则会在网络层进行数据分片
udp不保证数据可靠传输,一个udp报文若在网络层进行了分片,则传输过程中,一个分片出问题,整个udp报文都会被丢弃;也就意味着udp传输过程中,分片越多,在传输过程中出现问题的几率就越大
解决方案:程序员在应用层使用udp协议时最好考虑mss问题,将udp数据段按照计算的mss进行分包处理

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络 链路层 的相关文章

  • Markdown插入视频、mp3音频和gif图的语法

    总所周知 鄙人有一个专栏叫做 差生文具多 里面记录了一些工具的使用方法 以及使用工具时会遇到的一些问题 于是乎 之前就有一个朋友在群里问道 markdown如何插入视频 当时的我不会弄 然后就出现了下面这一幕 明天就弄 开整 然而这篇博客是

随机推荐

  • ARM64_VS2017 动态库 静态库编译 主程序调用环境搭建

    ARM64 VS2017 动态库 静态库编译 主程序调用环境搭建 1 打开Visual Studio Installer安装linux开发环境 2 配置linux环境 工具 gt 选项 gt 跨平台 gt 连接管理器 gt 添加 远程lin
  • mkdir()和mkdirs()区别

    mkdir 和mkdirs 区别如下 mkdirs 可以建立多级文件夹 mkdir 只会建立一级的文件夹 如下 new File tmp one two three mkdirs 执行后 会建立tmp one two three四级目录 n
  • 算法:回文字符串

    要求 给定一个字符串数组 判断出所有的回文字符串 class Solution public List
  • 预备打工人之SystemC学习 (五) 事务级建模库

    预备打工人之SystemC学习 TLM2 0基本概念 松散定时建模 近似定时模型 近似定时建模和松散定时建模的使用 发起者 目标 套接字和桥 DMI和调试传送结构 合并接口和套接字 名字空间和头文件 通用净核类 定义 构造 赋值和析构函数
  • JS栈内存和堆内存详解

    JS变量都存放在内存中 而内存给变量开辟了两块区域 分别为栈区域和堆区域 栈像个容器 容量小速度快 堆像个房间 容量较大 一 基本数据类型和引用数据类型存储方式 js中的数据类型可以分为基本类型和引用类型 基本类型是存在栈内存中的 引用类型
  • 在网页的JS中注入Hook

    在网页的JS中注入Hook Chrome浏览器的overrides的使用 itcoder cn 1 以下为Edge 的示例 1 本地新建一个目录 2 用浏览器关联该目录 选择目录后 浏览器上方会弹出一个横条提示确认 点击允许后即可关联 3
  • Java实现MD5加密及解密的代码实例分享

    原文地址 http www jb51 net article 86027 htm 如果对安全性的需求不是太高 MD5仍是使用非常方便和普及的加密方式 比如Java中自带的MessageDigest类就提供了支持 这里就为大家带来Java实现
  • muduo net库学习笔记4——事件驱动循环EventLoop、runInLoop和queueInLoop及对应唤醒

    首先总体情况 每个muduo网络库有一个事件驱动循环线程池 EventLoopThreadPool 线程池用在事件驱动循环上层 也就是事件驱动循环是线程池中的一个线程 每个TcpServer对应一个事件驱动循环线程池 每个线程池中有多个事件
  • jupyter notebook新建python3空白_jupyter notebook 启动出现404 302,web空白页无反应

    原来装过官网的python2 7和3 6 在这基础上装了anaconda3 启动jupyter notebook时出现404和302 复制url到猎豹和IE浏览器都没有反应 token复制也不行 后来卸载了官网的python2 7和3 6也
  • 区块链基础:交易模型解读

    1 比特币系统UTXO解读 UTXO unspent transaction output 未花费的交易输出 这是比特币交易中核心概念 UTXO是比特币拥有者的公钥锁定的一个数字 实际是是拥有者的公钥加密的数字 只有拥有者的私钥才能解开 U
  • go语言常用标准库(Time)

    go语言常用标准库 Time 1 Time 时间和日期是我们编程中经常会用到的 本文主要介绍了Go语言内置的time包的基本用法 1 1 1 time包 time包提供了时间的显示和测量用的函数 日历的计算采用的是公历 1 1 2 时间类型
  • 线性代数的本质(十一)——复数矩阵

    文章目录 复数矩阵 附录 极大线性无关组 向量叉积 复数矩阵 矩阵 A A A 的元素 a i j
  • 斐波那契数列的递归与非递归

    斐波那契数列 F n 1 n 0 1时 F n F n 1 F n 2 n gt 1时 1 递归实现 int Fib int n if n 1 n 0 return 1 return Fib n 1 Fib n 2 时间复杂度 O 2 n
  • idea常用的快捷键和常用设置

    目录 1 常用idea快捷键 2 查找相关快捷键 3 常用项目快捷键 设置字体 字体文本设置 切换主题 字符编码设置 IDEA模板 idea 目录分层 1 常用idea快捷键 1 全选 CTRL A 最简单 几乎所有的编辑器都有此功能 2
  • UISearchBar 和 UISearchDisplayController的使用

    之前比較少用UISearchBar 和 UISearchDisplayController 最近閱讀了一些有關資料 簡單做個筆記 1 UISearchBar 和 UISearchDisplayController 在IB中是可以直接使用的
  • Xshell连接VMware CentOS7

    https blog csdn net weixin 43593086 article details 90247751
  • Android屏幕适配

    一 一些概念的理解 屏幕尺寸 屏幕的对角线 如一台小米电视49寸说的就是电视对角线长度是49寸 1英寸 2 54厘米 分辨率 1920 1080指纵向1920个像素点 横向1080个像素点 1280 720同理 屏幕像素密度 DPI
  • 跟我说回家,却还在外面鬼混,python程序员教你用微信给对方定位

    跟我说回家 却还在外面鬼混 其实很多情侣之间存在很多这样的信任问题 不相信他 去查岗 可能会恶化两人之间的关系 比如跟我说回家了 但是想知道他是否真的回家了 打电话 打视频查岗吗 今天教大家一个利用微信来给对方定位的黑科技 实现方法 其实实
  • python连接clickhouse,并实现对表内数据的增删改查

    基本信息 clickhouse 基本介绍可以参考 https clickhouse com docs zh python 连接 clickhouse 可以参考 https clickhouse com docs en integration
  • 网络 链路层

    数据链路层是计算机网络的底层 主要负责相邻设备之间的数据帧传输 链路层就是负责每一个相邻结点之间的数据传输 但是相邻设备之间也需要描述识别 主要是因为每一个设备都有可能有多个相邻的设备 这种识别在链路层中是通过MAC地址来实现的 MAC地址