TCP、UDP、HTTP及Socket的簡單講解

wdapp發表於2020-03-08

1、TCP/IP是個協議組,可分為三個層次:網路層、傳輸層和應用層。

在網路層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。

在傳輸層中有TCP協議與UDP協議。

在應用層有FTP、HTTP、TELNET、SMTP、DNS等協議。

因此,HTTP本身就是一個協議,是從Web伺服器傳輸超文字到本地瀏覽器的傳送協議。

2、HTTP協議是建立在請求/響應模型上的。首先由客戶建立一條與伺服器的TCP連結,併傳送一個請求到伺服器,請求中包含請求方法、URI、協議版本以及相關的MIME樣式的訊息。伺服器響應一個狀態行,包含訊息的協議版本、一個成功和失敗碼以及相關的MIME式樣的訊息。

HTTP/1.0為每一次HTTP的請求/響應建立一條新的TCP連結,因此一個包含HTML內容和圖片的頁面將需要建立多次的短期的TCP連結。一次TCP連結的建立將需要3次握手。

另外,為了獲得適當的傳輸速度,則需要TCP花費額外的迴路連結時間(RTT)。每一次連結的建立需要這種經常性的開銷,而其並不帶有實際有用的資料,只是保證連結的可靠性,因此HTTP/1.1提出了可持續連結的實現方法。HTTP/1.1將只建立一次TCP的連結而重複地使用它傳輸一系列的請求/響應 訊息,因此減少了連結建立的次數和經常性的連結開銷。

3、結論:雖然HTTP本身是一個協議,但其最終還是基於TCP的。

TCP三次、四次握手

相對於SOCKET開發者,TCP建立過程和連線拆除過程是由TCP/IP協議棧自動建立的。因此開發者並不需要控制這個過程。但是對於理解TCP底層運作機制,相當有幫助。

所謂三次握手(Three-way Handshake),是指建立一個TCP連線時,需要客戶端和伺服器總共傳送3個包。具體流程網上有,在次我不再贅述。三次握手的目的是連線伺服器指定埠,建立TCP連線,並同步連線雙方的序列號和確認號並交換 TCP 視窗大小資訊.在socket程式設計中,客戶端執行connect()時。將觸發三次握手。

TCP的連線的拆除需要傳送四個包,因此稱為四次揮手(four-way handshake)。客戶端或伺服器均可主動發起揮手動作

TCP與UDP的區別

附上一張圖片,簡單明瞭?

TCP、UDP、HTTP及Socket的簡單講解

Socket是什麼呢?

Socket是應用層與TCP/IP協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket介面後面,對使用者來說,一組簡單的介面就是全部,讓Socket去組織資料,以符合指定的協議。

相對於SOCKET開發者,TCP建立過程和連線拆除過程是由TCP/IP協議棧自動建立的。因此開發者並不需要控制這個過程。但是對於理解TCP底層運作機制,相當有幫助。

相關文章