1. 程式人生 > >關於HTTP和TCP/IP

關於HTTP和TCP/IP

服務器 數據報 但是 文件傳輸 計算機 img 互聯 處理 物理

一、TCP/IP

概念:TCP/IP是互聯網相關的各類協議族的總稱。

技術分享圖片

TCP/IP協議族按層次分為4層,應用層、傳輸層、網絡層和數據鏈路層。

應用層:

決定了向用戶提供應用服務時通信的活動。TCP/IP協議族內預存了各類通用的應用服務。比如FTP(文件傳輸協議)和DNS(域名系統)服務就是其中兩類。HTTP協議也處於該層。

傳輸層:

對上層應用層,提供處於網絡連接中的兩臺計算機之間的數據傳輸。

在傳輸層有兩個不同的協議:TCP(傳輸控制協議)和UDP(用戶數據報協議)。

網絡層:

處理在網絡上流動的數據包。數據包是網絡傳輸的最小數據單位。該層規定了通過怎樣的路徑到達對方計算機,並把數據包傳送給對方。IP網際協議位於該層。

鏈路層:

用來處理鏈接網絡的硬件部分。包括控制操作系統、硬件的設備驅動、NIC(網絡適配器,網卡)及光纖等物理可見部分。

TCP是全雙工的,即客戶端在給服務器端發送信息的同時,服務器端也可以給客戶端發送消息。而半雙工的意思是A可以給B發,B也可以給A發,但是A在給B發的時候,B不能給A發,即不同時,為半雙工。單雙工只能A發給B,B不能發給A;或者只能B發給A,A不能發給B。

在創建TCP連接時,三次握手:

  • 發送端發送一個帶有SYN標誌的數據包給接收端。
  • 接收端收到後,回傳一個帶有SYN/ACK標誌的數據包以示傳達確認信息。
  • 最後發送端再傳回一個帶ACK標誌的數據包,代表握手結束。

斷開TCP連接時,四次握手,比如客戶端數據發送完了,需要斷開連接

技術分享圖片

  • 客戶端發送一個FIN給服務端,客戶端=>FIN_WAIT1(關閉客戶端到服務器的連接)
  • 服務端收到FIN後,發回一個ACK。服務端=>CLOSE_WAIT
  • 服務端發送一個FIN給客戶端。服務端=>LAST_ACK(關閉服務器到客戶端的鏈接)
  • 客戶端收到FIN,然後返回一個ACK。客戶端=>TIME_WAIT,服務端=>CLOSE

此處,首先關閉的是客戶端,執行主動關閉,而另一方執行被動關閉。在最後一次握手中,客戶端發送一個ACK後,會進入time-wait,此時CP鏈接並沒有釋放,然後經過時間等待計時器設置的2MSL後,客戶端才進入到close狀態。2MSL是報文存在的最大時間

參考文檔:http://blog.csdn.net/guyuealian/article/details/52535294

關於HTTP和TCP/IP