TCP 状态图网摘

from unkonwn

1.CLOSED:起始点,在超时或者连接关闭时候进入此状态。

2.LISTEN:svr端在等待连接过来时候的状态,svr端为此要调用socket,
bind,listen函数,就能进入此状态。此称为应用程序被动打开(等待客户端来连接)。

3.SYN_SENT:客户端发起连接,发送SYN给服务器端。如果服务器端不能连接,则直接进入CLOSED状态。

4.SYN_RCVD:跟3对应,服务器端接受客户端的SYN请求,服务器端由LISTEN状态进入SYN_RCVD状态。同时服务器端要回应一个ACK,同时发送一个SYN给客户端;另外一种情况,客户端在发起SYN的同时接收到服务器端得SYN请求,客户端就会由SYN_SENT到SYN_RCVD状态。

5.ESTABLISHED:服务器端和客户端在完成3次握手进入状态,说明已经可以开始传输数据了。

以上是建立连接时服务器端和客户端产生的状态转移说明。相对来说比较简单明了,如果你对三次握手比较熟悉,建立连接时的状态转移还是很容易理解。

接下来服务器端和客户端就进行数据传输。。。。,当然,里面也大有学问,就此打住,稍后再表。

下面,我们来看看连接关闭时候的状态转移说明,关闭需要进行4次双方的交互,还包括要处理一些善后工作(TIME_WAIT状态),注意,这里主动关闭的一方或被动关闭的一方不是指特指服务器端或者客户端,是相对于谁先发起关闭请求来说的:

6.FIN_WAIT_1:主动关闭的一方,由状态5进入此状态。具体的动作时发送FIN给对方。

7.FIN_WAIT_2:主动关闭的一方,接收到对方的FIN
ACK,进入此状态。由此不能再接收对方的数据。但是能够向对方发送数据。

8.CLOSE_WAIT:接收到FIN以后,被动关闭的一方进入此状态。具体动作时接收到FIN,同时发送ACK。

9.LAST_ACK:被动关闭的一方,发起关闭请求,由状态8进入此状态。具体动作时发送FIN给对方,同时在接收到ACK时进入CLOSED状态。

10.CLOSING:两边同时发起关闭请求时,会由FIN_WAIT_1进入此状态。具体动作是,接收到FIN请求,同时响应一个ACK。

11.TIME_WAIT:最纠结的状态来了。从状态图上可以看出,有3个状态可以转化成它,我们一一来分析:

a.由FIN_WAIT_2进入此状态:在双方不同时发起FIN的情况下,主动关闭的一方在完成自身发起的关闭请求后,接收到被动关闭一方的FIN后进入的状态。

b.由CLOSING状态进入:双方同时发起关闭,都做了发起FIN的请求,同时接收到了FIN并做了ACK的情况下,由CLOSING状态进入。

c.由FIN_WAIT_1状态进入:同时接受到FIN(对方发起),ACK(本身发起的FIN回应),与b的区别在于本身发起的FIN回应的ACK先于对方的FIN请求到达,而b是FIN先到达。这种情况概率最小。

C情况不太理解,貌似可以分到另外两个分支,书上说的不甚明白,Note
here

关闭的4次连接最难理解的状态是TIME_WAIT,存在TIME_WAIT的2个理由:

1.可靠地实现TCP全双工连接的终止。

2.允许老的重复分节在网络中消逝。

TCP 状态图网摘,布布扣,bubuko.com

时间: 2024-12-19 13:26:11

TCP 状态图网摘的相关文章

socket 网摘

一.基本socket函数 Linux系统是通过提供套接字(socket)来进行网络编程的.网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符.socket也有一个类似于打 开文件的函数:socket(),调用socket(),该函数返回一个整型的socket的描述符,随后的连接建立.数据传输等操作也都是通过该socket实现. 1.socket函数 syntax:    int socket(int domain, int type, int protocol); 功能

Delphi 中DataSnap技术网摘

Delphi2010中DataSnap技术网摘 一.为DataSnap系统服务程序添加描述 这几天一直在研究Delphi 2010的DataSnap,感觉功能真是很强大,现在足有理由证明Delphi7该下岗了. DataSnap有三种服务模式,其中Service Application方式建立的Windows服务没有描述,描述部分是空的,可用如下方法添加服务描述: procedure TServerContainer.ServiceAfterInstall(Sender: TService);

Volley学习(网摘)

Android网络通讯架构--Volley 1. Volley提供的功能简单来说,它提供了如下的便利功能: JSON,图像等的异步下载: 网络请求的排序(scheduling) 网络请求的优先级处理 缓存 多级别取消请求 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求) 2.学习前的准备:下载volley源码打成jar包(我通过这个网址下载不下了,但是网络上很多好心人已经分享了源码) 下载地址: mirror of volley library from andr

Bloglines订阅Blog部落格RSS网摘 - Blog透视镜

网络信息蓬勃发展,Blog部落格越来越普及,如果逐一地去浏览网站,势必费时费力,倘若信息可以自己送上门,那就可以节省不少时间,就好像看报纸的标题,有兴趣才点连结,进到网站浏览文章内容,Bloglines Reader阅读器提供在线版阅读RSS,订阅RSS网摘,方便读者快速地浏览文章,找到所需的信息. 阅读全文>> Bloglines订阅Blog部落格RSS网摘 - Blog透视镜

Feedly订阅Blog部落格RSS网摘 - Blog透视镜

网络信息爆炸的时代,如何更有效率地阅读文章,订阅RSS网摘,可以快速地浏览文章标题,当对某些文章有兴趣时,才点下连结连到原网站,阅读更详细的文章,Feedly Reader阅读器除了提供在线版订阅RSS网摘,也有浏览器套件与App下载,简约接口设计,让阅读RSS网摘,就像阅读杂志一样舒服愉快. 阅读全文>> Feedly订阅Blog部落格RSS网摘 - Blog透视镜

知识管理:网摘如何快速存储不丢图不丢GIF、云同步、发博客。

摘要:我们在做文章收集或个人知识管理的时候,为了防止网络文章摘录内容丢失经常要归档.发布.编辑.共享一些从网上收集来的文摘,文摘有图文可能还有GIF动画,如用word,pdf 等板式会受到影响,且gif动画文件也会变成静态失去意义,本文主要是分享如何快速的复制粘贴发布.归档.发博文网络文章摘录. 一般来说,收集或个人知识管理(PKM)就是为了更高效的存储.检索.编辑.分享.组织吸纳创新所以本文,主要描述如何快速的存档网摘.发博客分享两个教程. 一.自用归档 可以选用 QQ空间日志:复制摘录的内容

网摘 SQL Server

http://soft.chinabyte.com/database/215/12374715.shtml . 软件与服务 我们也在这里: . 企业计算 大数据 存储 软件与服务 数据库/开发 服务器 操作系统 网 络 安 全 . 您的位置: 比特网 > 软件与服务 > 正文 . 分享一个 SQLSERVER脚本 发布时间:2014-07-17 16:21:00来源:论坛 作者:译名 . . 关键字:数据库 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间.   这里共享一个脚

170402网摘题目

from: http://blog.csdn.net/xiaoluodecai/article/details/48223311 1.下列减少内存碎片的方法有哪些是正确的 正确的: 频繁调用的子函数尽量使用栈内存 系统申请一大块内存,自己实现内存分配和释放,定时清理内存. 解析: C/C++中的malloc/free是从堆中动态申请和释放内存的,是非常耗时的: 栈内存速度比堆内存快,因为栈结构简单,只需要弹出或者入栈就可以移动指针了,而在堆中,需要查找空闲内存,申请内存等操作,所以比较慢: 分配

网站前后端性能优化(网摘)

1. 减少http请求数 合并文件,通过把所有脚本置于一个脚本文件里或者把所有样式表放于一个样式表文件中,从而减少Http请求的数量. CSS Sprites是减少图片请求的首选方案.把所有的背景图片合并到一张图中,使用CSS的background-image 和background-position 属性去控制展现恰当的图片区域. 内联图片使用data: URL scheme 把图片数据嵌入页面,但这会增加Html文档的大小.2. 使用内容分布式网络 内容分布式网络(CDN)是一系列分布在不同