一个完整的TCP连接
Posted xpfeia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个完整的TCP连接相关的知识,希望对你有一定的参考价值。
什么是TCP连接?
为实现数据的可靠传输,TCP要在应用进程间建立传输连接。它是在两个传输用户之间建立一种逻辑联系,使得通信双方都确认对方为自己的传输连接端点。
建立连接
建立连接前,服务器端首先被动打开其熟知的端口,对端口进行侦听。当客户端要和服务器端建立连接时,发起一个主动打开端口的请求(该端口一般为临时端口);然后进入三次握手的过程。
① A 的 TCP 向 B 发出连接请求报文段,其首部中的同步比特 SYN 应置为1,并选择序号 x,表明传送数据时的第一个数据字节的序号是 x(设置初始段序号SEQ = x ,例如SEQ = 26 500)。
② B 的 TCP 收到连接请求报文段后,如同意,则发回确认。
B 在确认报文段中应将 SYN 置为 1,其确认号ACK应为 x + 1(ACK 26 501),同时也给出自己的选择序号 y(设置初始段序号SEQ = y ,例如SEQ = 29 010)。
③ A 收到此报文段后,向 B 给出确认,其确认号应为 y + 1(ACK = 29011)。
A 的 TCP 通知上层应用进程,连接已经建立。
当运行服务器进程的主机 B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程,连接已经建立。
由于客户对报文段进行了编号,它知道哪些序号是期待的,哪些序号是过时的。当客户发现报文段的序号是一个过时的序号时,就会拒绝该报文段,这样就不会造成重复连接。
释放连接
数据传输结束后,通信双方都可以释放连接。
四次分手的过程:
过程① 结束时,从 A 到 B 的连接就释放了,连接处于半关闭状态。
相当于 A 向 B 说:“我已经没有数据要发送了。但你如果还发送数据,我仍接收。”
过程② 结束后,至此,整个连接已全部释放。
以上是关于一个完整的TCP连接的主要内容,如果未能解决你的问题,请参考以下文章