在互聯網中存在各種各樣的協議,我們根據這些協議的使用劃分了OSI 和 TCP/IP 參考模型。
根據 TCP/IP 參考模型就有了我們熟悉的 TCP/IP 協議。
這裏主要介紹OSI參考模型各個分層的主要作用,TCP/IP參考模型可對照查看。
- 應用層:針對特定應用的協議,如文件傳輸、電子郵件和遠程登錄等。
- 表示出:設備固有數據格式和網絡標準數據格式的轉換。
- 會話層:通信管理。負責建立和斷開通信連接。
- 傳輸層:管理兩個節點之間的數據傳輸。
- 網絡層:地址管理和路由選擇。
- 數據鏈路層:互聯網設備之間傳送和識別數據幀。
- 物理層:以 0 和 1 代表電壓的高低、燈光的閃滅。
下面介紹一下 TCP/IP 參考模型中各層的主要協議。
- 應用層:telnet(遠程登錄)、http、ssl/tls
- 傳輸層:TCP(有連接通信)、UDP(無連接通信);
- 網絡層:IPv4、IPv6;
- 網絡接入層:以太網、無線lan、光纖。
1 DNS 協議
DNS 協議是和Http協議已於位於應用層的協議。它提供域名到IP地址之間的解析服務。如我們輸入百度網址,它會返回網址的ip地址。
2 IP 協議
IP網際協議位於網絡層,其主要的作用是把各種數據包傳送給對方,分爲三大模塊:
- IP尋址:通過ip地址找到具體的路由器或mac地址。
- 路由控制:ip尋址找到具體的地址後,路由控制將分組數據發送到最終目標地址。
- IP分包與組包:由於每個路由,網絡的帶寬大小不一,所以ip協議需要合理分配數據包和組合數據包。
3 TCP 協議
TCP 協議位於傳輸層,通過檢驗和、序列化、確認應答、重發控制和連接管理等機制保證了 IP 傳輸數據的可靠性。主要是通過三次握手和四次揮手實現這項功能。
圖片各字段意義如下:
- seq:所傳數據的序號。TCP 傳輸時每一個字節都有一個序號,發送數據時會將數據的第一個序號發送給對方,接收方會按序號檢查是否接受完成,如果接受不完成,需要重發數據包。
- ack:確認號。接收端用它來給發送端反饋已經成功接收到的數據信息。
- ACK: 確認位,只有 ACK=1 時,ack才起作用。
- SYN: 同步位,用於建立連接時同步序號。當接收端接收到 SYN=1 時,會將ack設置爲seq+1的值,這裏的值是根據 SYN 設置的,這樣就保證了接收端和發送端的ack是一致的。
- FIN: 終止位,用來在數據傳輸完畢後釋放連接。
4 UDP 協議
UDP 相對於 TCP 不提供負責的控制功能,主要是面向無連接的通信。它可以隨時發送數據,而不需要關心接收端是否存在。再加上由於它的簡單又高效,主要用於以下幾個方面:
- 包總量較小的通信,如DNS;
- 多媒體通信,如即時通訊;
- 廣播通信;
- 限定與局域網等特定網絡中的應用通信。
5 HTTP 協議
Http 協議是應用層的協議,在 TCP 協議接收到數據之後需要通過 Http 協議來解析纔可以使用。http 協議中的報文分爲請求報文(request)和響應報文(response),這兩種類型都包含三部分:首行、頭部和主體。
在 TCP/IP 模型中,http數據包結構如下:
- 應用層:http 數據;
- 傳輸層:tcp首部[http數據]
- 網絡層:ip首部[tcp首部[http數據]]
- 鏈路層:以太網首部[ip首部[tcp首部[http數據]]]
5.1 HTTP狀態碼
HTTP狀態碼負責表示客戶端HTTP請求的返回結果、標記服務器端的處理是否正常、通知出現的錯誤等工作。
5.1.1 2XX成功
2XX的響應結果表明請求被正常處理了。
- 200 OK:表示從客戶端發來的請求在服務器端被正常處理。
- 204 No Content:服務器接收的請求已成功處理,但在返回的響應報文中不含實體的主體不服。另外,也不允許返回任何實體的主體。
- 206 Partial Content:客戶端進行了範圍請求,而服務器成功執行了這部分的GET請求。
5.1.2 3XX重定向
3XX響應結果表明瀏覽器需要執行某些特殊的處理以正確處理請求。
- 301 Moved Permanently:永久性重定向。該狀態碼錶示請求的資源已被分配了新的URL,以後應使用資源現在所指的URL。
- 302 Found:臨時重定向。該狀態碼錶示請求的資源已被分配了新的URL,希望用戶(本次)能使用新的URL訪問。
- 303 See Other:由於請求對應的資源存在着另一個URL,應使用GET方法定向獲取請求的資源。
- 304 Not Modified:客戶端發送附加條件的請求時,服務器端允許請求訪問資源,但因發生請求未滿足條件的情況後,直接返回304 Not Nodified(服務器端資源未改變,可直接使用客戶端未過期的緩存)。
- 307 Temporary Redirect:臨時重定向。該狀態碼與302有着相同的含義。
5.1.3 4XX客戶端錯誤
4XX的響應結果表明客戶端是發生錯誤的原因所在。
- 400 Bad Request:請求報文中存在語法錯誤。
- 401 Unauthorized:發送的請求需要有通過HTTP認證的認證信息。
- 403 Forbidden:對請求資源的訪問被服務器拒絕了。
- 404 Not Found:服務器無法找到請求的資源。
5.1.4 5XX服務器錯誤
5XX的響應結果表明服務器本身發生錯誤。
- 500 Internal Server Error:服務器端在執行請求時發生了錯誤。
- 503 Service Unavailable:服務器暫時處於超負載或正在進行停機維護,現在無法處理請求。
6 HTTPS 協議
Https協議=http+通信加密+證書+完整性保護=http+ssl/tls協議。https協議實質是在http和tcp通信中增加了一層 ssl/tls 協議。
Appendix
Revision History
時間 | 描述 |
---|---|
2017-09-25 | 博文完成 |
Copyright
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974