第十八章 TCP连接的建立和终止
来源:互联网 发布:棋牌源码论坛eenot 编辑:程序博客网 时间:2024/05/19 23:16
18.2 连接的建立与终止
18.2.3 建立连接协议
为了建立一条TCP连接:
(1)请求端发送一个SYN段指明客户打算连接的服务器端口,以及初始序号(ISN)。这个SYN为报文段1.
(2)服务器发回包含服务器的初始序号的SYN报文段作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN占用一个序号
(3)客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN进行确认
以上过程称作三次握手
发送第一个SYN的一端将执行主动打开,接受这个SYN并发回下一个SYN的另一端执行被动打开。
18.2.4 连接终止协议
建立一个连接需要三次握手,而终止一个连接需要经过4次握手。
这是由TCP的半关闭造成的。既然一个TCP全双工,因此每个方向必须单独地进行关闭。
和SYN一样,FIN占用一个序号
下图是连接的建立和终止时间系列
18.3 连接建立超时
大多数系统建立一个新连接的最长时间限制是75秒。
18.3.1 第一次超时时间
TCP软件采用一种500ms的定时器。这种500ms的定时器用于确定本节中的各种TCP超时。
当我们键入命令时,将建立一个6秒的定时器(12个时钟滴答),但它可能在之后的5.5~6秒内的任意时刻超时。
尽管定时器初始化为12个时钟滴答,但定时器会在设置后的第一个0~500ms中的任意时刻减一。从那以后,定时器大约每隔500ms减一,但在第一个500ms内是可变的。
18.4 最大报文段长度
最大报文段长度(MSS)表示TCP传往另一端的最大数据的长度。当建立一个连接时,连接的双方都要通告各自的MSS。
当建立一个连接时,每一方都有用于通告它期望接受的MSS选项(MSS选项只能出现在SYN报文段中)。如果一方不接受来自另一方的MSS值,则MSS就定为默认值536字节(这个默认值允许20字节的IP首部和20字节的TCP首部以适合576字节的IP数据报)
对于一个以太网,MSS值可达1460字节。
18.6 TCP的状态变迁图
只有当SYN_RCVD状态是从LISTEN状态进入,而不是从SYN_SENT状态进入时从SYN_RCVD状态回到LISTEN的状态变迁才是有效地.
18.6.2 平静时间的概念
对于来自某个连接的较早替身的迟到报文段,2MSL等待可防止将它解释成使用相同插口对新连接的一部分.但这只有在处于2MSL等待连接中的主机处于正常工作状态时才有效.
TCP在重新启动后的MSL秒不能建立任何连接.这就称作平静时间
18.6.3 FIN_WAIT_2状态
在FIN_WAIT_2状态我们已经发出FIN,并且另一端也对它进行了确认.只有另一端的进程完成这个关闭,我们这段才会从FIN_WAIT_2状态进入TIME_WAIT状态
这就意味着我们这段可能永远保持这个状态.另一端也将处于CLOSE_WAIT状态,并一直保持这个状态直到应用层决定进行关闭.
18.7 复位报文段
TCP首部中的RST比特是用于”复位”的.
可能产生复位报文段的情况:
18.7.1.到不存在的端口的连接请求
当连接请求到达时,目的端口没有进程正在监听.
18.7.2异常终止一个连接
有可能发送一个RST复位报文段终止一个连接,称为异常释放
异常终止一个连接对应用程序有两个优点
(1)丢弃任何待发送数据并立即发送复位报文段;
(2)RST的接收方会区分另一端执行的是异常关闭还是正常关闭.
18.7.3 检测半打开连接
如果一方已经关闭或异常终止而另一方却还不知道,我们将这样的TCP连接称为半打开的.
只要不再半打开的连接上传输数据,仍处于连接状态的一方就不会检测另一方已经出现异常.
- 第十八章 TCP连接的建立和终止
- TCP/IP详解卷1 读书笔记:第十八章 TCP连接的建立与终止
- 《TCP/IP详解 卷1:协议》 读书笔记 第十八章 TCP连接的建立与终止
- 《TCP/IP详解 卷1:协议》第十八章 TCP连接的建立与终止
- 《TCP/IP详解 卷1:协议》 读书笔记 第十八章 TCP连接的建立与终止
- 【转】TCP连接的建立和终止
- TCP连接的建立和终止 详解
- TCP 连接的建立和终止
- TCP 连接的建立和终止
- tcp连接的建立和终止
- TCP连接的建立和终止
- TCP连接的建立和终止
- TCP连接的建立和终止
- [计算机网络] TCP连接的建立和终止
- TCP连接的建立和终止过程
- TCP连接的建立和终止
- TCP连接的建立和终止协议
- TCP连接的建立和终止
- MyBatis流程和框架
- VS2010 Ribbon测试案例
- 如何判断 ios设备的类型(iphone,ipod,ipad)
- Android之SurfaceView使用总结
- Linux read 用法
- 第十八章 TCP连接的建立和终止
- Eclipse启动时弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法
- CSipSimple最新版本(二)--添加视频功能
- IO
- android 混淆手册
- 51音图 一个按键
- dos文件格式转换为Unix文件格式
- linux内存管理机制
- Ant工具使用之——基本功能介绍