当前位置: 首页 > ai >正文

-MAC桢-

MAC桢和IP的关系:

主机A想跨网络和B通信需要IP地址进行路由选择,但一个局域网,比如路由器进行路由选择之前,首先要将数据包发送给路由器B,也就是局域网通信也就是同一个网段的主机进行通信,所以必须通过mac地址来进行转发。

IP地址是用来进行路劲选择,比如路由器B是交给路由器A还是路由器C,MAC地址是用来局域网通信的,比如主机A和路由器B通信。形象的说法也就是,IP地址就是用来索引路由器之间的转发和标示主机的唯一性,MAC地址用来索引和路由器处于同一个网段的主机和主机之间内的通信。

一 报头格式

1. 如何解包和分用

MAC桢采用定长报头:

解包:起始去掉6+6+2=14字节,尾部去掉4字节,得到正文。

分用:类型字段标示交付给上层对应的协议。

目的地址:目的MAC地址

源地址:源MAC地址

类型:表示向上交付给IP层还是ARP/RARP层

CRC:用来校验MAC桢报文是否损坏

二 模拟局域网通信

假设知道对方主机的MAC地址

主机A自顶向下把网络报文封装成mac桢,给处于同一个局域网所有主机发送数据包,当B收到数据包,解包得到mac地址和自己不一样丢弃,主机E收到数据包比对mac桢是一样的在根据类型字段0800向上交付给IP层,自此就完成局域网内的通信。

1.  任何一个时间段只能有一个主机发送数据包,如果有多台主机同时发送数据包,数据就会混在一起,然后进行碰撞检测,执行碰撞避免算法,各自休眠一段时间在进行重新发送,类似TCP超时重传机制,所以碰撞避免算法的结果就是只能有一台主机进行通信,否则进行休眠重传。

2.  如果一个子网内主机越来越多,数据发生碰撞的几率就越大,频繁执行碰撞检测/碰撞避免算法就导致了数据传输速率变慢,比如学校开运动会,一个操场占几千人,同时发送数据进行发面积碰撞,就导致了上不了网的情况,换句话说,一个局域网就是一个大的碰撞域,那么怎么缓解这种主机越来越多,数据频繁碰撞的问题呢?下面引入交换机。

三 交换机

交换机的主要作用就是用来把一个局域网的碰撞域划分成若干的小的碰撞域达到减少数据之间碰撞的冲突,也就是说如果有2个已经被交换机划分好的碰撞域,他们之间相互通信是可以并行的。

下面看一张图:

当某台主机首次通信时,交换机会记录当前主机的mac地址,下次在进行通信,比如交换机首次记录A的mac地址,A再次通信,如果目的mac地址是B,则不需要往交换机右边的碰撞域发送数据包,同时C也能给E/F发送数据,进而减少了数据碰撞,如果A给右边的碰撞域发送数据,那就不会给B/D发送数据包,而是给右边的碰撞域所有的主机发送数据包。

四 MTU/MSS

1. MAC桢除了报头字段是固定的,有效数据一般是的46~1500,所以有效数据最大能承受的大小为1500,简称MTU,包含传输层/网络层/应用层协议的报头字段。

2. 最少为46字节,TCP/IP报头最少占20+20(不带选项),剩下的6字节填充无效数据,到了IP层,IP层有16位总长度标记IP报文的大小,除去这个剩余的就是无效数据直接丢弃即可。

3. 在传输层,比如TCP单次发送的有效数据的大小不能超过1460,减去后续的TCP/IP报头,避免在IP层重新分片和后续组装,因为受MTU的影响。这种不引起分片的单个有效数据的大小简称MSS。

4. TCP三次握手的时候,双方会进行MSS的协商,在可变选项指定,因为双方的MTU可能不一样,最终双方使用的MSS取最小的那一个来进行后续数据包发送的大小避免数据包拆分。

http://www.xdnf.cn/news/5563.html

相关文章:

  • Qt中解决UI线程阻塞导致弹窗无法显示的两种方法
  • Linux复习笔记(三) 网络服务配置(web)
  • Flask如何读取配置信息
  • FFmpeg 项目中的三大核心工具详解
  • 【HarmonyOS 5】鸿蒙App Linking详解
  • 【Web/HarmonyOS】采用ArkTS+Web组件开发网页嵌套的全屏应用
  • labview硬件采集卡驱动安装
  • Spark目前支持的部署模式。
  • 【ZYNQ Linux移植】5-根文件系统移植
  • C++匿名函数
  • Babylon.js学习之路《三、创建你的第一个 3D 场景:立方体、球体与平面》
  • MyBatis 动态 SQL 核心标签教程:_if_, _where_, _foreach_
  • 第六节第一部分:认识抽象类及其好处
  • 字节高效图像定制生成模型框架:DreamO论文速读
  • 【数据结构】map_set前传:二叉搜索树(C++)
  • Window、CentOs、Ubuntu 安装 docker
  • 学习黑客5 分钟深入浅出理解Windows System Configuration
  • 【免费】2005-2018年各省人均财政收支数据
  • Qt for Android申请允许管理所有文件权限
  • n8n 修改或者智能体用文档知识库创建pdf
  • SSRF相关
  • 单片机ESP32天气日历闹铃语音播报
  • 《Python星球日记》 第66天:序列建模与语言模型
  • 【类拷贝文件的运用】
  • Kubernetes控制平面组件:Kubelet 之 Static 静态 Pod
  • 添加购物车-02.代码开发
  • flutter使用命令生成BinarySize分析图
  • 【漫话机器学习系列】255.独立同分布(Independent and Identically Distributed,简称 IID)
  • 原生的 XMLHttpRequest 和基于 jQuery 的 $.ajax 方法的异同之处以及使用场景
  • MiMo-7B-RL调研