计算机网络-TCP运输连接管理
目錄
- 1 運(yùn)輸連接概述
- 2 TCP的連接建立
- 3 TCP的連接釋放
1 運(yùn)輸連接概述
- TCP 是面向連接的協(xié)議
- TCP 連接有三個階段:連接建立,數(shù)據(jù)傳送,連接釋放
- TCP 連接的管理就是使 TCP 連接的建立和釋放都能正常地進(jìn)行
TCP 連接建立過程中要解決的三個問題:
TCP連接的建立采用的是客戶—服務(wù)器方式:
- 主動發(fā)起連接建立的應(yīng)用進(jìn)程叫做客戶 (client)
- 被動等待連接建立的應(yīng)用進(jìn)程叫做服務(wù)器 (server)
2 TCP的連接建立
- TCP 建立連接的過程叫做握手
- 握手需要在客戶和服務(wù)器之間交換三個 TCP 報文段。稱之為三報文握手
- 采用三報文握手主要是為了防止已失效的連接請求報文段突然又傳送到了,因而產(chǎn)生錯誤
三次報文握手的過程:
注意:大寫的ACK和小寫的ack代表的含義不同,大寫ACK代表確認(rèn)位,小寫ack代表確認(rèn)號,ack=x+1代表之前序號x報文已經(jīng)正確收到了,并期待收到x+1報文,服務(wù)器B也選擇了序號seq=y,這里的x和y代表雙方各自發(fā)送的序號的獨(dú)立的
注意:當(dāng)A收到B的確認(rèn)后還會發(fā)送一次確認(rèn)報文給B,即確認(rèn)的確認(rèn),主要是為了防止已失效的連接請求報文段突然又傳送到了,因而產(chǎn)生錯誤,考慮這樣一種情況,比如說A的第一個連接報文由于在某個站點滯留,B收到之后會認(rèn)為A又重新發(fā)了一次連接,這個時候B會發(fā)送確認(rèn)報文同意建立新的連接,當(dāng)A收到確認(rèn)連接的報文時由于這個確認(rèn)是對一個并不存在的連接請求,A不去理睬B的確認(rèn),B如果沒有對確認(rèn)的再次確認(rèn)么就會誤以為連接已經(jīng)建立好了而等待A去發(fā)送數(shù)據(jù),但A并沒有數(shù)據(jù)要發(fā)送,雙方就進(jìn)入了一個誤會的狀態(tài),所以第三次的握手對確認(rèn)的再確認(rèn)時非常必要的
3 TCP的連接釋放
- TCP 連接釋放過程比較復(fù)雜,數(shù)據(jù)傳輸結(jié)束后,通信的雙方都可釋放連接
- TCP 連接釋放過程是四報文握手
四次報文握手的過程:
注意:上述操作實際上是A告訴B,A的數(shù)據(jù)已經(jīng)發(fā)送完了,現(xiàn)在需要把發(fā)送方向這個連接釋放掉
注意:B接收到了A的釋放連接報文,會發(fā)出確認(rèn)報文,ack=u+1表示已經(jīng)收到了A發(fā)出的釋放連接報文,而自己的序號seq=v,這里u和v仍然是獨(dú)立的,意味著B這個時刻不一定需要釋放連接,因為B可能還有數(shù)據(jù)要發(fā)送,所以說TCP連接處于半關(guān)閉狀態(tài)
注意:seq=v和seq=w中的v和w是相互獨(dú)立的,實際上是B在發(fā)送數(shù)據(jù)時,又消耗了一部分字節(jié)。在最后一次A到B的確認(rèn)報文中,seq=u+1這里的u和第一輪B向A發(fā)送的確認(rèn)報文中的ack=u+1的u是一樣的
注意:A 必須等待 2MSL 的時間(MSL即報文最長壽命時間)
- 第一,為了保證 A 發(fā)送的最后一個 ACK 報文段能夠到達(dá) B
- 第二,防止 “已失效的連接請求報文段”出現(xiàn)在本連接中,簡單來說就是設(shè)一個長一點的等待時間,在這段時間內(nèi)所有請求都消失在網(wǎng)絡(luò)里,這樣讓新的請求來的時候不會產(chǎn)生誤會
總結(jié)
以上是生活随笔為你收集整理的计算机网络-TCP运输连接管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络-TCP拥塞控制
- 下一篇: C语言-宏定义#define的用法