tcp一些要点

三次握手建立

1、客户端向服务端发送syn。

2、服务端向客户端回复syn+ack。

3、客户端向服务端确认ack。

建立链接的阶段, 客户端/服务端会确认mss(maximum segment size)。

客户端发送mssA,服务器响应mssB。二者之间小的那个作为MSS。

建立的过程一边确认RTT

四次挥手断开

1、客户端向服务端发送fin。

2、服务端向客户端回复ack。

3、服务端关闭连接,并且发送fin给客户端。

4、客户端向服务端发送ack确认。

TCP传输要点

tcp是被设计为有状态的,有连接的通讯协议。

保证可靠性传输:校验和、序列号、确认应答、重发控制、连接管理、窗口控制等。

先假设是有源头、目标这2个点。

1、通过序列号与应答确保可靠性。

目标需要一定时间段内,响应需要的结果给源头。否则重发。(源头重发次数也不能太多,否则目标受不了^_^)

需要的结果用序号标记了。

2、重发控制——RTT(round trip time)

重发超时是指:重发数据之前,会等待的一段时间。

每次数据包往返,都会计算往返时间(RTT)

达到一定次数的重发,即表示异常。不再重发。

 

3、连接管理。

TCP是有连接的。数据传输之前做了通信两端的工作。3次握手建立,4次挥手断开。

建立:

源头请求syn

目标响应syn+ack

源头针对目标的syn响应ack。

断开:

源头请求fin

目标响应ack

目标向源头发出fin

源头响应ack

4、段、缓冲区、滑动窗口概念

是TCP传输的最小单位。建立TCP链接,3次握手的时候,双方确认发送数据包的大小,MSS。(max segment size)

(发送一个段就回复, 这样子太慢)以“窗口”大小表示无需等待应答就可以继续发送的数量。

在缓冲区中存放窗口数量的(假设窗口大小4。序号是1,2,3,4),这些都发出去了,根据响应可以得知哪一些段需要重发。(假设3的应答有了即使没有1、2的应答,那么只需要重传4)这就是滑动窗口

为了避免负荷过高。流量控制的机制,控制窗口大小。发送端不会发送大于窗口大小的。发送端过了超时时间,则发送一个窗口探测的包。如果探测到接收端缓冲区满了(窗口放满),响应窗口需要调整。

5、拥塞控制

slow-start threshold(ssthresh):慢启动门限。

congestion-window (cwnd):拥塞控制窗口。

5.1慢启动

避免网络拥塞。

发送方在慢启动的基础上。有一个拥塞控制窗口(cwnd)。经过一个RTT,cwnd以2的次方变大,变大直到内核定义的ssthresh值为止。

5.2拥塞避免

减少网络拥塞。

当出现网络拥塞,比如丢包时,将SSTHRESH设为原先的一半,然后将cwnd设为1,执行慢开始算法。

5.3快重传

一旦接收方发现数据丢失,就对该丢失的包做重传请求;

发送方收到3次该包的重传请求,则重传该包;

ssthresh 值减半;

cwnd设置为减半后的ssthresh 值;

执行拥塞避免算法。

*1. cwnd < ssthresh, 继续使用慢开始算法;
*2. cwnd > ssthresh,停止使用慢开始算法,改用拥塞避免算法;
*3. cwnd = ssthresh,既可以使用慢开始算法,也可以使用拥塞避免算法;

TCP定时器&定时器的作用

重传计时器:Retransmission Timer
超时则重传

坚持计时器:Persistent Timer

零窗口通知

保活计时器:Keeplive Timer

服务器收到请求,则复位这个timmer(通常2个小时)

若服务器超过2小时还没有收到来自客户的信息,就发送探测报文段,若发送了10个探测报文段(没75秒发送一个)还没收到响应,则终止连接

时间等待计时器:Time_Wait Timer

处理重复fin请求。

TCP首部

SYN 表示建立连接,

FIN 表示关闭连接,

ACK 表示响应,

PSH 表示有 DATA数据传输,

RST 表示连接重置。

PS:RST出现表明网络不通、不太好。

TCP DUP xxx  传输的时候缺少了xxx

tcp协议是在ip协议之上的,所以tcp协议有端口,没有ip是说得过去的。

参考资料

滑动窗口协议

关键词:拥塞控制、滑动窗口、CWND、SSTHRESH

http://www.cnblogs.com/woaiyy/p/3554182.html

重传(tcp retransmission)

参考:

http://blog.chinaunix.net/uid-15014334-id-3451855.html

http://en.wikipedia.org/wiki/Retransmission_(data_networks)

wiki的慢启动:

http://en.wikipedia.org/wiki/Slow-start

tcp定时器:

http://blog.csdn.net/macrossdzh/article/details/5967676

三次握手 四次挥手:

http://blog.sina.com.cn/s/blog_60a4fcef0101e81p.html

http://blog.csdn.net/metasearch/article/details/2147213

首部:

http://www.cnblogs.com/azraelly/archive/2012/12/25/2832393.html

时间: 2024-12-21 12:49:03

tcp一些要点的相关文章

TCP协议要点和难点全解

说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面 2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的 3).针对对象:对TCP已经有了全面了解的人.因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义 4).除了<TCP/IP详解>(卷一,卷二)以及<Unix网络编程>以及Linux源代码之外,学习网络更好的资源是RFC 5).本文给出一个提纲,如果想了解细节,请直接查阅RFC 6).翻

十八、十九天笔记总结

一:网络编程三要素+UDP协议 1.1 1.网络通信介绍 2.tcp/ip 3.udp/ip   1.2 Socket通信          *网络编程三要素:                    ip:                             一个计算的标示(找到这个计算机)                    端口:                             应用程序都会对应一个端口,用来进行通信,有效端口:0~65535,其中0~1024系统使用或保留端口

数据通讯与网络 第五版第24章 传输层协议-TCP协议部分要点

上一博客记录了UDP协议的关键要点,这部分记录TCP协议的关键要点. 24.3 传输控制协议(TRANSMISSION CONTROL PROTOCOL) TCP(Transmission Control Procotol )协议是一个面向连接,可靠的协议.TCP为了提供面向连接的服务,专门定义了连接创建,数据传输.连接终止阶段.TCP使用GBN和SR协议来提供可靠性.为了实现可靠性这个目标,TCP使用检验和来进行误差控制.重传来处理数据包丢失和冲突.同时还利用了应答和计数机制.在本节,首先讨论

tcp滑动窗口与拥塞控制

TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现.一.滑动窗口协议     所谓滑动窗口协议,自己理解有两点:1. "窗口"对应的是一段可以被发送者发送的字节序列,其连续的范围称之为"窗口":2. "滑动"则是指这段"允许发送的范围"是可以随着发送的过程而变化的,方式就是按顺序"滑动".在引入一个例子来说这个协议之前,我觉得很有必

ZooKeeper架构设计及其应用要点

ZooKeeper是一个开源的分布式服务框架,它是Apache Hadoop项目的一个子项目,主要用来解决分布式应用场景中存在的一些问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置管理等,它支持Standalone模式和分布式模式,在分布式模式下,能够为分布式应用提供高性能和可靠地协调服务,而且使用ZooKeeper可以大大简化分布式协调服务的实现,为开发分布式应用极大地降低了成本. 总体架构 ZooKeeper分布式协调服务框架的总体架构,如图所示: ZooKeeper集群由一组

tcp窗口滑动以及拥塞控制(转)

转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现.一.滑动窗口协议     关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议.     所谓滑动窗口协议,自己理解有两点:1. "窗口"对应的是一段可以被发送者发送的字节序列,其连续的范围称

TCP协议疑难杂症全景解析

说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人.因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了<TCP/IP详解>(卷一,卷二)以及<Unix网络编程>以及Linux源代码之外,学习网络更好的资源是RFC 5).本文给出一个提纲,如果想了解细节,请直接查阅RFC 6).翻来覆去

【netty】Netty系列之Netty百万级推送服务设计要点

1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为如下几类: Netty是否可以做推送服务器? 如果使用Netty开发推送服务,一个服务器最多可以支撑多少个客户端? 使用Netty开发推送服务遇到的各种技术问题. 由于咨询者众多,关注点也比较集中,我希望通过本文的案例分析和对推送服务设计要点的总结,帮助大家在实际工作中少走弯路. 1.2. 推送服务

tcp协议头窗口,滑动窗口,流控制,拥塞控制关系

参考文章 TCP 的那些事儿(下) http://coolshell.cn/articles/11609.html tcp/ip详解--拥塞控制 & 慢启动 快恢复 拥塞避免 http://blog.csdn.net/kinger0/article/details/48206999 TCP window Full http://blog.csdn.net/abccheng/article/details/50503457 名词解释 MTU:maximum transmission unit,最大