动手学习TCP:4种定时器】的更多相关文章

上一篇中介绍了TCP数据传输中涉及的一些基本知识点.本文让我们看看TCP中的4种定时器. TCP定时器 对于每个TCP连接,TCP管理4个不同的定时器,下面看看对4种定时器的简单介绍. 重传定时器使用于当希望收到另一端的确认. 该定时器是用来决定超时和重传的. 由于网络环境的易变性,该定时器时间长度肯定不是固定值:该定时器时间长度的设置依据是RTT(Round Trip Time),根据网络环境的变化,TCP会根据这些变化并相应地改变超时时间. 坚持定时器(persist)使窗口大小信息保持不断…
TCP是一个十分复杂的协议,通过前面几篇文章只涉及了TCP协议中一些基本的概念. 虽然说都是一些TCP最基本的概念,但是试验过程中一直在踩坑,例如:TCP flag设置错误,seq.ack号没有计算正确,TCP状态变迁错误等等. 通过Pcap.Net真正实验一下才发现了很多TCP协议中要注意的细节,例如:Ack.Seq号的计算,EthernetLayer.IpV4Layer .TcpLayer的层层包装,不同TCP flags的含义等等. TCP中还有很多重要的内容,先做个记录,后面再深入了解.…
前面两篇文章介绍了TCP状态变迁,以及通过实验演示了客户端和服务端的正常状态变迁. 下面就来看看TCP状态变迁过程中的几个特殊状态. SYN_RCVD 在TCP连接建立的过程中,当服务端接收到[SYN]包后,就会发送[SYN, ACK]包,然后进入SYN_RCVD状态. 根据前面文章的介绍,服务器的上述行为被称为被动打开,并且会等待来自客户的的[ACK]包来完成TCP连接的建立.但是,如果此时客户端没有响应,服务端就会超时重传[SYN, ACK]包. 回想一下我们在"动手学习TCP: 环境搭建&…
前面的文章介绍了TCP状态变迁,以及TCP状态变迁图中的一些特殊状态. 本文主要看看TCP数据传输过程中需要了解的一些重要点: MSS(Maximum Segment Size) Seq号和Ack号的计算 TCP半连接 TCP数据传输实验 在开始介绍上面列出的内容之前,先看看实验程序的运行. 本文的例子代码是基于"动手学习TCP:客户端状态变迁"文章中的例子. 首先,修改了"BuildTcpPacket"这个函数,增加了两个功能: 正常情况下TCP首部是20个字节,…
前面的文章介绍了TCP状态变迁,以及TCP状态变迁图中的一些特殊状态. 本文主要看看TCP数据传输过程中需要了解的一些重要点: MSS(Maximum Segment Size) Seq号和Ack号的计算 TCP半连接 TCP数据传输实验 在开始介绍上面列出的内容之前,先看看实验程序的运行. 本文的例子代码是基于"动手学习TCP:客户端状态变迁"文章中的例子. 首先,修改了"BuildTcpPacket"这个函数,增加了两个功能: 正常情况下TCP首部是20个字节,…
TCP使用四种定时器: 重传定时器(Retransmission Timer).坚持定时器(Persistent Timer).保活定时器(Keeplive Timer).时间等待定时器(Time_Wait Timer). 重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间.当TCP发送报文段时,就创建重传计时器,若在计时器超时之前收到对报文段的确认,撤销计时器:若在计时器超时之后收到,则重传报文,复位计时器. 坚持定时器:ACK的传输不可靠,TCP不对ACK报文段进行…
TCP 是提供可靠的传输层,它使用的方法之一就是确认从另一端收到的数据.但是数据和确认都可能会丢失.TCP 通过在发送时设置一个定时器来解决这个问题.如果当定时器溢出时还没收到确认,它就会重传该数据.关键在于超时和重传策略,即怎样决定超时的时间间隔和如何确定重传的频率. 对于每个连接,TCP 管理着四个不同的定时器:重传定时器.坚持定时器.保活定时器 以及 2MSL 定时器. 重传定时器 为了防止丢失数据报文段或确认报文段,当 TCP 发送报文段时,启动了特定报文段的重传计时器,若在计时器超时之…
前一段时间通过Wireshark抓包,定位了一个客户端和服务器之间数据传输的问题.最近就抽空看了看<TCP/IP详解 卷1>中关于TCP的部分,书中用了很多例子展示了TCP/IP协议中的一些基本概念. 所以,也准备自己动手,通过一些简单的实验来进一步了解一下TCP中的一些基本概念. 环境搭建和配置 在开始进行实验之前,首先看看实验环境的搭建: Wireshark:用来抓取网络上的包,可以清楚的看到TCP/IP协议层,以及每层的详细信息,通过此处下载 一台虚拟机:如果客户端和服务端都在本机,那么…
上一篇文章中介绍了TCP连接的建立和终止. 通过实际操作了解到,在TCP协议工作过程中,客户端和服务端都会接收或者发送特定标志的TCP数据包,然后进入不同的状态. 也就是说,TCP协议就是一个包含多种状态转换的状态机,下面介绍一下TCP状态机. TCP状态机 网络上的传输是没有连接的,包括TCP也是一样的.TCP所谓的"连接",其实是在通讯的双方维护一个"连接状态",让它看上去好像有连接一样. 所以,了解TCP状态机,以及TCP的状态变迁是非常重要的. TCP 协议…
TCP是一个面向连接的协议,任何一方在发送数据之前,都必须先在双方之间建立一条连接.所以,本文就主要看看TCP连接的建立和终止. 在开始介绍TCP连接之前,先来看看TCP数据包的首部,首部里面有很多重要的字段,在我们实现程序的时候需要进行设置. TCP的首部 在OSI七层模型中,上层的数据包都会作为下层数据包的数据部分(payload). 也就是说,当构造TCP数据包的时候,会把应用层的数据包作为TCP包的数据部分,然后加上TCP头构成TCP数据包:同样,当构造IP数据包的时候,整个TCP包就会…