tcp 的 2MSL状态 究竟指哪两个数据包的MSL? [问题点数:40分,结帖人shark_boss]

Bbs1
本版专家分:0
结帖率 100%
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
TCP释放连接时为什么time_wait状态必须等待2MSL时间(阅读笔记)?
为什么上图中的A在TIME-WAIT<em>状态</em>必须等待2MSL时间呢? 第一,为了保证A发送的最后一个ACK报文能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK<em>状态</em>的B收不到对已发送的FIN+ACK报文段的确认。B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个重传的FIN+ACK报文段。如果A在TIME-WAIT<em>状态</em>不等待一段时间,而是在发送完ACK报文段后就立即
TCP断开连接时的2MSL的time_wait状态
http://blog.csdn.net/xiaofei0859/article/details/24621487 2MSL TIME_WAIT<em>状态</em>存在的理由: TIME_WAIT<em>状态</em>的存在有<em>两个</em>理由:(1)让4次握手关闭流程更加可靠;4次握手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭方会再次发一个FIN过来。若主动关闭方能够保持一个2MSL的TIME_WAIT
Linux和Windows系统修改MSL的值
 MSL,即Maximum Segment Lifetime,一个数据分片(报文)在网络中能够生存的最长时间,在RFC 793中定义MSL通常为2分钟,即超过两分钟即认为这个报文已经在网络中被丢弃了。对于一个TCP连接,在双方进入TIME_WAIT后,通常会等待2倍MSL时间后,再关闭掉连接,作用是为了防止由于FIN报文丢包,对端重发导致与后续的TCP连接请求产生顺序混乱,具体原理这里就不详
为什么TIME_WAIT等待连接上所有的分组消失的时间是2MSL而不是MSL?
为什么TIME_WAIT的时间是2MSL? 理由1很容易理解。主要是理由2,客户端回复最后一个ACK之后,感觉一个MSL就可以所有分组消失了啊,为什么还要2MSL所有分组才消失呢?我的理解是: 假设客户端发送ACK刚刚过了一个MSL时间,而服务端在收到这个ACK之前一瞬间刚好启动超时重传FIN,所以要等这个FIN也消失,就是2MSL了。文中所指的另一个方向的应答应该就是这个超时重传...
为什么TIME_WAIT状态还需要等2MSL才能返回CLOSED状态
(1)可靠的实现TCP全双工链接的终止。 这是因为虽然双方都同意关闭连接了,而且握手的4个报文也都协调和发送完毕,按理可以直接回到CLOSED<em>状态</em>(就好比从SYN_SEND<em>状态</em>到ESTABLISH<em>状态</em>那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK报文会一定被对方收到,因此对方处于LAST_ACK<em>状态</em>下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报
TCP四次挥手客户端关闭链接为什么要等待2倍MSL
问题主动发起关闭连接的操作的一方将达到TIME_WAIT<em>状态</em>,而且这个<em>状态</em>要保持Maximum Segment Lifetime的两倍时间。为什么要这样做而不是直接进入CLOSED<em>状态</em>?
关于4次挥手时等待2MSL的问题
关于三次握手和四次挥手的过程算是十分熟悉了,可昨天网易面试面试官的一个问题瞬间让我意识到自己只不过理解了一点皮毛而已。 我们都知道,四次挥手时,主动发起关闭连接的操作的一方将达到TIME_WAIT<em>状态</em>,而且这个<em>状态</em>要保持Maximum Segment Lifetime的两倍时间。 那么问题来了 :1.为什么不直接关闭要进入等待<em>状态</em>?                            2....
25. 为什么客户端在TIME-WAIT状态必须等待2MSL的时间?
1)为了保证客户端发送的最后一个ACK报文段能够达到服务器。 这个ACK报文段可能丢失,因而使处在LAST-ACK<em>状态</em>的服务器收不到确认。服务器会超时重传FIN+ACK报文段,客户端就能在2MSL时间内收到这个重传的FIN+ACK报文段,接着客户端重传一次确认,重启计时器。最好,客户端和服务器都正常进入到CLOSED<em>状态</em>。如果客户端在TIME-WAIT<em>状态</em>不等待一段时间,而是再发送完ACK报文后立
TCP四次分手中,主动关闭方最后为什么要等待2MSL之后才关闭连接?
和TCP三次同步握手不一样的是,TCP关闭连接用四次握手来实现,即A---&amp;gt;B Fin, B---&amp;gt;A ACK, B---&amp;gt;A Fin, A---&amp;gt;B ACK,为什么要这样当主动断开连接的一方(Initiator)发送FIN包给对方,且对方回复了ACK+FIN,然后Initiator回复了ACK后就进入TIME_WAIT<em>状态</em>,一直将持续2MSL后进入CLOSED<em>状态</em>。A--...
为什么主动关闭方要经过2MSL才能进入CLOSED状态
MSL是Maximum Segment Lifetime英文的缩写——报文最大生存时间 1.为了保证发送的最后一个ACK报文段能够被接收 可让TCP再次发送最后的ACK以防止这个ACK丢失 2.防止”已失效的连接请求报文段”出现在本连接中,在发送完最后一个ACK报文后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。 这样下一个新的连接就不会出现这种老的...
Time-wait状态(2MSL)一些理解
1. 编写TCP/SOCK 服务时,SO_REUSEADDR到底是什么意思? 这个套接字选项通知内核,如果端口忙,但TCP<em>状态</em>处于TIME_WAIT,可以重用端口。如果端口忙,TCP<em>状态</em>处于其他<em>状态</em>,重用端口时依旧指明“地址已经在使用中”。如果你的服务程序停止后向立刻重启,而新套接字依旧使用同一个端口,此时SO_REUSEADDR选项非常有用。但是必须意识到,此时任何非期望数据到达,都可能导致服
为什么TIME_WAIT的时间是2MSL
MSL指的是任何IP数据报能够在因特网上存活的最长时间。 TIME_WAIT的<em>状态</em>是为了等待连接上所有的分组的消失。单纯的想法,发送端只需要等待一个MSL就足够了。这是不够的,假设现在一个MSL的时候,接收端需要发送一个应答,这时候,我们也必须等待这个应答的消失,这个应答的消失也是需要一个MSL,所以我们需要等待2MSL。(更多的内容参考 《UNIX 网络编程》第3版 2.7 节)
TCP四次挥手中,主动关闭方最后为什么要等待2MSL之后才能关闭连接?
和TCP三次同步握手不一样的是,TCP关闭连接用四次挥手来实现,即A—–>B Fin,B—->A ACK, B—–>A Fin,A—-B ACK A—-B Fin, B—->A ACK,A属于主动关闭方,收到B的ACK之后,A到B的方向连接关闭,即half shutdown,这时不能再发送数据了. 这种<em>状态</em>下B还是可以单向发送数据的,B的数据发送完毕,也可以做关闭动作了, B——>A Fin
TCP TimeWait状态详解(比较全)
转载自:http://blog.chinaunix.net/uid-20384806-id-1954363.html TIME_WAIT<em>状态</em> TCP要保证在所有可能的情况下使得所有的数据都能够正确被投递。 当关闭一个 socket 连接时,主动关闭一端的 socket 将进入TIME_WAIT<em>状态</em>,而被动关闭一方则转入CLOSED<em>状态</em>。 见图解。   当一个socket关
TCP第四次挥手为什么要等待2MSL
当客户端进入TIME-WAIT<em>状态</em>的时候(也就是第四次挥手的时候),必须经过时间计数器设置的时间2MSL(最长报文段寿命)后,才能进入关闭<em>状态</em>,这时为什么呢??? 这最主要是因为<em>两个</em>理由:1、为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK有可能丢失,从而导致处在LAST-ACK<em>状态</em>的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着客户端
tcp4次挥手时,客户端为何要等2msl
<em>tcp</em>四次挥手 最后的2MSL
居然很少有人质疑: 2MSL的TIME_WAIT时间真的足够保证旧连接上的所有包都消失吗?
看了不少TIME_WAIT方面的书籍和网络文章, 很多地方不过是在人云亦云的拷贝别人的说法和思想而已, 看得让人颇为无趣。         对于TIME_WAIT, 言必称2MSL, 当然, 如果是笔试面试, 我也会这么答, 因为这就是所谓的标准答案啊。 然而, 2MSL的TIME_WAIT时间真的足够保证旧连接上的所有包都消失吗? 我最近一直在思考这个问题。 从理论上来讲, 这是扯淡。  
TCP四次挥手客户端连接关闭链接为什么要等待2MSL?
MSL(maximun segment Lifetime): 报文的最大生存时间, 是任何报文在网络上生存的最大时间。 如果client直接closed, 那么由于IP协议的不可靠性或者是其它的网络原因, 导致Server没有收到客户端最后回复的ACK。那么服务器就会在超时之后继续发送FIN,此时由于客户端已经CLOSED了,就找不到与重发的FIN对应的连接,最后Server就会收到RST(表示...
TCP释放连接时为什么time_wait状态必须等待2MSL时间
转载自http://www.cnblogs.com/huenchao/p/6266352.html 作者:hdu胡恩超 为什么上图中的A在TIME-WAIT<em>状态</em>必须等待2MSL时间呢? 第一,为了保证A发送的最后一个ACK报文能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK<em>状态</em>的B收不到对已发送的FIN+ACK报文段的确认。B会超时重传这个FIN+ACK报文段,而A就能
MSL、TTL及RTT的区别
1、 MSL 是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。TCP报文 (segment)是ip数据报(datagram)的数据部分,具体称谓请参见《数据在网络各层中的称呼》一文;2、ip头中有一个TTL域,TTL是 time to live的缩写,中文可以译为“生存时间”,这个生存时间是
MSL(max segment lifetime) TCP进程结束 端口是否再分配
TCP的MSL(max segment lifetime) 参考:http://blog.csdn.net/lile269/article/details/6406878 TCP链接中有一个MSL的概念,也就是最大生成时间,MSL的值在
MSL、TTL、RTT的区别
一、  <em>msl</em>、ttl及rtt的区别   1、 MSL 是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为<em>tcp</em>报文 (segment)是ip数据报(datagram)的数据部分,具体称谓请参见《数据在网络各层中的称呼》一文;   2、ip头中有一个TTL域,TTL是 time to l...
网络术语MSL/TTL/RTT
MSL(Maximum Segment Lifetime)最大报文生存时间         每个TCP实现必须选择一个MSL。它是任何报文段被丢弃前在网络内的最长时间。这个时间是有限的,因为TCP报文段以IP数据报在网络内传输,而IP数据报则有限制其生存时间的TTL时间。RFC 793指出MSL为2分钟,现实中常用30秒或1分钟。 2MSL         当TCP执行主动关闭,并发出最
网络协议 -- TCP协议(3)TIME_WAIT及MSL
关于TCP的4次挥手过程参考:网络协议 – TCP协议(2)三次握手与四次挥手 一、TIME_WAIT<em>状态</em>为何存在? 这里我们不使用“客户端”、“服务端”来表示TCP连接的2端,转而使用“主动断开连接端”、“被动断开连接端”来表示TCP通讯的2端。因为执行主动断开连接的端可能是服务端也可能是客户端(虽然我们大多数情况下遇到的是客户端执行主动断开)。 在“主动断开连接端”收到了“被...
为什么TIME_WAIT状态到CLOSED状态要等2MSL的时长
1.TIME_WAIT需要确保关闭端发送的FIN的ACK被对端的套接字接收到,如果1个MSL内对端没有收到响应,那么关闭端就要重发FIN的ACK。 2.当关闭当前的TCP连接时,最后发送出去的数据报可能被路由器的转发队列缓存,如果立马切换到CLOSED<em>状态</em>,可能使用相同窗口的新的TCP连接收到的数据报还是前一个TCP连接缓存在路由器中的数据。...
TCP为什么要3次握手和4次挥手时等待2MSL
1.TCP为甚要3次握手?  在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”,书中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但ser
TCP/IP中关于2MSL在何种情形下允许连接
http://blog.chinaunix.net/uid-20767124-id-1849907.html  转载地址如前所示 看第一卷的时候,发现了一个问题,明明说2MSL等待<em>状态</em>下,不能接受新的连接(socket pair被占用的情形),可是后面又举了例子,说了一大通,那就顺便整理一下吧。 上面的读书笔记中说:     2MSL等待<em>状态</em>下该插口对不能用是针对主动关闭的一
TIME_WAIT状态(2MSL)的作用
主动关闭的Socket端会进入TIME_WAIT<em>状态</em>,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP<em>数据包</em>能在互联网上生存的最长时间,超过这个时间将在网络中消失。MSL在RFC 1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒,因而,TIME_WAIT<em>状态</em>一般维持在1-4分钟。
A为什么等待2MSL,从TIME_WAIT到CLOSE?
在客户端发送出最后的ACK回复,但该ACK可能丢失.Server如果没有收到ACK,将不断重复发送FIN片段。所以客户不能立即关闭,它必须确认服务器接收到了该ACK.Client会在发送出ACK之后进入到TIME_WAIT<em>状态</em>.Client会设置一个计时器,等待2 MSL的时间。如果在该时间内再次收到FIN,那么客户端会重发ACK并再次等待2 MSL。所谓的2MSL是两倍的MSL(最大段终身).M...
四次挥手过程以及为什么要等两个时间周期?
四次挥手(客户端和服务端均可以发起): 1、客户端发起、请求断开链接。发送报文FIN=1,当FIN=1的时候,表明此报文的发送方已经完成了数据的发送,没有新 的数据要传送,并要求释放链接。客户端进入FIN-WAIT-1(终止等待1)<em>状态</em>。 2、服务器收到客户端的请求断开链接的报文之后,返回确认信息。ACK=1,服务器进入CLOSE-WAIT(关闭等待)状 态。此时客户端不能给服务器发...
TIME_WAIT状态存在的必要性
TIME_WAIT<em>状态</em>         是谁有TIME_WAIT<em>状态</em>呢
理解tcp关闭连接中的time_wait状态
首先看一下<em>tcp</em>关闭连接时的四次握手过程: 1.Client向Server发送FIN包,表示Client主动要关闭连接,然后进入FIN_WAIT_1<em>状态</em>,等待Server返回ACK包。此后Client不能再向Server发送数据,但能读取数据。 2.Server收到FIN包后向Client发送ACK包,然后进入CLOSE_WAIT<em>状态</em>,此后Server不能再读取数据,但可以
TCP的2MSL问题
2MSL (Maximum SegmentLifetime) TIME_WAIT<em>状态</em>的存在有<em>两个</em>理由:   让4次挥手关闭流程更加可靠;4次挥手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭方会再次发一个FIN过来。若主动关闭方能够保持一个2MSL的TIME_WAIT<em>状态</em>,则有更大的机会让丢失的ACK被再次发送出去。   防止lost dup
TCP四次挥手时的TIME_WAIT状态
这几天面试遇到一个问题是关于TCP四次挥手的时候,先发起方为什么会有一个TIME_WAIT<em>状态</em>,它的作用是什么? 然后整理了一些资料和自己的一些总结,方便日后查阅。 先上图   注: MSL(最大报文段生存时间),网络中的TCP的报文段经过此时间会消失,旧<em>tcp</em>连接的报文段消失了就不会影响新连接 TCP和UDP是传输层的协议,TCP的传输单位是报文段,UDP是用户数据报 “请求”...
msl、ttl及rtt的区别 TCP控制字段标志
http://wushank.blog.51cto.com/3489095/1135060 一、  <em>msl</em>、ttl及rtt的区别    1、 MSL 是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为<em>tcp</em>报文 (segment)是ip数据报(datagram)的
TCP中的TIME_WAIT状态详解
linux和windows下TIME_WAIT过多的解决办法 如果使用了nginx代理,那么系统TIME_WAIT的数量会变得比较多,这是由于nginx代理使用了短连接的方式和后端交互的原因,使得nginx和后端的ESTABLISHED变得很少而TIME_WAIT很多。这不但发生在安装nginx的代理服务器上,而且也会使后端的app服务器上有大量的TIME_WAIT。查阅TIME_WAIT资料,
TCP中的四个计时器
TCP中的四个计时器包括重传计时器、坚持计时器、保活计时器、时间等待计时器 重传计时器(Retransmission Timer): 目的:为了控制丢失的报文段或者丢弃的报文段。这段时间为对报文段的等待确认时间。创建时间:在TCP发送报文段时,会创建对次特定报文段的重传计时器。可能发生的两种情况:在截止时间(通常为60秒)到之前,已经收到了对此特定报文段的确认,则撤销计时器;在截止时间
《TCP/IP详解卷1:协议》笔记--2MSL等待状态
TCP的<em>状态</em>变迁图如下: 其中的TIME_WAIT<em>状态</em>也成为2MSL等待<em>状态</em>。每个具体的TCP实现必须选择一个报文段最大生存时间MSL(maximum segment lifetime)。它是任何报文段被丢弃前在网络内的最长时间 。我们知道这个时间是有限的,因为TCP报文段以IP 数据报在网络内传输,而IP数据报则有限制其生存时间的TTL字段。 在RFC793指出MSL为2分钟,然
TCP状态图的理解以及TIME_WAIT状态的作用
TCP<em>状态</em>转换图以及TIME_WAIT<em>状态</em>的理解
TIME_WAIT状态下对接收到的数据包如何处理
正常情况下主动关闭连接的一端在连接正常终止后,会进入TIME_WAIT<em>状态</em>,存在这个<em>状态</em>有以下<em>两个</em>原因(参考《Unix网络编程》):       1、保证TCP连接关闭的可靠性。如果最终发送的ACK丢失,被动关闭的一端会重传最终的FIN包,如果执行主动关闭的一端没有维护这个连接的<em>状态</em>信息,会发送RST包响应,导致连接不正常关闭。       2、允许老的重复分组在网络中消逝。假设在一个连接关闭
三次握手理解 四次挥手(等待2MSL)
  三次握手: A(客户端)                       b(服务端)   A:我想发消息给你(一次){给了一个SYN a请求} B:好的,那我准备好了(两次){给了一个ACK a+1确认,给了一个新的SYN b请求} A:我也准备好了(三次),连接就建立起来了{给了一个ACK b+1请求}   如果只有两次握手的话,当出现网络阻塞时,A发送的消息超时,当A和B通信...
tcp的2MSL问题
说明 2MSL即两倍的MSL,TCP的TIME_WAIT<em>状态</em>也称为2MSL等待<em>状态</em>,当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第3次握手完成后发送了第四次握手的ACK包后就进入了TIME_WAIT<em>状态</em>,必须在此<em>状态</em>上停留两倍的MSL时间,等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个...
tcp状态参数设置
说明: 通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手 里面的几个概念: SYN: (同步序列编号,Synchronize Sequence Numbers)ACK: (确认编号,Acknowledgement Number)FIN: (结束标志,FINish) TCP三次握手(创建 OPEN) 客户端发起一个和服务创
GET和POST的真正的区别
好,大家都知道的GET和POST的区别,我就不说了,就说两点,如下: 1.HTTP协议是TCP/IP的一种应用,所以锁GET和POST也是TCP连接,所以GET和POST其实对url长度和发送的内容大小是没有限制的(我们平时见到的URL长度和发送内容的大小限制,都是来自于各个浏览器的限制,而非HTTP协议本身的限制) 2.GET产生一个TCP<em>数据包</em>;POST产生<em>两个</em>TCP<em>数据包</em>。 GET请求
TCP/IP入门知识——什么是TCP/IP
一、关键术语 ARPAnet:一种实验性网络,也是TCP/IP的诞生地。 局域网(LAN):供单个办公室、组织或者家庭使用的小型网络,通常只占据一个地理位置。 网络协议:对通信过程的一个具体方面进行定义的一组通用规则。 TCP/IP:在Internet和很多其他网络上使用的网络协议簇。 IP地址:用于定位TCP/IP网络上的计算机或者其他联网设备的逻辑地址(例如,打印机)。 逻辑地址:通过协议软件配
为什么在四次挥手的过程中一般都是客户端先发起呢?(TCP挥手时为什么要等2MSL?)
        在调试客户端和服务器端(使用TCP套接字)的代码时我发现,如果先结束服务器端后结束客户端,紧接着再重启服务器端就会出现绑定失败的错误 OSError: [Errno 98] Address already in use   等待一段时间后大概一分钟左右就能正常重启服务器端。为了找出这个问题的原因,我复习了TCP的十种<em>状态</em>以及四次挥手的详细过程,我的疑问得以解答同时这也解释了文章的题...
Lwip 保活机制 2
文章转自老衲五木的新浪博客 这节讨论TCP的定时处理函数。在前面的讨论中,我们看到了与TCP的各种定时器,包括重传定时器、持续定时器和保活定时器,此外TCP中还有几个定时器我们还未涉及。这里总的来看看TCP中的各个定时器。TCP为每条连接总共建立了七个定时器,依次为: 1 )“连接建立(connection establishment)”定时器在发送SYN报文段建立一条新连接时启动。如
TCP/IP详解--TIME_WAIT状态的必要性
1 TCP关闭时的四次握手 Tcp连接在关闭的的时候,执行的是一个四次握手的过程,下图是客户端发起的关闭时客户端和服务器的<em>状态</em>转换图 具体过程如下: 1、 客户端发送FIN报文段,进入FIN_WAIT_1<em>状态</em>。 2、 服务器端收到FIN报文段,发送ACK表示确认,进入CLOSE_WAIT<em>状态</em>。 3、 客户端收到FIN的确认报文段,进入FIN_WAIT_2<em>状态</em>。 4、 服务器端发
TCP三次握手及关闭时的2MSL分析
TCP/IP三次握手四次挥手,是非常重要的,这个链接与关闭过程也是很简单的,但为什么是三次握手?以及为什么要等待2MSL的<em>状态</em>?大部分人也许听到这个问题就蒙了,这篇博客就综合《TCP/IP详解:卷一》来分析一下原因: 下面看TCP三次握手四次挥手的原理图: 1.为什么要三次握手?      为了避免已失效的连接报文段又到达可服务器。考虑这样一个正常的情况:    假设TCP连接是两
【网络】TIME_WAIT状态相关问题解析
        TIME_WAIT<em>状态</em>是TCP协议中常见的<em>状态</em>,简单来说:TIME_WAIT<em>状态</em>是四次挥手中server向client发送FIN终止连接后进入的<em>状态</em>。下面总结了有关time_wait相关的问题:1、为什么TIME_WAIT<em>状态</em>需要经过2MSL(最大报文段生存时间)才能返回到CLOSE?①、为了保证A发送的最后一个ACK报文段能够到达B。即最后这个确认报文段很有可能丢失,那么B会超时...
Time_wait为什么是2MSL的时间长度?
为了保证客户端发送的最后一个ACK报文段能够到达服务器。这个ACK报文段可能丢失,因而使在Last-ACK<em>状态</em>的服务器收不到对已发送的FIN+ACK报文段的确认。服务器就会超时重传这个报文段,而客户端就能在2MSL时间内收到这个重传的FIN-ACK报文段。接着客户端重传一个确认,重新启动2MSL计时器。最后客户端和服务器端都能正常进入到CLOSED<em>状态</em>。如果服务器端在TIME-WAIT<em>状态</em>下不等待...
【转】TCP TIME_WAIT状态(2MSL)
http://hi.baidu.com/packetslost/blog/item/ea8bc9c398be9551b219a836.htm一般来说,<em>tcp</em>正常关闭需要四个包。比如a和b关闭连接,a先 给b发一个fin,b会进行确认ack,然后b也会发出fin,当a接受到这个fin,并发出最后一个ack后,就会处于time_wait<em>状态</em>。这个时 间长短跟操作系统有关,一般会在1-4分钟,也就是两倍的<em>数据包</em>(<em>2<em>msl</em></em>)最大生存时间。TCP主动关闭方采用TIME_WAIT主要是为
为何GET只发一次TCP连接,POST发两次TCP连接
转自微信公众号WebTechGardenGET和POST是HTTP请求的两种基本方法,要说他们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚的知道什么时候该用什么。当你在面试中遇到这个问题时,你的内心充满了喜悦。你轻轻松
TIME_WAIT状态原理(很清楚)
转自: http://elf8848.iteye.com/blog/1739571 TIME_WAIT<em>状态</em>原理 ---------------------------- 通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT<em>状态</em>。 客户端主动关闭连接时,会发送最后一个ack后,然后会进入TIME_WAIT<em>状态</em>,再停留2个MSL时间(后有MSL的解释),进入C
【修真院java小课堂】什么是TCP/IP协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?
大家好,我是IT修真院西安分院第三期学员,一枚正直纯洁善良的JAVA程序员。 今天给大家分享一下,修真院官网JAVA任务二,深度思考中的知识点——什么是TCP/IP协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次? 一、背景介绍 要想了解什么是TCP/IP协议,就要知道什么是网络协议。书本上的定义:网络协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。...
OSI模型 TCP/IP模型 数据包结构
tcp数据包发送与网络队列长度
<em>tcp</em><em>数据包</em>的发送与网络队列长度的占用
TCP/IP数据包格式详解-包括数据链路层的头部
  图中括号中的数字代表的是当前域所占的空间大小,单位是bit位。 黄色的是数据链路层的头部,一共14字节 绿色的部分是IP头部,一般是20字节 紫色部分是TCP头部,一般是20字节 最内部的是<em>数据包</em>内容 黄色部分:链路层 目的MAC:当前step目的主机的mac地址 源MAC:当前step的源主机的mac地址 类型:指定网络层所用的协议类型,通常是IP协议,0x0800 ...
http post请求发两个tcp包后续
离上次讨论http的post请求已经过去很久,貌似还有同学对于是不是会发送<em>两个</em>包感兴趣,所以这里补充一些内容。 上次已经说到,大多数http post请求,都是一个<em>tcp</em>包发出去的,也就是不存在所谓的先发一个头,然后发body的。 但是我没抓到不代表就没有,毕竟人家还因为ruby的http post请求发多个包导致了明显的延迟,所以到底有没有这样的事情呢?既然人家说了,ruby有,我就拿rub...
(四十七)网络——TCP状态转换图、滑动窗口、半连接状态、2MSL
一、<em>tcp</em><em>状态</em>转换图  下图对排除和定位网络或系统故障时大有帮助,也帮助我们更好的编写Linux程序,对嵌入式开发也有指导意义。      先回顾一下TCP建立连接的三次握手过程,以及关闭连接的四次握手过程:    1、建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。 (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这
关于tcp中time_wait状态的4个问题
面试中time_wait是个常考的问题,<em>tcp</em>网络编程中最不容易理解的也是它的time_wait<em>状态</em>,这也说明了<em>tcp</em>/ip四次挥手中time_wait<em>状态</em>的重要性。 下面通过4个问题来描述它 问题1.time_wait<em>状态</em>是什么2.为什么会有time_wait<em>状态</em>3.哪一方会有time_wait<em>状态</em>4.如何避免time_wait<em>状态</em>占用资源1.time_wait<em>状态</em>是什么 简单来说:ti
TIME-WAIT状态和reuse问题
前言上一篇看了TCP的三次握手与四次挥手,记得四次挥手,主动断开连接的一方最后一个<em>状态</em>就是TIME-WAIT<em>状态</em>,并且一定是主动断开连接的一方,它可能使socket能陷入一种时间比较长的<em>状态</em>,过多的TIME-WAIT会影响新socket的建立。那么TIME-WAIT为什么会存在?它的作用又是什么呢? TCP连接和断开连接<em>状态</em>转换图: TIME-WAIT从上图可以看到,客户端连接在收到服务器的结束
TCP详解(1):简介与数据包
简介:   传输控制协议(英语:Transmission Control Protocol, TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。         在因特网协议族(Internet protocol suite)
【Linux 内核网络协议栈源码剖析】数据包接收(含TCP协议状态变换)
接前文connect 函数剖析(一) 接收<em>数据包</em>函数,release_sock 函数是在 sock.c中,该函数是在 inet socket 层,其内部的数据结构为 sock 结构 该函数被 <em>tcp</em>_connect 函数最后调用,用于接收<em>数据包</em> //如果对应的套接字正忙或被中断,则将<em>数据包</em>暂存到sock结构back_log队列中,这不能算被接收 //<em>数据包</em>要插入receive_queue
自己动手学TCP/IP–tftp协议
TFTP(Trivial File Transfer Protocol,简单文件传输协议) 1.tftp的服务端口号是69 2.tftp是基于udp协议的 3.tftp是明文传输的,是一种比较轻量型的协议,一般用于bootloader加载内核 TFTP工作流程 服务端开启tftp服务,tftp是一种stand_alone服务,不是常驻内存的,是在有需要的时候才去调用的
HTTP POST请求发送两个TCP包?
今天瞎逛的时候看到有一篇16年的文章,说99%的人理解错了HTTP中GET与POST的区别。前面大部分文章都没问题,但是最后有一个,被作者奉为大boss的区别: 我读得书少,你不要骗我。于是我随手拿公司的http服务,做了一次post请求然后用wireshark抓了个包,结果:   好了,http的一个post请求只发了一个<em>tcp</em>包,不用怀疑。   然后为了不愿望作者,我仔细看了...
关于四次挥手的TIME_WAIT状态
如图能够很好的说明这个问题:        当客户端最后一次发送消息时并没有直接进入close<em>状态</em>而是进入TIME_WAIT<em>状态</em>,这是因为TCP是面向连接的协议每一次发送都需要确认对方是否收到消息。客户端最后一次发送消息时可能会由于网络等其他原因导致服务器收不到消息,服务器就会选择从新给客户端发送一个FIN的包,如果客户端处于关闭<em>状态</em>将永远也收不到服务器发给它的消息了。至于这个时间要等多久才
为什么要有time_wait状态
谁先关闭谁先进入time_wait<em>状态</em>。 通常服务器检测到客户端关闭连接后,(系统调用的一种事件类型,发生了这种事件就会告知服务器),就会立刻给客户端发送一个结束报文段来关闭连接,客户端收到这个结束报文段之后,并没有直接进入CLOSE<em>状态</em>而是转移到TIME_WAIT<em>状态</em>。在这个<em>状态</em>,客户端连接要等待一段长为2MSL的时间,才能完全关闭。MSL是TCP报文段在网络中的最大生存时间。 TIME_W...
面试整理之计网(整理ing)
https://www.zhihu.com/question/32255109 https://coolshell.cn/articles/11609.html https://hit-alibaba.github.io/interview/basic/network/TCP.html OSI参考模型 应用层:针对特定应用的协议,并规定应用程序中通信相关的细节 表示层:应用处理的数据...
Tcp协议socket通信数据包粘包问题分析及解决方案
    当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有<em>两个</em>并列的协议:TCP和UDP。其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务。UDP(user datagram protocol,用户数据报协议)是无连接的,提供高效率服务。在实际工程应用中,对可靠性...
基于TCp的数据包传输过程
B/S通信简述 整个计算机网络的实现体现为协议的实现,TCP/IP协议是Internet的核心协议,HTTP协议是比TCP更高层次的应用层协议。 HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。 浏览器(Web Browse
数据在OSI七层模型中的名字 数据帧、数据包、数据报以及数据段
数据帧、<em>数据包</em>、数据报以及数据段  OSI参考模型的各层传输的数据和控制信息具有多种格式,常用的信息格式包括帧、<em>数据包</em>、数据报、段、消息、元素和数据单元。   信息交换发生在对等OSI层之间,在源端机中每一层把控制信息附加到数据中,而目的机器的每一层则对接收到的信息进行分析,并从数据中移去控制信息,下面是各信息单元的说明: 数据帧(Frame):是一种信息单位,它的起始点和目的点都
tcp状态介绍最详细--没有之一
[+] 我们通过了解TCP各个<em>状态</em>,可以排除和定位网络或系统故障时大有帮助。(总结网络上的内容) 1、TCP<em>状态</em> 了解TCP之前,先了解几个命令: linux查看<em>tcp</em>的<em>状态</em>命令: 1)、netstat -nat  查看TCP各个<em>状态</em>的数量 2)、lsof  -i:port  可以检测到打开套接字的状况 3)、  sar -n
计网状态细节部分
github/计算机网络细节部分 计算机网络 重点在TCP/IP协议和HTTP协议。 目录 Chapter 1 Chapter 2 Chapter 3 网络层(IP) 传输层(TCP/UDP) 应用层(HTTP) 内容 网络层(IP) 待补充   TCP三次握手/四次挥手细节: 以下均为转载内容,希望大家多关注原博客: 很清晰的一篇讲述此...
深入浅出TCP协议的2MSL TIME_WAIT状态
2MSL TIME_WAIT<em>状态</em>存在的理由: TIME_WAIT<em>状态</em>的存在有<em>两个</em>理由:(1)让4次握手关闭流程更加可靠;4次握手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭方会再次发一个FIN过来。若主动关闭方能够保持一个2MSL的TIME_WAIT<em>状态</em>,则有更大的机会让丢失的ACK被再次发送出去。(2)防止lost duplicate对后续新建正常链接的传输造成破
关于同一条TCP链接数据包到达顺序的问题
转:http://blog.csdn.net/l1008610/article/details/52197602 以前作者也一直以为<em>数据包</em>先发的不一定先到,直到今天才意识这个问题的缺陷,<em>数据包</em>是不一定先发先到,但是对于TCP有一点特殊,若我们接受的<em>数据包</em>是在应用层,并且应用层用的是TCP的传输协议的话,这个顺序是保证,这个顺序的保证是在传输层保证的,举个例子: client发生数据
window filter platform (wfp)修改TCP数据包的方法
问题描述:使用WFP重定向了TCP链接到本地localhost后,为了能够告诉应用层原始链接的地址和端口,需要修改<em>数据包</em>,即在三次握手后插入一个自定义包。在实现这个小小功能时,遇到了不少问题,走了很多弯路,希望在此记录一下,以备不时之需,也希望能够对有需要的朋友有所帮忙,因为WFP驱动,基本没有中文资料,所有的资料和问题都需要亲自到MSDN找,也是大费周折。 很显然,TCP的重定向,参考了MSDN
当GOLang遇到大量ESTABLISHED时
当go程序运行一段时间后,使用netstat -a查看,就出现大量的ESTABLISHED
TCP的三次握手与四次握手过程及状态转换
这是个网络编程面试的重点知识点,总结一下:建立连接——三次握手TCP通过三次握手建立服务器与客户端之间的连接。 所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个<em>数据包</em>。 三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。
TCP状态机-状态解析
在网络协议栈中, 目前只有tcp提供了一种m
TCP服务器会进入2MSL状态么?
TCP服务器会进入2MSL<em>状态</em>么?rnrnTCP/IP详解上说的,客户自行主动关闭,发出LastACK后进入2MSL<em>状态</em>,rn这样可以让TCP再次发送LastACK以防止LastACK丢失。rn服务器执行被动关闭,不会进入2MSL<em>状态</em>。rn但是书上又用大篇幅介绍了如果服务器进入2MSL<em>状态</em>会发生哪些情况。rnrn请问:服务器如何才能进入2MSL<em>状态</em>呢?
Entity Framework 4 in Action读书笔记——第五章:域模型映射(Domain model mapping)(一)...
本章内容包括: 介绍EDM(Entity Data Model) 创建EF域模型类 描述类 描述数据库 映射类到数据库 首先,让我们讨论一下EDM。 Entity Data Model Entity Data Model(EDM)是EF的核心。事实上,EF就是在对象模型(Ojbect Model)和数据库之间创建一个抽象层,用来降低两者的耦...
TCP中的RST标志(Reset)详解
在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输数据的、TCP的flag标志位里RST在哪些情况下出现。下面我会画一些尽量简化的图来表达清楚上述几点,之后再了解下RST攻击是怎么回事。   1、TCP是什么? TCP是在IP网络层之上的传输层协议,用于提供port到port面向连接的可靠的字节流传输。我来用土语解释下上面的几个
TCP中的拥塞控制
1.拥塞窗口 发送方窗口的大小不仅取决于接收方,而且还取决于网络拥塞的情况。 发送方有2种信息:接收方通告的窗口大小和拥塞窗口的大小,实际的窗口大小事这两者中的最小者。 实际窗口大小 = min(rwnd,cwnd) rwnd:接收窗口大小。 cwnd:拥塞窗口大小。 2.拥塞策略 TCP处理拥塞的一般策略基于3个阶段:慢速启动,拥塞避免和拥塞检测。 2.1.慢
利用Charles和tcpdump抓取终端与服务器之间的数据包
需求:分析手机与服务器间数据交互情况,分别在服务器和手机端抓取数据 解决: 第一步、手机终端<em>数据包</em>抓取 使用工具:Charles,配置代理端口 前提:手机接入wifi和Charles运行的主机在同一个局域网 手机配置:修改手机wifi配置,设置代理,代理ip为运行Charles的主机ip,端口为Charles配置的端口 测试:用手机随便访问下互联网,Charles应该可以抓取相应的数据...
tcp协议是面向连接的,而http是无状态的,面向连接和无状态怎么感觉好像优点矛盾呢?...
 不矛盾,一个是面向链接的,一个是无连接的。面向链接的可靠些,无连接的就不那么可靠。主要是因为这<em>两个</em>协议所处的层不一样。互联网的设计者认为,用户层应是简单的,直接的。所以无连接的设计能够简化设备的成本,利于互联网的开放式发展。网络的各个接入点和SP他们因为要处理来自用户的数据,所以将复杂的设备和可靠的协议放在这里。也是合乎情理的。 回答者: jolux - 魔法师 五级  12-25 16:40...
TCP四次挥手及相关问题
1、TCP四次挥手过程图 1、第一次挥手 客户端进程调用close或shutdown函数发出连接释放报文,并且停止发送数据。该报文首部中,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN_WAIT_1<em>状态</em> TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。 2、第二次挥手 服务器收到连接释放报文,发出确认报文,该报文中...
linux下原始ip数据包包头(tcp头、udp头)的获取和分析
前言     在有些时候我们需要直接抓取并分析原始ip<em>数据包</em>(比如说netfilter内核框架中<em>数据包</em>的分析、原始套接字中<em>数据包</em>的分析),但是我们所能获得的ip<em>数据包</em>通常只是一个若干字节的在连续地址空间中存储的数据,比如存在数组char[MSG_SIZE]中,下面介绍如何分析原始ip<em>数据包</em>中的数据。     在开始分析包头之前我们假设原始ip<em>数据包</em>存储在缓存char buf[MSG_S
端口扫描原理(转)
来源:http://wmjie.51.net/swords/ 关键字:    TCP/IP,UDP,三阶段握手,SYN扫描,FIN扫描,秘密扫描,间接扫描,诱骗扫描,指纹,协作扫描。             -------------------------------------------------------------------------------- 正文: 
协议数据单元PDU
术语协议数据单元(PDU,Protocol Data Unit)有以下几层意义。网络的对等实体传送的信息单元,包括了控制信息,地址信息,或者数据。 在协议系统里,在指定的协议层上传送的数据单元,包含了该层的协议控制信息和用户信息。 在OSI模型系统里,PDU和最底下四层相关。物理层(一层)PDU指数据流(Bit Stream)。 数据链路层(二层)PDU指数据帧(Frame)。 网络层(三层)PDU指<em>数据包</em>(Packet)。 传输层(四层)PDU指数据段(Segment)。 <br
socket服务器开发中的SO_REUSEADDR选项与TIME_WAIT
https://www.cnblogs.com/qiaoconglovelife/p/5416715.htmlhttps://blog.csdn.net/fz835304205/article/details/16980163
网络编程(25)—— 详解TCPIP断开连接后的Time-wait状态
之前在《socket选项之SO_REUSEADDR和TCP_NODELAY》一文中简单介绍过断开连接的一方套接字进入的Time-wait<em>状态</em>。现在我们详细的讨论该<em>状态</em>,以解决下面疑问:         1、 Time-wait<em>状态</em>是怎么产生的? 2、客户端在断开连接后会进入Time-wait<em>状态</em>吗? 3、Time-wait<em>状态</em>有什么用? 4、Time-wait<em>状态</em>下的端口号能否设置被其他套
解读TCP/UDP数据包(二):TCP数据包结构
1、图 TCP<em>数据包</em>由首部和数据组成, 每行4个字节(32位) 其中首部最少20个字节(5行),最多60个字节(15行),选项部分是可选的; TCP首部并没有字段表明整个<em>数据包</em>的长度,是因为TCP<em>数据包</em>是包含在IP<em>数据包</em>中的,而IP<em>数据包</em>已有长度字段,除去IP首部和TCP首部,剩余部分就是TCP包的净荷数据。 2、首部固定部分 1、  第一行:源端口2字节,目的
TCP/IP学习(28)——数据包完整接收流程
摘自:http://blog.chinaunix.net/uid-23629988-id-272460.html 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。 作者:gfree.wind@gmail.com 博客:linuxfocus.blog.china
解读TCP/UDP数据包(三):UDP数据包结构
1、图 UDP<em>数据包</em>由首部和数据组成, 每行4个字节(32位) 首部固定长度为8个字节(2行) 2、首部 1、  第一行:源端口16位,目的端口16位 表示发送方和接收方的端口号   2、  第二行:UDP包长度16位,UDP校验和16位 UDP包长度:         包括UDP首部在内的以字节为单位的UDP数据报总长度; 校验和:
思科CCNA第二学期第十章答案
1.请参见图示。在从路由器 JAX 发送到路由器 ATL 的 LSP 中,可以看到哪种类型的信息? 跳数 路由的正常运行时间 链路的开销 正在使用的所有路由协议的列表   2.哪两种事件将会导致链路<em>状态</em>路由器向所有邻居发送 LSP?(选择两项。)
强连通分量及缩点tarjan算法解析
强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Time, DFN[N], Low[N]; DFN[i]表示 遍历到 i 点时是第几次dfs Low[u] 表示 以u点为父节点的 子树 能连接到 [栈中] 最上端的点   int
电子科技大学信号与系统辅导班笔记下载
电子科技大学信号与系统辅导班的笔记,图片版 相关下载链接:[url=//download.csdn.net/download/rtgchym/1979685?utm_source=bbsseo]//download.csdn.net/download/rtgchym/1979685?utm_source=bbsseo[/url]
easy odbc class下载
C++ wrappers for win32 ODBC function calls 相关下载链接:[url=//download.csdn.net/download/zoadex/2103933?utm_source=bbsseo]//download.csdn.net/download/zoadex/2103933?utm_source=bbsseo[/url]
VB连接SQL数据库制作的游乐场管理系统下载
由于时间隔地比较长,密码和用户名我不记得了,但是在VB中打开查看代码的话应该可以发现,有用的话就下载吧 相关下载链接:[url=//download.csdn.net/download/NEWJSJ/2176149?utm_source=bbsseo]//download.csdn.net/download/NEWJSJ/2176149?utm_source=bbsseo[/url]
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 学习java究竟能做什么 哪学python
我们是很有底线的