TCP是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接,本文详细讨论一个TCP连接如何建立的以及通信结束后如何终止
这种两端连接的建立与无连接协议如UD不同,使用UDP向另一端发送数据报时,无需任何预先的握手
-
建议一条TCP连接
1)请求端(通常称为客户端)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN,在这个例子中为1415531521 )。这个SYN段位报文段 1
2)服务器发回包含初始序号的SYN报文段(报文段2)作为应答,同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认,一个SYN将占用一个序号
3)客户必须将确认序号设置为服务器ISN加以对服务器的SYN报文段进行确认 (报文段3)
这三个报文段完成连接建立,这个过程也称为三次握手
-
连接终止协议
建议一个连接需要三次握手,而终止一个连接需要经过4次握手,这由于TCP的半关闭造成的 ,既然一个TCP连接是全双工的 (即数据在两个方向上能同时传递)因此每个方向必须必须单独进行关闭,这原则就是当一方完成它的数据发送任务以后就能发送一个FIN来终止这个方向的连接,当一端收到一个FIN,它必须通知应用层另一端已经终止了哪个方向的数据,发送FIN通常是应用层进行关闭的结果。收到一个FIN只意味着在这一方向上没有数据流动。一个TCP连接在接收到一个FIN后仍能发送数据,而这对利用半关闭的应用来说是可能的尽管在实际应用中只有很少TCP应用程序这样做,
首先进行关闭的一方(即发送第一个FIN)将进行主动关闭,而另一方收到这个FIN执行被动关闭
网友评论