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

Linux系统编程-网络基础(四)-协议03:数据包封装【以太网(Mac)帧:最大值1500字节称为以太网的MTU(最大传输单元),不包括帧报头长度】

传输层及其以下的机制由内核提供,应用层由用户进程提供(后面将介绍如何使用socket API编写应用程序),应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示:

 不同的协议层对数据包有不同的称谓:

  • 在传输层叫做段(segment);
  • 在网络层叫做数据报(datagram);
  • 在链路层叫做帧(frame);

数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

一、以太网(Mac)帧格式

以太网的帧格式如下所示:

其中:

  • 源地址目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位(6字节),是在网卡出厂时固化的。可在shell中使用ifconfig命令查看,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。
  • 类型:协议类型字段有三种值,分别对应:
    • IP:0800;
    • ARP:0806;
    • RARP:8035;
  • CRC:帧尾是CRC校验码。
  • 数据以太网帧中的数据长度规定最小46字节,最大1500字节。
    • ARP和RARP数据包的长度不够46字节,要在后面补填充位。
    • 最大值1500称为以太网的最大传输单元(MTU,不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU,则需要对数据包进行分片(fragmentation)。
    • ifconfig命令输出中也有“MTU:1500”。
    • 注意:MTU这个概念指数据帧中有效载荷的最大长度,不包括帧头长度

相关文章:

  • 一次诡异的numpy数组越界访问
  • cmd炫技小方法
  • kafka搭建单机开发教程
  • 如果你需要用Python搞个二维码,那应该收藏这篇博客
  • Linux权限的认识
  • 【JavaScript】五个常用功能/案例:判断特定结尾字符串 | 获取指定字符串 | 颜色字符串转换 | 字符串转驼峰格式 | 简易购物车
  • Kotlin 字符串与空值判断
  • 【NLP开发】Python实现聊天机器人(ALICE)
  • 【题解】同济线代习题二 8.1
  • 【C语言】五分钟彻底搞定字符串
  • 【极客日常】PyQt5的QListView兼容左键双击事件和右键上下文菜单的方法
  • 基于遗传优化算法的小车障碍物避障路线规划matlab仿真(包括matlab仿真录像)
  • vue后台系统管理项目-openlayers地图定位、港口数据标记功能
  • 通讯录的文件版本(产品经理又来加需求了!)
  • 基于Java+SpringBoot+Thymeleaf+Mysql医院预约挂号系统设计与实现
  • 【347天】每日项目总结系列085(2018.01.18)
  • 03Go 类型总结
  • css的样式优先级
  • docker-consul
  • flutter的key在widget list的作用以及必要性
  • Java,console输出实时的转向GUI textbox
  • js中forEach回调同异步问题
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • MySQL数据库运维之数据恢复
  • python大佬养成计划----difflib模块
  • Sass 快速入门教程
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 开源SQL-on-Hadoop系统一览
  • 前端工程化(Gulp、Webpack)-webpack
  • 日剧·日综资源集合(建议收藏)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微信公众号开发小记——5.python微信红包
  • 想写好前端,先练好内功
  • 一天一个设计模式之JS实现——适配器模式
  • 【干货分享】dos命令大全
  • 阿里云重庆大学大数据训练营落地分享
  • 组复制官方翻译九、Group Replication Technical Details
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • $.ajax()
  • (1)bark-ml
  • (11)MATLAB PCA+SVM 人脸识别
  • (2015)JS ES6 必知的十个 特性
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (zhuan) 一些RL的文献(及笔记)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .“空心村”成因分析及解决对策122344
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET 反射 Reflect