网络传输中的数据长度
探究网络传输中不同层级的数据大小和数据格式
网络中不同层次的数据统称为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 |
- 特别说明,前导码是为了让源主机和目的主机进行时钟同步
- 不考虑前导码,帧开始符号,帧间距,大小为 64–1522 字节
- 全部长度为 84–1542 字节
- 以太网的长度是变化的
网络层 - IP 数据报 (IPv4)
- 数据报结构,单位为 位
版本号 | 首部长度 | 区分服务 | 数据报长度 | 标识 | 标志 | 片偏移量 |
---|---|---|---|---|---|---|
4位 | 4位 | 8位 | 16位 | 16位 | 3位 | 13位 |
生存时间 | 上层协议 | 首部校验和 | 源地址 | 目的地址 | 选项字段 | 数据字段 |
8位 | 8位 | 16位 | 32位 | 32位 | 1-40位 | 2162 ^ {16}216 - 首部字段 |
- 总长可达 65535,但以太网的数据大小默认是 1500 ,所以ip数据包一般长度也在1500 以内
- 上层协议的作用是区分UDP和TCP,还有一个功能是进行多路复用和多路分解
- 区分服务字段 目前已不常使用
传输层 - 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 - 首部 |
- 数据长度最大为 65515 - 65475
- 除通用的一些字段外,其他都与TCP 的连接有关
分析不同层级中的数据结构的共同性
- 从哪里来,到哪里去
- 上层协议是什么
- 长度
- 校验字段
- 变长不需要填充,定长需要填充
- 功能特性的字段
网络传输中的数据长度相关推荐
- 数据丢包怎么修复_一种网络传输中实时音频数据丢包恢复的方法与流程
本发明涉及通信技术领域,具体涉及一种网络传输中实时音频数据丢包恢复的方法. 背景技术: 随着通信技术的发展,音频传输系统对实时性和准确性的要求越来越高.在网络的音频传输过程中,影响音频音质的主要因素是 ...
- 网络传输中的那些编码之-URL编码
由于URL编码的一些混乱情况,曾经困扰着无数的程序员,本文将捋一捋URL编码相关的一些知识点,希望看望之后能给人恍然大悟的感觉. 本文将从如下几个方面进行介绍: 什么是URL编码 为什么进行URL编码 ...
- 网络传输中的两个阶段、阻塞IO、非阻塞IO和多路复用
今天学习了网络传输中的两个阶段.阻塞IO.非阻塞IO和多路复用 一.网络传输中的两个阶段 分别是 waitdata 和 copydata send就是copydata recv是waitdata和co ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...
- 网络传输中的那些编码之-base64编码
在前面一篇文章中,这里介绍了URL编码的一些知识点,本文将对网络中另外一个常见的编码方式base64编码进行介绍. 同样的,按照之前的介绍方式,本文将从如下几个方面进行介绍: 什么是base64编码 ...
- 根据表格中的数据长度自动调整表格宽度DBGrid
根据表格中的数据长度自动调整表格宽度DBGrid 2008年03月27日 星期四 下午 08:16 根据表格中的数据长度自动调整表格宽度 http://www.csai.cn 作者:Delphi开发经 ...
- 网络传输中available的用法
在处理文件输入流时,通过调用available()方法来获取还有多少字节可以读取,根据该数值创建固定大小的byte数组,从而读取输入流的信息. FileInputStream fi = new Fil ...
- java 网络传输中发送byte[]和接收到的不一致_为什么JAVA对象需要实现序列化?
序列化是一种用来处理对象流的机制.所谓对象流:就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间.序列化是为了解决在对对象流进行读写操作时所引发的问题.序列化的 ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA 及Base64加密总结
(1)commons-codec包简介 包含一些通用的编码解码算法.包括一些语音编码器,Hex,Base64.MD5 一.md5.base64.commons-codec包 commons-codec ...
最新文章
- Fedora下如何删除以前的老内核
- 浅谈安卓线程池相关问题
- [游戏模版21] Win32 物理引擎 能量守恒
- wxWidgets:wxButton类用法
- boost::multi_array模块实现打印数组相关的测试程序
- java 的分类_java的基本类型(转)
- 在Kotlin中使用libGDX
- linux内核err实现,Linux中IS_ERR()函数的理解
- 鼠标点击层以外的地方层隐藏
- 第一个Vert.x程序
- springboot的学习笔记,这个很重要
- Power BI能否做帕累托分析
- 财务报表软件免费版下载
- Arcface详解(通透、清晰)
- 移动 App 背后的一站式存储解决方案实践
- 一号店主页静态页面(HTML)
- pvs-stdio ue4_PVS-Studio –用于C,C ++,C#和Java的静态代码分析器
- sketchb必备快捷键大全,sketch如何自定义快捷键
- 全屏的微粒子3D动画特效
- aws mysql 多区_Amazon RDS 多可用区部署