《TCP/IP详解-协议》(17、18)TCP连接建立与终止

来源:互联网 发布:淘宝不开直通车可以吗 编辑:程序博客网 时间:2024/06/06 01:57

TCP

TCP(Transmission Control Protocol 传输控制协议)

TCP提供一种面向连接的、可靠的字节流服务;在一个TCP连接中仅有两方进行通信(广播和多播不能用于TCP)

一个IP地址和一个Port称为一个Socket(套接字),一个Socket Pair(套接字对)可唯一确定一个TCP连接(即本地IP&Port和远端IP&Port)

TCP提供全双工服务(即两个方向上独立传输)

检验和覆盖整个TCP报文段(TCP首部+TCP数据),计算时也使用和UDP类似的伪首部

TCP状态变迁图

MSL(Maximum Segment Lifetime 报文最大生存时间),2MSL指两倍该值


连接建立与终止

建立一个连接需要握手3次,终止需要握手4次


系统MSS(Maximum Segment Size 最大报文段长度)值以协商后的最小值为准

半关闭

一端结束发送后还能接收另一端的数据(客户端半关闭一般用于通知服务器数据传送已完成,等待服务器的反馈)

复位报文段

对于UDP,当数据报达到无效端口时产生一个“ICMP端口不可达”差错,而TCP则产生复位(RST)报文

相对于有序释放(FIN报文)来说,异常释放(RST报文)可立即丢弃任何待发数据

RST报文的接收方不会有任何响应或确认,接收方直接终止连接并通知应用层连接复位

半连接

一方已经关闭或异常终止而另一方却不知道(比如客户端突然断电)

同时打开与关闭

同时打开:两个程序同时彼此执行主动打开(可能性极小),TCP为同时打开仅建立一条连接

同时打开需要交换4个报文,比正常握手3次多一个;同时关闭与正常关闭需要交换的报文数相同

TCP服务器设计

TCP服务器在指定端口等待连接,客户端使用随机端口发起连接

TCP服务器也可以在指定IP等待连接(当有多个接口时,可限定来源网络),或者等待指定IP&Port发来的连接请求(虽然规范支持,但大多数开发接口不支持)

TCP有一个连接队列,该队列中的连接都已经完成3次握手,等待应用层的接受后,被移除出队列;
如果连接队列已满,则不会处理任何连接请求(SYN)




原创粉丝点击