TCP/IP協議

在互聯網中存在各種各樣的協議,我們根據這些協議的使用劃分了OSI 和 TCP/IP 參考模型。

根據 TCP/IP 參考模型就有了我們熟悉的 TCP/IP 協議。

這裏主要介紹OSI參考模型各個分層的主要作用,TCP/IP參考模型可對照查看。

  1. 應用層:針對特定應用的協議,如文件傳輸、電子郵件和遠程登錄等。
  2. 表示出:設備固有數據格式和網絡標準數據格式的轉換。
  3. 會話層:通信管理。負責建立和斷開通信連接。
  4. 傳輸層:管理兩個節點之間的數據傳輸。
  5. 網絡層:地址管理和路由選擇。
  6. 數據鏈路層:互聯網設備之間傳送和識別數據幀。
  7. 物理層:以 0 和 1 代表電壓的高低、燈光的閃滅。

下面介紹一下 TCP/IP 參考模型中各層的主要協議。

  1. 應用層:telnet(遠程登錄)、http、ssl/tls
  2. 傳輸層:TCP(有連接通信)、UDP(無連接通信);
  3. 網絡層:IPv4、IPv6;
  4. 網絡接入層:以太網、無線lan、光纖。

1 DNS 協議

DNS 協議是和Http協議已於位於應用層的協議。它提供域名到IP地址之間的解析服務。如我們輸入百度網址,它會返回網址的ip地址。

2 IP 協議

IP網際協議位於網絡層,其主要的作用是把各種數據包傳送給對方,分爲三大模塊:

  1. IP尋址:通過ip地址找到具體的路由器或mac地址。
  2. 路由控制:ip尋址找到具體的地址後,路由控制將分組數據發送到最終目標地址。
  3. IP分包與組包:由於每個路由,網絡的帶寬大小不一,所以ip協議需要合理分配數據包和組合數據包。

3 TCP 協議

TCP 協議位於傳輸層,通過檢驗和、序列化、確認應答、重發控制和連接管理等機制保證了 IP 傳輸數據的可靠性。主要是通過三次握手和四次揮手實現這項功能。

圖片各字段意義如下:

  1. seq:所傳數據的序號。TCP 傳輸時每一個字節都有一個序號,發送數據時會將數據的第一個序號發送給對方,接收方會按序號檢查是否接受完成,如果接受不完成,需要重發數據包。
  2. ack:確認號。接收端用它來給發送端反饋已經成功接收到的數據信息。
  3. ACK: 確認位,只有 ACK=1 時,ack才起作用。
  4. SYN: 同步位,用於建立連接時同步序號。當接收端接收到 SYN=1 時,會將ack設置爲seq+1的值,這裏的值是根據 SYN 設置的,這樣就保證了接收端和發送端的ack是一致的。
  5. FIN: 終止位,用來在數據傳輸完畢後釋放連接。

4 UDP 協議

UDP 相對於 TCP 不提供負責的控制功能,主要是面向無連接的通信。它可以隨時發送數據,而不需要關心接收端是否存在。再加上由於它的簡單又高效,主要用於以下幾個方面:

  1. 包總量較小的通信,如DNS;
  2. 多媒體通信,如即時通訊;
  3. 廣播通信;
  4. 限定與局域網等特定網絡中的應用通信。

5 HTTP 協議

Http 協議是應用層的協議,在 TCP 協議接收到數據之後需要通過 Http 協議來解析纔可以使用。http 協議中的報文分爲請求報文(request)和響應報文(response),這兩種類型都包含三部分:首行、頭部和主體。

在 TCP/IP 模型中,http數據包結構如下:

  1. 應用層:http 數據;
  2. 傳輸層:tcp首部[http數據]
  3. 網絡層:ip首部[tcp首部[http數據]]
  4. 鏈路層:以太網首部[ip首部[tcp首部[http數據]]]

5.1 HTTP狀態碼

HTTP狀態碼負責表示客戶端HTTP請求的返回結果、標記服務器端的處理是否正常、通知出現的錯誤等工作。

5.1.1 2XX成功

2XX的響應結果表明請求被正常處理了。

  1. 200 OK:表示從客戶端發來的請求在服務器端被正常處理。
  2. 204 No Content:服務器接收的請求已成功處理,但在返回的響應報文中不含實體的主體不服。另外,也不允許返回任何實體的主體。
  3. 206 Partial Content:客戶端進行了範圍請求,而服務器成功執行了這部分的GET請求。

5.1.2 3XX重定向

3XX響應結果表明瀏覽器需要執行某些特殊的處理以正確處理請求。

  1. 301 Moved Permanently:永久性重定向。該狀態碼錶示請求的資源已被分配了新的URL,以後應使用資源現在所指的URL。
  2. 302 Found:臨時重定向。該狀態碼錶示請求的資源已被分配了新的URL,希望用戶(本次)能使用新的URL訪問。
  3. 303 See Other:由於請求對應的資源存在着另一個URL,應使用GET方法定向獲取請求的資源。
  4. 304 Not Modified:客戶端發送附加條件的請求時,服務器端允許請求訪問資源,但因發生請求未滿足條件的情況後,直接返回304 Not Nodified(服務器端資源未改變,可直接使用客戶端未過期的緩存)。
  5. 307 Temporary Redirect:臨時重定向。該狀態碼與302有着相同的含義。

5.1.3 4XX客戶端錯誤

4XX的響應結果表明客戶端是發生錯誤的原因所在。

  1. 400 Bad Request:請求報文中存在語法錯誤。
  2. 401 Unauthorized:發送的請求需要有通過HTTP認證的認證信息。
  3. 403 Forbidden:對請求資源的訪問被服務器拒絕了。
  4. 404 Not Found:服務器無法找到請求的資源。

5.1.4 5XX服務器錯誤

5XX的響應結果表明服務器本身發生錯誤。

  1. 500 Internal Server Error:服務器端在執行請求時發生了錯誤。
  2. 503 Service Unavailable:服務器暫時處於超負載或正在進行停機維護,現在無法處理請求。

6 HTTPS 協議

Https協議=http+通信加密+證書+完整性保護=http+ssl/tls協議。https協議實質是在http和tcp通信中增加了一層 ssl/tls 協議。

 


Appendix

Revision History

時間 描述
2017-09-25 博文完成

CSDN:http://blog.csdn.net/y550918116j

GitHub:https://github.com/937447974

發佈了406 篇原創文章 · 獲贊 28 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章