之前在《深入理解并行编程》的群里,有个小米的兄弟问了一个问题,服务器A发包给服务器B,Seq是1,但是在未能收到服务器B的报文回复的情况下,发送了rst,但是rst报文中,对应的seq是1461,一堆人都在猜测,为什么seq跳变了,由于当时只看到一半的图片,所以我让他发送完整报文出来之后,我发现其实rst的seq不是1的原因,并不是因为跳变,而是正常的,因为发送给B的报文,长度为1460,但是这个报文没有得到回复,所以在超时之后,应用程序关闭了这条连接,导致内核协议栈发送了一个rst报文,而rst报文选取seq的时候,并不是选取的确定已经发送的seq,而是当前连接已经用掉的seq,也就是当前seq,哪怕这个报文没有收到回复,也会使用。
具体看代码:
其中关注下报文的init过程:
那么传入的seq是多少呢?
注释写得比较清楚,如果窗口没有shrunk,也就是tp->snd_nxt 没有out of window 的话,则取得就是tp->snd_nxt,而这个值,就是报文长度+1了,也就是1461.
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网
网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
原文标题:干货 | tcp协议栈中rst报文的seq跳变问题
文章出处:【微信号:ZTEdeveloper,微信公众号:中兴开发者社区】欢迎添加关注!文章转载请注明出处。
相关推荐
/IP协议栈的不同归类为两大类,第一类是传统的软件TCP/IP协议栈;第二类是最新的硬件TCP/
发表于 12-18 10:27
•8764次阅读
1. RST 段当 TCP连接出现严重的错误时,必须释放连接。通过将 TCP 首部中的 RST 标志位置 1,就可以通知对端发生错误,以终止
发表于 07-24 10:01
各位朋友好,我的导师要求我设计一个新的报文调度算法,能够实现不同优先级的报文在发送的过程中,实现高优先级报文的低延时和低抖动。要求使用stm32的LWIP
发表于 04-07 04:35
LWIP TCP报文基础TCP协议(Transmission Control Protocol)传输控制协议在LWIP
发表于 10-18 14:54
TCP/IP协议中,在封装报文时就相当于是压栈操作,而在报文解析过程
发表于 10-10 11:46
•1次下载
TCP(Transmission ControProtocol)传输控制协议是一种面向连接的、可靠的、基于字节流的传输层协议。TCP报文是
发表于 12-08 11:11
•3.3w次阅读
的开发人员可以很容易找到许多Microchip产品的商业和非商业的TC P/IP实现方案。本应用笔记详细说明了Microchip公司自己免费提供的TC P/IP协议栈。 Microchip TCP/IP
发表于 04-20 16:04
•4次下载
本文档的主要内容详细介绍的是LWIP协议栈中Raw TCP中使用的资料免费下载
发表于 11-05 17:36
•17次下载
教你动手写UDP协议栈系列文章序号内容1《教你动手写UDP协议栈-UDP协议栈格式》2《教你动手
发表于 12-24 16:16
•1420次阅读
本应用笔记描述 Microchip 传输控制协议 / 互联网协议(TCP/IP)精简协议栈库的结构和接口,并提供部分简单的演示应用。实现
发表于 04-01 15:36
•17次下载
。感兴趣的开发人员可以很容易找到许多 Microchip 产品的商业和非商业的TCP/IP 实现方案。本应用笔记详细说明了 Microchip 公司自己免费提供的 TCP/IP 协议栈
发表于 04-02 14:28
•22次下载
今天给大家介绍Linux网络技术中最核心的部分--TCP/IP协议栈 。 我们先看一下抽象的网络协议栈模型 再按分层思想看Linux内核
发表于 06-29 15:14
•2342次阅读
TCP协议有着自己的数据包格式,这里把TCP的数据包称为报文段(segment),TCP报文段封
发表于 08-31 09:12
•2766次阅读
tcpip协议栈是什么? TCP/IP协议栈是计算机网络中使用的最常见的网络协议
发表于 08-01 17:51
•8541次阅读
德赢Vwin官网
网站提供《TCP/IP协议栈的设计与实现_中文.pdf》资料免费下载
发表于 07-03 11:28
•4次下载
评论