以太网帧格式 IP数据报格式 TCP数据报格式 MTU MSS

6 篇文章 1 订阅
订阅专栏

一、以太网帧格式

下图摘自《TCP IP详解卷1:协议(第2版)》第3.2.2节以太网帧格式。
以太网(IEEE 802.3)帧格式
以太网帧有最小和最大尺寸。最小的帧是64字节,要求数据区(有效载荷)长度(无标签)最小为48字节。当有效载荷较小时,填充字节(值为0)被添加到有效载荷尾部,以确保达到最小长度。

传统以太网的最大帧长度是1518字节(包括4字节CRC和14字节头部)。选择这个值出于一种折中:如果一个帧中包括一个错误(接收到不正确的CRC校验),只需重发1.5kB以修复该问题。另一方面,MTU大小限制为1500字节。为了发送一个更大的消息,则需要多个帧(例如,对于TCP/IP网络常用的较大尺寸64KB,需要至少44个帧,64*1024/1500向上取整)。

二、IP数据报格式

IP数据报格式
IP数据报格式

  • 4位版本号(version)指定IP协议的版本。对IPv4来说其值是4.
  • 4位头部长度(header length)表示该IP头部有多少个32bit(4字节)。4位最大15,所以IP头部最长60字节。
  • 8位服务类型(Type Of Service, TOS)包括一个三位的优先权字段(现在已经被忽略),4位的TOS字段和1位保留字段(必须置0)。4位TOS字段分别表示:最小延时,最大吞吐量,最高可靠性和最小费用。最多有一个能置1。
  • 16位总长度是指整个IP数据报的长度,以字节为单位,因此IP数据报最大长度是65535字节。由于MTU限制,超过MTU的数据报会被分片传输。
  • 16位标识唯一标识主机发送的每一个数据报,同一个数据报的所有分片都具有相同的标识值。
  • 3位标识字段第一位保留。第二位(Don’t Fragment,DF)表示“禁止分片”。第三位(More Fragment,MF)表示“更多分片”,除了数据报的最后一个分片外,其它分片都要把它置1。
  • 13位分片偏移是分片相对于原始IP数据开始处(仅指数据部分)的偏移。实际的偏移值是该值左移3位(乘8)后得到的。由于这个原因,除了最后一个IP分片外,每个IP分片的数据部分的长度必须是8的整数倍。
  • 8位生存时间(time to live,TTL)使用“跳数“作为TTL的单位。数据报每经历一个路由器时对应的TTL值就会减 1 ,防止数据报发送在路由器中出现环路,因为数据报在传送的过程中要占用一定的带宽(TTL值为零时路由器将自动丢弃该数据包并向源端发送一个ICMP差错报文)。
  • 8位协议用来区分上层协议。ICMP是1,TCP是6,UDP是17。
  • 16位头部校验和由发送端填充,接收端对其IP头部使用CRC进行循环冗余检验。
  • IPv4最后一个选项字段是可变长的可选信息,最多40字节。包括记录路由、时间戳、松散源路由选择和严格源路由选择。

三、TCP数据报格式

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。

客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。

下面为TCP数据报的结构:
TCP数据报结构
TCP数据报结构.jpg

  • 序号:Seq(Sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记。
  • 确认号:Ack(Acknowledge Number)确认号占32位,客户端和服务器端都可以发送,Ack = Seq + 1。
  • 首部长度/数据偏移:4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。
  • 标志位:每个标志位占用1Bit,共有6个,分别为 URG、ACK、PSH、RST、SYN、FIN,具体含义如下:
    • URG:紧急指针(urgent pointer)有效。
    • ACK:表示确认号Ack有效。
    • PSH:表示有 DATA数据传输,接收方应该尽快将这个报文交给应用层。
    • RST:重置连接。
    • SYN:建立一个新连接。
    • FIN:断开一个连接。
  • 窗口:滑动窗口RWND16位滑动窗口大小,代表其socket接收缓冲区大小的字节数,最大65535。
  • 校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。
  • 紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和32位序号字段中的值相加表示紧急数据的下一字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。
  • 选项和填充:最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。
  • 数据部分: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

对标志位英文字母缩写的总结:Seq 是 Sequence 的缩写,表示序列;Ack(ACK) 是 Acknowledge 的缩写,表示确认;SYN 是 Synchronous 的缩写,愿意是“同步的”,这里表示建立同步连接;FIN 是 Finish 的缩写,表示完成。

四、MTU MSS

传统上,以太网的有效载荷一直是1500字节,它代表以太网的MTU。
目前,大多数系统为以太网使用1500字节的MTU,虽然在必要时它也可设置为一个较小的值。
有效载荷有时被填充(添加)数个0,以确保帧总体长度符合最小长度要求。

  • MTU: Maximum Transmit Unit,最大传输单元。即物理接口(数据链路层)提供给其上层(通常是IP层)最大一次传输数据的大小;以普遍使用的以太网接口为例,缺省MTU=1500 Byte,这是以太网接口对IP层的约束,如果IP层有<=1500 byte 需要发送,只需要一个IP包就可以完成发送任务;如果IP层有> 1500 byte 数据需要发送,需要分片才能完成发送,这些分片有一个共同点,即IP Header ID相同。

  • MSS:Maximum Segment Size ,最大段大小。TCP提交给IP层最大分段大小,不包含TCP Header和 TCP Option,只包含TCP Payload(有效负载),MSS是TCP用来限制application层最大的发送字节数。如果底层物理接口MTU= 1500 byte,则 MSS = 1500- 20(IP Header) -20 (TCP Header) = 1460 byte,如果application 有2000 byte发送,需要两个segment才可以完成发送,第一个TCP segment = 1460,第二个TCP segment = 540。

以太网协议格式(一)
qq_42357877的博客
01-31 8840
浅谈常用的网络协议格式
以太网协议格式.pdf
04-21
以太网协议格式,介绍了TCP/IP协议簇,以太类型,不同类型的封装格式
以太网IP数据的图解格式(包含相关例题讲解,一题足够)
weixin_45440484的博客
03-20 1万+
以太网首部占用14字节,首位开始是目的地址占用六个字节,其次是源地址,占用6个字节,然后是类型占用两个字节。以太网除去首部14字节和尾部FCS,4字节,(共18字节)剩下的中间的部分就是IP数据
网络基础知识(以太网结构)二
街头看日出的博客
04-11 4338
以太网整体结构 3. 以太网
以太网帧格式
最新发布
ToFPGA的博客
03-07 1290
以太网帧格式总结
IP协议和以太网
weixin_52477733的博客
05-12 552
目录IP协议IP协议IP协议作用以太网以太网帧格式总结 IP协议 IP协议头 4位版本号:IP协议的版本号,当前只有IPV4和IPV6 4位首部长度:由于选项的存在,IP头的长度是可变的. 8位服务类型:3位优先权字段(已经弃用),4位TOS字段和1位保留字段(必须设置为0).4位TOS字段分别是最小延时,最大吞吐量,最高可靠性,最小成本.四者相互冲突,在合适的场景下切换成合适的类型. 16位总长度:IP数据整体占多少个字节.最大长度为64k. 因为IP数据有长度限制,所以在发送的时候会进
IP 协议格式
marywang56的专栏
09-21 1万+
IP协议RFC:https://tools.ietf.org/html/rfc791IP协议在协议栈中位于网络层,网络数据传输封装方式如下:IP格式如下:版本:IP文版本号 IPV4:4,IPV6:6 首部长度:IP header 长度,没有选项,则一般为5(5x32bit=20B) 8位服务类型:一般没有使用,详细参考RFC 总长度:header+数据 总长度 16位标识:IP
[计算机通信网络]以太网格式详解
m0_56738500的博客
10-02 9135
以太网格式详解、preamble 前导码、SFD、Type/Len、FCS(Frame Check Sequence)
以太网通讯文详解
qq_43491149的博客
02-07 1万+
以太网通讯文详解 来源:编程帮,http://c.biancheng.net/view/6385.html 1、物理层协议有:EIA/TIA-232, EIA/TIA-499,V.35, V.24,RJ45, Ethernet, 802.3 2、数据链路层协议有:Frame Relay,HDLC,PPP, IEEE 802.3/802.2 3、网络层协议有:IPIPX,AppleTalk DDP 4、传输层协议有:TCP,UDP,SPX,ICMP 5、会话层协议有:RPC,SQL,NFS,NetBIO
网络基础知识之格式介绍
sunboy_guo的博客
05-03 9536
1.以太网数据头部 DMAC:目的MAC地址,长度6个字节。 SMAC:源MAC地址,长度6个字节。 TYPE:类型字段,表明上层是哪种协议,IP协议是0x800,ARP协议是0x0806。 DATA:数据字段。 CRC:校检字段。 2.IP文头部 Version:版本,有ipv4和ipv6两种。 IHL:首部长度。 Type of Service :服务类型。 Total length:总长度。 idenitification:标识。 flags:标识字...
tcp数据格式.以太网 MTU=IP MTU=ip头+tcp头+payload
11-11
tcp格式以太网 MTU=IP MTU=ip头+tcp头+payloadTCP MSSPayloadTCP Header
基于电力数据通信网的MTU值分析研究
10-15
业务的远距离传输要先后通过传输层、网络层及数据链路层的封装,最终以以太网的形式通过光端机及光缆进行远程通信,在通信过程中,三个协议层对数据载荷的大小均有相关参数的定义,分别是MSSMTU及最大长度。...
Ip数据有关信息
10-12
IP数据格式IP封装、分片与重组,MTU与分片,重组,分片控制
TCP/IP详解卷 pdf格式
05-18
1.3 TCP/IP的分层 4 1.4 互联网的地址 5 1.5 域名系统 6 1.6 封装 6 1.7 分用 8 1.8 客户-服务器模型 8 1.9 端口号 9 1.10 标准化过程 10 1.11 RFC 10 1.12 标准的简单服务 11 1.13 互联网 12 1.14 实现 12 1.15 ...
MTUmss的学习总结
12-09
学习mtumss很有帮助 在处理mtumss故障中找到的
以太网头介绍(IP头、TCP头、UDP头)
mayue_web的博客
12-04 2179
文章目录QT 常用快捷键 QT 常用快捷键 Ctrl + Shitf +F 快捷键方式搜索,具体搜索选项可以根据自己需要选择
学习整理——以太ip、udp/tcp、http文结构
热门推荐
Jeffery_Gong的博客
04-28 3万+
从最简单的一个http请求开发,根据TCP/IP协议,分开来看每一层的数据结构,以及它们是怎样承担起网络服务得。 协议栈 因特网协议栈共有五层: 1.应用层,是网络应用程序及其应用层协议存留的地方。因特网的应用层包括许多协议,常见的有HTTP(它为web文档提供了请求和传送)、SMTP(它提供了电子邮件文的传输)和FTP(它提供了两个端系统之间的文件传送)。 2.传输层,负责为信源和信
网络编程7——IP协议(子网掩码,NAT机制,IPv6协议) + 以太网
The_emperoor_man的博客
07-12 773
进来看看,带你了解IP协议与以太网协议。让专业术语变成普通话。本文介绍了网络层的IP协议以及其中的网络号,主机号,子网掩码,动态分配,NAT机制,IPv6协议;数据链路层的以太网协议,MTU,以及拆包组包。
TCP MSS MTU
09-09
TCP是传输控制协议,MSSMTU都是TCP/IP协议中的重要概念。MTU指网络最大传输单元,它是由硬件决定的,例如以太网MTU为1500字节。MSS指网络传输数据的最大值,实际上指的是TCP文中数据部分的传输最大值。MSSTCP的一个选项,在TCP三次握手建立连接时,双方通信获取MSS值。如果一方不接收另一方的MSS值,则取默认值536字节。所以,MSSTCP文中数据部分的最大长度,而MTU是网络最大传输单元的大小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • vector的find 12672
  • 以太网帧格式 IP数据报格式 TCP数据报格式 MTU MSS 9567
  • C++多线程 8290
  • Protobuf序列化原理 8249
  • Git报错“no branch, rebasing master” 6581

分类专栏

  • Linux 6篇
  • Tencent
  • C++ 9篇
  • 数据库 2篇
  • 2篇
  • 网络编程 6篇
  • 数据结构与算法 3篇

最新评论

  • C++类成员变量默认值

    高万禄: 真是个好问题,但是和 placement new(A*ptr=new(addr)A;) 机制关系不大, 有这样一种说法,C++栈变量不会被默认初始化 就连基础类型也不行, 因为栈上初始化每个变量会带来一定性能开销 在C++中,当定义变量时,会根据以下规则进行默认值初始化: 如果变量是一个非静态的局部变量,且未进行初始化,则其将不会被默认初始化,其值是未定义的。 如果变量是一个静态的局部变量,或者是一个全局变量(包括全局静态变量),则会被默认初始化为其类型的默认值。例如,整型变量将被初始化为0,浮点型变量将被初始化为0.0,指针变量将被初始化为nullptr,而对象将被调用默认构造函数。 如果变量是一个数组,则每个元素都将按照上述规则进行初始化。 需要注意的是,C++11之前,如果变量是一个非静态的局部变量,且未进行初始化,则其将不会被默认初始化,其值是未定义的。因此,在定义变量时,最好显式地进行初始化,以确保其值是可预测的。 C++中的默认值初始化规则并不一致,需要根据变量的定义方式和位置来确定其是否会被默认初始化。 如果要使用placement new 需要在构造函数初始化列表中显式初始化,变量后使用 = 或者 {} 初始化 如果执行的构造函数有初始化列表 且也初始化了其已经使用 = 或 {},则使用初始化列表中的忽略 = 或 {} 使用placement new -> 就在构造函数中或初始化列表中 或使用 = {} 为成员变量进行初始化。 总之在C++项目中 自定义类 一定要为成员变量显式初始化,不然可能有各种意想不到的结果。 在C项目中 struct 一般都会用一下 bzero() 或者 memset 或者 写一个newfunction 内部对各个字段初始化一下。 对于这种操作内存的语言,有一丝丝相信编译器都是犯罪。

  • C++多线程

    江北有土: 引用「四」 五

  • C++多线程

    lifehaohardhhh: <atomic> ,<thread>,<mutex>,<condition_variable>和<future> 开头介绍明明是五个头文件,为啥说是四个头文件。能不能描述严谨些?

  • SOCK_STREAM与SOCK_DGRAM套接字

    NUS_Ryan: 写得很好,我偷了

  • 从《计算机网络》到TCP/IP

    头脑风暴中: 好厉害表情包表情包表情包,想问问,计算机网络该怎么学习啊,感觉好枯燥,上课听老师讲也听不进去,而且也听不懂表情包表情包表情包表情包

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • C++类成员变量默认值
  • GitHub不再支持密码验证
  • perf生成火焰图教程
2022年6篇
2021年42篇
2020年101篇
2019年2篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源美版老男孩计算机病毒是起名网智能名字铸剑天下韩式女孩起名成语寓意好的起名字好听网吧名字怎么起那金花和她女婿全集姓邱起名字男孩名字谁是凶手演员表生日快乐文案2016年金鹰奖颁奖典礼歇斯底里电影九州天空城2在线播放我爱nba三个字的品牌起名字大全世界第五大洋免费取名字女孩生辰八字起名明朝官话起个职业选手名字卫视中文台草字头字旁的字男孩起名字比尔盖茨的个人资料及简介节能环保起名性侵视频婴儿马氏起名广东卫视在线直播葫芦娃动画片全集儿童子起名网男孩姓庄起什么姓名测试淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化