探究网络传输中不同层级的数据大小和数据格式

网络中不同层次的数据统称为PDU (协议数据单元 - protocol data unit)
每一层中可能有一种或多种协议,挑选最常见的协议进行说明

数据链路层 - 帧 (标准以太网)

  • 帧结构
前导码 帧开始符 MAC 目标地址 MAC 源地址 802.1Q标签 (可选) 以太类型 负载 冗余校验 帧间距
7个octet 10101010 6 octets 6 octets (4 octets) 2 octets 46–1500 octets 4 octets 12 octets
  1. 特别说明,前导码是为了让源主机和目的主机进行时钟同步
  2. 不考虑前导码,帧开始符号,帧间距,大小为 64–1522 字节
  3. 全部长度为 84–1542 字节
  4. 以太网的长度是变化的

网络层 - IP 数据报 (IPv4)

  • 数据报结构,单位为 位
版本号 首部长度 区分服务 数据报长度 标识 标志 片偏移量
4位 4位 8位 16位 16位 3位 13位
生存时间 上层协议 首部校验和 源地址 目的地址 选项字段 数据字段
8位 8位 16位 32位 32位 1-40位 2162 ^ {16}216 - 首部字段
  1. 总长可达 65535,但以太网的数据大小默认是 1500 ,所以ip数据包一般长度也在1500 以内
  2. 上层协议的作用是区分UDP和TCP,还有一个功能是进行多路复用和多路分解
  3. 区分服务字段 目前已不常使用

传输层 - UDP 数据报

  • UDP 数据报结构
源端口号 目的端口号 长度 校验和 源IP地址 目的IP地址 全0 协议号 UDP长度 数据
16位 16位 16位 16位 32位 32位 8位 8位 16位 65535 - 首部

传输层 - TCP 报文

  • TCP 报文结构
源端口 目的端口 序号 确认序号 首部长度 保留 标识位 接收窗口 全0 紧急指针
16位 16位 32位 32位 4位 6位 6位 16位 16位 16位
选项(长度可变) 填充 数据
0 - 40字节 保证首部长度为4的倍数
0 ~3字节
65535 - 首部
  1. 数据长度最大为 65515 - 65475
  2. 除通用的一些字段外,其他都与TCP 的连接有关

分析不同层级中的数据结构的共同性

  1. 从哪里来,到哪里去
  2. 上层协议是什么
  3. 长度
  4. 校验字段
  5. 变长不需要填充,定长需要填充
  6. 功能特性的字段

网络传输中的数据长度相关推荐

  1. 数据丢包怎么修复_一种网络传输中实时音频数据丢包恢复的方法与流程

    本发明涉及通信技术领域,具体涉及一种网络传输中实时音频数据丢包恢复的方法. 背景技术: 随着通信技术的发展,音频传输系统对实时性和准确性的要求越来越高.在网络的音频传输过程中,影响音频音质的主要因素是 ...

  2. 网络传输中的那些编码之-URL编码

    由于URL编码的一些混乱情况,曾经困扰着无数的程序员,本文将捋一捋URL编码相关的一些知识点,希望看望之后能给人恍然大悟的感觉. 本文将从如下几个方面进行介绍: 什么是URL编码 为什么进行URL编码 ...

  3. 网络传输中的两个阶段、阻塞IO、非阻塞IO和多路复用

    今天学习了网络传输中的两个阶段.阻塞IO.非阻塞IO和多路复用 一.网络传输中的两个阶段 分别是 waitdata 和 copydata send就是copydata recv是waitdata和co ...

  4. Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)

    MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...

  5. 网络传输中的那些编码之-base64编码

    在前面一篇文章中,这里介绍了URL编码的一些知识点,本文将对网络中另外一个常见的编码方式base64编码进行介绍. 同样的,按照之前的介绍方式,本文将从如下几个方面进行介绍: 什么是base64编码 ...

  6. 根据表格中的数据长度自动调整表格宽度DBGrid

    根据表格中的数据长度自动调整表格宽度DBGrid 2008年03月27日 星期四 下午 08:16 根据表格中的数据长度自动调整表格宽度 http://www.csai.cn 作者:Delphi开发经 ...

  7. 网络传输中available的用法

    在处理文件输入流时,通过调用available()方法来获取还有多少字节可以读取,根据该数值创建固定大小的byte数组,从而读取输入流的信息. FileInputStream fi = new Fil ...

  8. java 网络传输中发送byte[]和接收到的不一致_为什么JAVA对象需要实现序列化?

    序列化是一种用来处理对象流的机制.所谓对象流:就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间.序列化是为了解决在对对象流进行读写操作时所引发的问题.序列化的 ...

  9. Android网络传输中必用的两个加密算法:MD5 和 RSA 及Base64加密总结

    (1)commons-codec包简介 包含一些通用的编码解码算法.包括一些语音编码器,Hex,Base64.MD5 一.md5.base64.commons-codec包 commons-codec ...

最新文章

  1. Fedora下如何删除以前的老内核
  2. 浅谈安卓线程池相关问题
  3. [游戏模版21] Win32 物理引擎 能量守恒
  4. wxWidgets:wxButton类用法
  5. boost::multi_array模块实现打印数组相关的测试程序
  6. java 的分类_java的基本类型(转)
  7. 在Kotlin中使用libGDX
  8. linux内核err实现,Linux中IS_ERR()函数的理解
  9. 鼠标点击层以外的地方层隐藏
  10. 第一个Vert.x程序
  11. springboot的学习笔记,这个很重要
  12. Power BI能否做帕累托分析
  13. 财务报表软件免费版下载
  14. Arcface详解(通透、清晰)
  15. 移动 App 背后的一站式存储解决方案实践
  16. 一号店主页静态页面(HTML)
  17. pvs-stdio ue4_PVS-Studio –用于C,C ++,C#和Java的静态代码分析器
  18. sketchb必备快捷键大全,sketch如何自定义快捷键
  19. 全屏的微粒子3D动画特效
  20. aws mysql 多区_Amazon RDS 多可用区部署

热门文章

  1. 《SAP ERP财务:配置与设计(第2版)》——2.4 配置企业结构
  2. 主平台对接多个系统,系统表的性能和对接方案
  3. 传统文化也能这么有意思——全球第一家最有仙气、价值亿万的大数据库
  4. 树状图JQuery.ztree插件的使用
  5. 广西大学“中国东信杯”第三届程序设计竞赛-新生组-部分题解
  6. 手动删除EMCC13C的 Repository Database
  7. PBA大理石直线电机模组优势
  8. 清除浮动的四种样式写法
  9. uniapp模拟导航栏,自定义导航栏的使用
  10. 《赢》--[美]杰克·韦尔奇