3.TCP协议头详解(包含选项部分)

1.TCP协议头格式

TCP Head

2.各字段说明

  • Source Port:源端口号 16bit;
  • Destination Port:目的端口号 16bit;
  • Sequence Number:发送字节流的起始字节序列号 32bit;
  • Acknowledgement Number:接收端期望接收的下一个字节序列号 32bit;
  • Header Length:以4Byte为单位显示TCP头长,TCP协议头固定20Byte,因此length最小为5,选项部分最长40Byte,加上固定头长总共60Byte,所以length最大为15,4bit;
  • Resv:预留位,4bit;

8位标志位
(TCP支持ECN功能时在Resv增加两个标志位:CWR、ECE,称为ECN域)

  • ECE(ECN ECHO):网络拥塞一般出现在路由交换时,在支持ECN功能情况下,发生拥塞时路由会设置IP中该标志位,接收端收到IP头中标志了ECN的报文后,在返回的数据ACK中设置ECE标志,表示链路发生拥塞,将拥塞消息通知发送端;
  • CWR(Congestion Window Reduce):发送端收到ECE置位的数据后进行设置,用来通知接收端已收到ECE标志的数据,了解了拥塞情况,接收端收到CWR置位消息后,不再设置ECE标志,同时发送端发送CWR信息时,将开始减小拥塞窗口,以此减小数据发送量,避免拥塞;
    (引用:http://www.cnblogs.com/hadis-yuki/p/5467787.html)
  • URG:紧急标志,置位后不需要按照正常报文按序处理,执行优先处理;
  • ACK:确认标志;
  • PSH:将缓存中的数据以及当前psh报文一起执行推送,从缓存区发出去;
  • RST:强行复位标志;
  • SYN:请求建链时置位该标志,第一个握手报文携带;
  • FIN:请求连接关闭时置位该标志;
  • Window Size:窗口大小,表示接收端接收缓存剩余大小,16bit;
  • TCP Chechsum:校验和,包括TCP协议头与数据整体的校验字段,16bit;
  • Urgent Pointer:标志位URG置位后使用,为一个正的偏移量,表示当前报文中起始字节开始需要偏移的长度,这个偏移到的字节就是紧急数据的结束字节,也就是通过偏移量确定了数据中需要紧急发送的字节个数,16bit;
  • Option:一般用于握手时接收端,发送端信息的交互,以及数据交互过程中;最大40Byte;

3.选项部分详解

在这里插入图片描述

  • kind:指明选项类型,1Byte;
  • Length:表明整个选项部分长度;
  • kind = 0:EOL(End of Option List):选项列表结束标志;
  • kind = 1:NOP(No Operation):无操作的一个占位符,因为选项部分要求4Byte对齐;

(当kind为0、1时,length为0)

  • kind = 2:MSS(Max Segment Size):握手报文中使用,表示可支持的TCP净荷长度(TCP默认MSS为536Byte,MSS+TCP_HdrLen+IP_HdrLen = MTU,一般MTU设置1500,IP头,TCP头最小各20Byte,因此净荷最小有576Byte,最大有1460Byte);
  • kind = 3:WSOPT:窗口扩大系数,握手过程中确定,之后不再改变,且只有双方都支持时才有用;设置原因:协议头中窗口只有16bit,在实际发送中,为提高流量,16bit不能满足需求,只能增加窗口缓存,然而16bit无法表示,通过设置窗口因子,来偏移16bit窗口值显示大窗口;
  • kind = 4:SACK_Permitted:是否支持选择确认(Select Acknowledgeable)开关,握手时设置;
  • kind = 5:SACK:TCP通过ACK向发送端回复已确认接收顺序数据,通过SACK向发送端通知乱序收到的报文字节SN,发送端通过检查SACK自己判断需要重传哪些字节,因此接收端只需要向发送端通知自己的接收情况即可,SACK实现中采用“LeftEdge~RightEdge”的形式,LeftEdge、RightEdge表示接收到的乱序报文起始与结束字节SN;
    如:接收端当前ExpAck为1501,表示1500及以前都已接收,期望接收1501开始的字节,此时乱序收到3001-4460,则接收端ACK报文中SACK设置为“3001-4461”;发送端收到该ACK后,检查SACK,判断出3001-4460已接收,1500及以前也接收,只需重传1501-3000即可;
    Option总长40Byte,Length占2Byte,所以8n+2 = 40,n最大4,最大可有4个SACK块;
    通过SACK机制,将一个RTT中只能重传一个报文变为多个,可提高吞吐量;
  • kind = 8:TSOPT:时间戳信息,以(TSecr+TSval)的形式表示,TSval=发送时时间戳,发送ACK时将TSval值写入TSecr,以新的时间戳写入TSval,因此发送端可通过该字段判断RTT,且该方式相对精确,总长8Byte;

(参考:https://blog.csdn.net/atomzhong/article/details/78981505)

  • kind = 19:TCP-MD5:加密相关;
  • kind = 28:UTO:用户超时时间,表示发送端在未收到ACK情况下等待ack的最长时间,计算方式如下:
    UTO=min(U_LIMIT, max(ADV_UTO, REMOTE_UTO, L_LIMIT));
    ADV_UTO:本端通知远端的数值; REMOTE_UTO:远端通知本端的数值;
    U_LIMIT:本地系统为超时设置的额上边界,L_LIMIT为下边界; L_LIMIT:该数值一般大于连接的重传时间RTO;
  • kind = 29:TCP-AO:认证选项,目的为替换早期的ND5;
  • kind = 253/254:Experimental:实验预留位。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP/IP详解·卷2:实现》完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。《TCP/IP详解·卷2:实现》不仅说明了插口API和协议族的关系以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点。《TCP/IP详解·卷2:实现》适用于希望理解TCP/IP协议如何实现的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。 目录 · · · · · · 第一章 概述 1.1 引言 1.2 源代码表示 1.3 历史 1.4 应用编程接口 1.5 程序示例 1.6 系统调用和库函数 1.7 描述符 1.8 网络实现概述 1.9 mbuf与输出处理 1.10 输入处理 1.11 网络实现概述 1.12 中断级别与并发 1.13 源代码组织 1.14 测试网络 1.15 小结 第二章 mduf:存储器缓存 2.1 引言 2.2 代码介绍 2.3 mduf的定义 2.4 mduf结构 2.5 简单的mduf宏和函数 2.6 m_devget和m_pullup函数 2.7 mduf宏和函数的小结 2.8 Net/3联网数据结构小结 2.9 m_copy和簇引用记数 2.10 其他选择 2.11 小结 第三章 接口层 3.1 引言 3.2 代码介绍 3.3 ifnet结构 3.4 ifaddr结构 3.5 sockaddr结构 3.6 ifnet与ifaddr的专用化 3.7 网络初始化概述 3.8 以太网初始化 3.9 SLIP初始化 3.10 环回初始化 3.11 if_attach函数 3.12 ifinit函数 3.13 小结 第四章 接口:以太网 4.1 引言 4.2 代码介绍 4.3 以太网接口 4.4 ioctl系统调用 4.5 小结 第五章 接口:SLIP和环回 5.1 引言 5.2 代码介绍 5.3 SLIP接口 5.4 环回接口 5.5 小结 第六章 IP编址 6.1 引言 6.2 代码介绍 6.3 接口和地址小结 6.4 sockaddr_in结构 6.5 in_ifaddr结构 6.6 地址指派 6.7 接口ioctl处理 6.8 internet实用函数 6.9 ifnet实用函数 6.10 小结 第七章 域和协议 7.1 引言 7.2 代码介绍 7.3 domain结构 7.4 protosw结构 7.5 IP的domain和protosw结构 7.6 pffindproto和pffindtype函数 7.7 pfctlinput函数 7.8 IP初始化 7.9 sysctl系统调用 7.10 小结 第八章 IP:网际协议 8.1 引言 8.2 代码介绍 8.3 IP分组 8.4 输入处理:ipintr函数 8.5 转发:ip_forward函数 8.6 输出处理:ip_output函数 8.7 Internet检验和:in_cksum函数 8.8 setsockopt和getsockopt系统调用 8.9 ip_sysctl函数 8.10 小结 第九章 IP选项处理 9.1 引言 9.2 代码介绍 9.3 选项格式 9.4 ip_dooptions函数 9.5 记录路由选项 9.6 源站和记录路由选项 9.7 时间戳选项 9.8 ip_insertoptions函数 9.9 ip_pcbopts函数 9.10 一些限制 9.11 小结 第十章 IP的分片与重装 10.1 引言 10.2 代码介绍 10.3 分片 10.4 ip_optcopy函数 10.5 重装 10.6 ip_optcopy函数 10.7 ip_slowtimo函数 10.8 小结 第十一章 ICMP:Internet控制报文协议 第十二章 IP多播 第十三章 IGMP:Internet组管理协议 第十四章 IP多播选路 第十五章 插口层 第十六章 插口I/O 第十七章 插口选项 第十八章 Radix树路由表 第十九章 选路请求和选路消息 第二十章 选路接口 第二十一章 ARP:地址解析协议 第二十二章 协议控制块 第二十三章 UDP:用户数据报协议 第二十四章 TCP:传输控制协议 第二十五章 TCP的定时器 第二十六章 TCP输出 第二十七章 TCP的函数 第二十八章 TCP的输入 第二十九章 TCP的输入(续) 第三十章 TCP的用户需求 第三十一章 BPF:BSD分组过滤程序 第三十二章 原始IP 结束语 附录A 部分习题的解答 附录B 源代码的获取 附录C RFC 1122的有关内容 参考文献
### 回答1: 《TCP/IP详解 卷一、二、三pdf》是一本网络技术的权威著作,由美国网络专家Douglas E. Comer所著。这本书是关于TCP/IP协议的详细解析和介绍,包含了网络通信的基本原理、协议栈的结构、数据传输过程等内容。 《TCP/IP详解 卷一、二、三pdf》的卷一主要介绍了TCP/IP协议的基础知识,包括协议栈的层次结构、IP地址和子网划分、网络接口和路由选择、ARP和RARP协议、网络地址转换等。这一卷的内容非常基础,是理解后续卷的基础。 卷二则深入介绍了TCP协议的工作原理和实现细节。包括三次握手和四次挥手过程、拥塞控制、流量控制和窗口管理、超时重传、各种TCP选项和标志位等。通过详细解析,读者能够更好地理解TCP协议的工作机制和数据传输的流程。 卷三则介绍了一些与IP协议相关的主题,如IP路由表和路由查找算法、多播和广播、IP转发和分片、IP协议的安全性等。这一卷的内容相对较为复杂,需要读者具备一定的网络知识和经验。 总的来说,《TCP/IP详解 卷一、二、三pdf》是一本全面深入介绍TCP/IP协议的重要参考书。无论是对于网络工程师、系统管理员还是对于对网络通信感兴趣的读者来说,这本书都具有很高的参考价值。通过阅读这本书,读者可以更好地理解网络通信的原理和实现,提高网络的性能和安全性。 ### 回答2: 《TCP/IP详解 卷一、二、三》是一本经典的网络技术书籍,全称为《TCP/IP协议详解:卷一-协议》、《TCP/IP协议详解:卷二-实现》和《TCP/IP协议详解:卷三- TCP事务、HTTP、NNTP、IMAP等》。 《TCP/IP详解 卷一-协议》首先介绍了TCP/IP协议栈的基本原理和架构,包括IP协议、ICMP协议、ARP/RARP协议、UDP协议TCP协议等。通过深入解析这些协议,读者可以全面了解TCP/IP协议栈的工作机制和功能。 《TCP/IP详解 卷二-实现》从实现的角度出发,介绍了如何在不同的操作系统中进行TCP/IP协议栈的实现,包括网络设备驱动程序、协议控制块、握手过程、数据传输和错误处理等。这本书详细讲解了TCP/IP协议栈在各种操作系统环境下的实际应用。 《TCP/IP详解 卷三- TCP事务、HTTP、NNTP、IMAP等》则着重介绍了一些常用的应用层协议,如TCP事务、HTTP协议、NNTP协议、IMAP协议等。这些协议在互联网中起到了重要的作用,通过深入了解它们的工作原理和应用场景,读者可以更好地掌握网络应用开发和应用层协议的使用。 总体来说,《TCP/IP详解 卷一、二、三》是一本权威、全面的TCP/IP网络技术著作。适合网络工程师、系统管理员、软件开发人员等专业人士学习使用。通过阅读这本书籍,读者可以深入理解TCP/IP协议栈的原理和实现,提升对网络通信的理解和应用能力。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值