首先看一下TCP/IP四層模型
應用層: 負責處理特定的應用程式細節,有FTP、HTTP、TELNET、SMTP、DNS等協議
運輸層: 主要為兩臺主機上的應用提供端到端的通訊, 有TCP協議與UDP協議
網路層: 處理分組在網路中的活動,比如分組的選路, 有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議
鏈路層(資料鏈路層/網路介面層): 包括作業系統中的裝置驅動程式、計算機中對應的網路介面卡
HTTP
HTTP(超文字傳輸協議)是利用TCP在兩臺電腦(通常是Web伺服器和客戶端)之間傳輸資訊的協議。客戶端使用Web瀏覽器發起HTTP請求給Web伺服器,Web伺服器傳送被請求的資訊給客戶端。雖然HTTP本身是一個協議,但其最終還是基於TCP的, 不過,目前,有人正在研究基於TCP+UDP混合的HTTP協議。
HTTP協議是建立在請求/響應模型上的。首先由客戶建立一條與伺服器的TCP連結,併傳送一個請求到伺服器,請求中包含請求方法、URL、協議版本以及相關的MIME樣式的訊息。伺服器響應一個狀態行,包含訊息的協議版本、一個成功和失敗碼以及相關的MIME式樣的訊息。
HTTP/1.0為每一次HTTP的請求/響應建立一條新的TCP連結,因此一個包含HTML內容和圖片的頁面將需要建立多次的短期的TCP連結。一次TCP連結的建立將需要3次握手。
另外,為了獲得適當的傳輸速度,則需要TCP花費額外的迴路連結時間(RTT)。每一次連結的建立需要這種經常性的開銷,而其並不帶有實際有用的資料,只是保證連結的可靠性,因此HTTP/1.1提出了可持續連結的實現方法。HTTP/1.1將只建立一次TCP的連結而重複地使用它傳輸一系列的請求/響應訊息,因此減少了連結建立的次數和經常性的連結開銷。
TCP
和UDP
TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議, 當對網路通訊質量有要求的時候。比如:整個資料要準確無誤的傳遞給對方,這往往用於一些要求可靠的應用,比如HTTP、HTTPS、FTP等傳輸檔案的協議,POP、SMTP等郵件傳輸的協議。
UDP是User Datagram Protocol的簡稱,使用者資料包協議, 一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。 當對網路通訊質量要求不高的時候,要求網路通訊速度能儘量的快,這時就可以使用UDP。在日常生活中,常見使用UDP協議的應用比如:QQ語音、QQ視訊、TFTP等。
TCP
和UDP是FTP,HTTP和SMTP之類使用的傳輸層協議。雖然TCP和UDP都是用來傳輸其他協議的,它們卻有一個顯著的不同:TCP提供有保證的資料傳輸,而UDP不提供。這意味著TCP有一個特殊的機制來確保資料安全的不出錯的從一個端點傳到另一個端點,而UDP不提供任何這樣的保證。
更多python學習資料可關注:gzitcast