首页 > 其他分享 >三次握手四次挥手报文分析

三次握手四次挥手报文分析

时间:2022-10-22 18:47:38浏览次数:40  
标签:字节 ack 数据 报文 发送 四次 Nagle 数据包 握手

 

三次挥手的原因

当server开启Delayed Ack,收到clinet的FIN后,发现发送ACK条件不满足,因此不会发送ACK,当服务发送FIN时,FIN和ACK会合并发出,因此就会出现三次挥手的场景


Delayed Ack

TCP协议规定在接受到数据段时需要向对方发送一个确认,但如果只是单纯的发送一个确认,代价会比较高(20字节的ip首部,20字节的tcp首部),最好能附带响应数据一起发送给对方.所以tcp在何时发送ack给对方有以下规定:
1) 当有响应数据要发送时,ack会随响数据立即发送给对方.
2) 如果没有响应数据,ack的发送将会有一个延迟,以等待看是否有响应数据可以一起发送,这称是"Delayed Ack".但这个延迟最多不会超过500ms,一般为200ms.如果在200ms内有数据要发送,那么ack会随数据一起立即发送给对方.注意这里的延迟200ms,不是指的从接受到对方数据到发送ack的最长等待时间差.而是指的内核启动的一个定时器,它每隔200ms就查看下是否有ack要发送.例如:假设定时器在0ms时启动,对方的数据段在
185ms时到达,那么ack最迟会在200ms时发送,而不是385ms时发送.
3) 如果在等待发送ack期间,对方的第二个数据段又到达了,这时要立即发送ack.但是如果对方的三个数据段相继到达,那么第二个数据段到达时ack立即发送,但第三个数据段到达时是否立即发送,则取决于上面两条.


Nagle Algorithm

在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Nagle algorithm),这是使用它的发明人John Nagle的名字来命名的,John Nagle在1984年首次用这个算法来尝试解决福特汽车公司的网络拥塞问题(RFC 896),该问题的具体描述是:如果我们的应用程序一次产生1个字节的数据,而这个1个字节数据又以网络数据包的形式发送到远端服务器,那么就很容易导致网络由于太多的数据包而过载。比如,当用户使用Telnet连接到远程服务器时,每一次击键操作就会产生1个字节数据,进而发送出去一个数据包,所以,在典型情况下,传送一个只拥有1个字节有效数据的数据包,却要发费40个字节长包头(即ip头20字节+tcp头20字节)的额外开销,这种有效载荷(payload)利用率极其低下的情况被统称之为愚蠢窗口症候群(Silly Window Syndrome)。可以看到,这种情况对于轻负载的网络来说,可能还可以接受,但是对于重负载的网络而言,就极有可能承载不了而轻易的发生拥塞瘫痪。
针对上面提到的这个状况,Nagle算法的改进在于:如果发送端欲多次发送包含少量字符的数据包(一般情况下,后面统一称长度小于MSS的数据包为小包,与此相对,称长度等于MSS的数据包为大包,为了某些对比说明,还有中包,即长度比小包长,但又不足一个MSS的包),则发送端会先将第一个小包发送出去,而将后面到达的少量字符数据都缓存起来而不立即发送,直到收到接收端对前一个数据包报文段的ACK确认、或当前字符属于紧急数据,或者积攒到了一定数量的数据(比如缓存的字符数据已经达到数据包报文段的最大长度)等多种情况才将其组成一个较大的数据包发送出去。

标签:字节,ack,数据,报文,发送,四次,Nagle,数据包,握手
From: https://www.cnblogs.com/zhanggaofeng/p/16816918.html

相关文章

  • TCP三次握手过程
    第一次握手:主机A通过向主机B发送一个含有同步序列号的标志位的数据段给主机B,向主机B请求建立连接,通过这个数据段,主机A告诉主机B两件事:我想要和你通信;你可以用哪个序列号......
  • 报文、报文段、分组、包、数据报、帧、数据流 辨析
    报文、报文段、分组、包、数据报、帧、数据流的概念区别帧、报文、数据包的差别END......
  • http 协议及报文头部结构
    http相关概念:https://www.cnblogs.com/heyongshen/p/16777541.html浏览器访问网页的过程:1.浏览器输入域名后通过DNS将域名解析为web站点的IP地址2.因为web使用的是......
  • SDN第四次实验
    实验4:开源控制器实践——OpenDaylight一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境Ub......
  • 四次挥手可以改成三次吗
    这种是看情况,取决于服务端是否还有未发送的数据和是否开启了TCP延时发送机制。如果服务端没有了发送数据,并且开启了TCP延时机制,此时第二次和第三次挥手是可以一起发送的,即......
  • http 报文
    一、报文格式:一个HTTP请求报文由请求行(requestline)、请求头部(header)、空行和请求数据4个部分组成,具体格式如下;1.请求报文格式起始行<method>      空格   <r......
  • Windows远程桌面 TLS协议握手错误 --解决
    1 VMwarevSphereClient下的windows虚拟机通过堡垒机连接提示TLS协议握手错误;据悉,之前做过SSL配置设置,可能对此有影响。   局域网下测试连接也提示出现了......
  • 如何修复“SSL 握手失败”
    为您的网站设置安全套接字层(SSL)证书从来都不是简单的事。您可以免费生成证书,也可以由托管服务提供商给您安装证书,但是,如果您没有正确地配置您的证书,您可能会遇到诸如“SSL握......
  • 如何修复“SSL 握手失败”
    为您的网站设置安全套接字层(SSL)证书从来都不是简单的事。您可以免费生成证书,也可以由托管服务提供商给您安装证书,但是,如果您没有正确地配置您的证书,您可能会遇到诸如“SSL......
  • TCP/IP三次握手
    TCP/IP三次握手----为了保证能建立一个安全可靠的连接发送标识:SYN--使得接受端知道,本端可以正常接受到消息回复标识:ACK--回复给发送端,使得发送端可以知道,对端可以接收到......