TCP建立连接_legend050709

来源:互联网 发布:淘宝店铺专业刷钻 编辑:程序博客网 时间:2024/06/12 01:41


三个阶段:

·        连接建立:

·        图释:

·         

·        步骤:

·        A TCP B发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x

·        B TCP收到连接请求报文段后,如同意,则发回确认(B在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack = x1,自己选择的序号 seq = y)

·        A收到此报文段后向 B给出确认, ACK = 1,确认号 ack = y1(A TCP通知上层应用进程,连接已经建立,B TCP收到主机 A的确认后,也通知其上层应用进程:TCP连接已经建立)

·        数据传送

·        连接释放:

(一)ACK中的确认号是发送这个ACK的一端所期望的下一个序列号。

因为SYN占据一个字节的空间,所以每个SYNACK中的确认号=SYN的初始序列号+1

(二)状态解析:

CLOSED:这个没什么好说的了,表示初始状态。

 

LISTEN:表示服务器端的某个SOCKET处于监听状态,可以接受连接了。

 

SYN_RCVD:表示接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂。因此这种状态时,当收到客户端的ACK报文后,它会进入到ESTABLISHED状态。

 

SYN_SENT:当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态。

(三)同时打开:

两个应用程序同时执行主动建立TCP的连接的可能性是存在的,此时发送到SYN建立需要交换4个包,如图所示:

 

0 0