tcp 是面向連線的協議。每乙個 tcp 連線有三個階段:連線建立、資料傳送、連線釋放。
每一條 tcp 連線有兩個端點。tcp 連線到埠叫做套接字(socket)或插口。埠拼接到 ip 位址即構成了套接字。
每一條 tcp 連線唯一地被通訊兩端的兩個端點(即兩個套接字)所確定
主動發起連線建立的應用程序叫做客戶機,而被動等待連線建立的應用程序叫做伺服器
tcp連線的建立
連線經歷三個步驟,通常稱為「三次握手」
第一步:
客戶機的 tcp 首先向伺服器的 tcp 傳送乙個連線請求報文段。這個特殊的報文段不含應用層資料,其中首部中的 syn 標誌位被置為 1。
另外,客戶機會隨機選擇乙個起始序號 seq=x (連線請求報文不攜帶資料,但要消耗乙個序號)
第二步:
伺服器的 tcp 收到連線請求報文段後,如同意建立連線,就向客戶機發回確認,並為該 tcp 連線分配 tcp 快取和變數。
在確認報文中,syn 和 ack 位都被置為1,確認號字段的值為 x+1,並且伺服器隨機隨機產生起始序號 seq=y(確認報文不攜帶資料,但要消耗乙個序號)。確認報文段同樣不包含應用層資料。
第三步:
當客戶機收到確認報文段後,還要向伺服器給出確認,並且也要給該連線分配快取和變數。
這個報文段的 ack 標誌位被置為1,序號欄位為 x+1,確認號字段 ack=y+1。該報文段可以攜帶資料,如果不攜帶資料則不消耗序號。
以上三步以後,tcp 連線就建立了,接下來就可以傳送應用層資料。tcp 提供的是雙全工通訊,因此通訊雙方的應用程序在任何時候都能傳送資料。
另外,因為服務端的資源是在完成第二次握手時分配的,而客戶端的資源是在完成第三次握手時分配的,這就使得伺服器易於受到 syn 洪氾攻擊。
tcp連線的釋放
tcp連線的釋放通常稱為「四次揮手」,參與 tcp 連線的兩個程序中的任何乙個都能終止該連線。
第一步:
客戶機打算關閉連線,就像其 tcp 傳送乙個連線釋放的報文段,並停止傳送資料,主動關閉 tcp連線,該報文段的 fin 標誌位被置為1,seq=u,它等於前面已傳送過的資料的最後乙個位元組的序號+1(fin 報文段即使不攜帶資料也要消耗掉乙個序號)
tcp 是雙全工的,即可以想象成是一條 tcp 連線上有兩條資料通路。當傳送 fin 報文時,傳送 fin 的一端就不能再傳送資料,也就關閉了其中一條資料通路,但對方還可以傳送資料。
第二步:
伺服器收到連線釋放報文段後即發出確認,確認號是 ack=u+1,而這個報文段自己的序號是 v ,等於它前面已傳送的資料的最後乙個位元組的序號加1。
此時,從客戶機到伺服器這個方向的連線就釋放了,tcp 連線處於半關閉狀態。但伺服器若傳送資料,客戶機仍要接收,即從伺服器到客戶機這個方向的連線並未關閉。
第三步:
若伺服器已經沒有向客戶機傳送的資料,就通知 tcp 釋放連線,此時其發出 fin=1 的連線釋放報文段。
第四步:
客戶機收到連線釋放報文段後,必須發出確認。在確認報文段中,ack 欄位被置為1,確認號 ack=w+1,序號 seq=u+1。
此時 tcp 連線還沒有釋放掉,必須經過時間等待計時器設定的時間 2msl 後,a 才進入到連線關閉狀態。
計算機網路複習
利用http協議在網際網路上通訊時,資料是非加密傳輸的。資料可能被其他人截獲,造成資訊洩露。為了解決此問題,需要加密。加密有兩種方式,一種是對稱加密,一種是非對稱加密。在對稱加密演算法中,加密和解密對應的秘鑰是相同的。要保證安全的話,對稱加密的秘鑰不能洩露,必須保密。非對稱加密演算法的加密秘鑰和解密...
計算機網路複習
1.osi rm引數模型與計算機網路體系結構 osi rm引數模型從上到下依次為應用層 表示層 會話層 傳輸層 網路層 資料鏈路層 物理層。1 物理層 最底層最基礎的一層,只負責傳輸0,1二進位制位元流,不考慮資訊的意義和資訊的結構。物理層網路裝置 網絡卡 2 資料鏈路層 負責將上層資料封裝成幀,傳...
計算機網路複習
使用tcp協議,預設埠80 http狀態碼 使用udp協議,dns預設埠53,負責網域名稱轉換為ip位址。如果直接訪問ip位址,不會使用dns協議。郵件協議 pop3 imap 使用tcp協議,埠21 面向位元組流 mtu 鏈路層幀最大傳輸單位,1518b mss 最大報文段大小 實際是應用層 15...