tcp的可靠傳輸首先是建立在可靠的連線建立與關閉之上,這一塊包含以下要點:
tcp三次握手建立連線
tcp為了通訊雙方確認建立起連線,設計了三次握手的策略,三次握手的過程如下:
1) 請求端傳送乙個syn段指明客戶打算連線的伺服器的埠,以及初始序號(isn)。
2) 伺服器發回包含伺服器的初始序號的syn報文段作為應答。同時,將確認序號設定為客戶的isn加1以對客戶的syn報文段進行確認。乙個syn將占用乙個序號。
3) 客戶必須將確認序號設定為伺服器的isn加1以對伺服器的syn報文段進行確認
舉乙個例項:
為什麼是三次握手?
通過tcpdump工具能很清晰地看到三次握手的過程,先在主機b(itbu_qa17)上開啟tcpdump監控
/usr/local/sbin/tcpdump port 80 and host 10.19.14.1
然後主機a(10.19.14.1) telnet到主機b,tcpdump監控結果如下:
tcp半關閉
tcp半關閉時tcp提供了連線的一端在結束它的傳送後還能接收來自另一端資料的能力。因此,連線關閉的過程需要連線雙方都要發起關閉連線的訊息,示意圖如下所示:
為什麼要設計成半關閉?
設計成半關閉主要是存在無需傳送資料,只需接收資料的需求,並且可以通過發起單方面的關閉請求標誌已傳送資料完成。如果沒有半關閉的需求,就得建立兩個連線。
通過tcpdump工具能很清晰地看到三次握手的過程,主機a(10.19.14.1) telnet到主機b,然後在主機b(itbu_qa17)上開啟tcpdump監控
/usr/local/sbin/tcpdump port 80 and host 10.19.14.1
然後主機a關閉telnet,tcpdump監控結果如下:
tcp的狀態變遷
連線雙方從新建連線到建立連線再到關閉連線,會經歷一些狀態,這些狀態在分析問題時非常重要,狀態變遷全景圖如下所示:
就連線雙方的建立連線和關閉連線過程來看,狀態變遷序列圖如下所示:
tcp服務端監聽和處理設計
tcp服務端一般設計為連線建立後乙個程序監聽埠,當乙個新的連線請求到達伺服器時,伺服器接受這個請求,並呼叫乙個新程序來處理這個新的客戶請求。以telnet為例,使用netstat檢視服務端監聽狀態為listen,如下圖所示:
當有客戶端telnet過來時,監聽程序會起另外的程序來處理,如下圖所示:
TCP IP協議與埠
前語 作者是菜鳥,為了印象深刻才寫的部落格,不建議為參考部落格 tcp ip結構分為四層.1.網路介面層,網路介面層是tpc ip結構中最底層。網路介面層的功能分為兩個方面。一方面從物理層和資料層接收資料幀,抽出資料並交給網際ip 另一方面將ip資料封裝成資料幀,並以位元流方式放鬆到網路。網路介面寶...
TCP IP協議與HTTP協議(一)
1 什麼是tcp ip 如果要了解乙個人,可以從他歸屬的集體聊起來。我們的http協議就屬於tcp ip協議家族中的一員,了解http協議再整個網路流程中的地位,也能更加充分的理解http協議。tcp ip協議是乙個協議集合。大家叫的時候方便說,所以統稱為tcp ip。tcp ip協議族中有乙個重要...
TCP IP協議與HTTP協議(二)
tcp ip協議是傳輸層協議,主要解決資料如何在網路中傳輸,而http是應用層協議,主要解決如何包裝資料。手機能夠使用聯網功能是因為手機底層實現了tcp ip協議,可以使手機終端通過無線網路建立tcp連線。tcp協議可以對上層網路提供介面,使上層網路資料的傳輸建立在 無差別 的網路之上。建立起乙個t...