http:是用於www瀏覽的一個協議。
tcp:是機器之間建立連接用的到的一個協議。
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+UDP混合的HTTP協議。
具體介紹
IP (網際協議)
在網絡通信中,網絡組件的尋址對信息的路由選擇和傳輸來說是相當關鍵的。相同網絡中的兩台機器間的消息傳輸有各自的技術協定。LAN 是通過提供6字節的唯一標識符(“MAC”地址)在機器間發送消息的。SNA 網絡中的每台機器都有一個邏輯單元及與其相應的網絡地址。DECNET、AppleTalk 和 Novell IPX 均有一個用來分配編號到各個本地網和工作站的配置。
HTTP是超文本傳輸協議,是客戶端瀏覽器或其他程序與Web服務器之間的應用層通信協議。在Internet上的Web服務器上存放的都是超文本信息, 客戶機需要通過HTTP協議傳輸所要訪問的超文本信息。HTTP包含命令和傳輸信息,不僅可用於Web訪問,也可以用於其他因特網/內聯網應用系統之間的通信,從而實現各類應用資源超媒體訪問的集成
TCP (傳輸控制協議)
通過序列化應答和必要時重發數據包,TCP 為應用程序提供了可靠的傳輸流和虛擬連接服務。TCP 主要提供數據流轉送,可靠傳輸,有效流控制,全雙工操作和多路傳輸技術。可查閱 TCP 部分獲取更多詳細資料。
至於HTTP協議,它是TCP協議族中的一種。使用TCP80端口
HTTP是應用層協議,TCP是傳輸層協議!
數據包在網絡傳輸過程中,HTTP被封裝在TCP包內!!
1. TCP/UDP
面向連接的TCP
“面向連接”就是在正式通信前必須要與對方建立起連接。比如你給別人打電話,必須等線路接通了、對方拿起話筒才能相互通話。
TCP(Transmission Control Protocol,傳輸控制協議)是基於連接的協議,也就是說,在正式收發數據前,必須和對方建立可靠的連接。一個TCP連接必須要經過三次“對話”才能建立起來,其中的過程非常復雜,我們這里只做簡單、形象的介紹,你只要做到能夠理解這個過程即可。
我們來看看這三次對話的簡單過程:
1. 主機A向主機B發出連接請求數據包:“我想給你發數據,可以嗎?”,這是第一次對話;
2. 主機B向主機A發送同意連接和要求同步(同步就是兩台主機一個在發送,一個在接收,協調工作)的數據包:“可以,你什么時候發?”,這是第二次對話;
3. 主機A再發出一個數據包確認主機B的要求同步:“我現在就發,你接着吧!”,這是第三次對話。
三次“對話”的目的是使數據包的發送和接收同步,經過三次“對話”之后,主機A才向主機B正式發送數據。
TCP協議能為應用程序提供可靠的通信連接,使一台計算機發出的字節流無差錯地發往網絡上的其他計算機,對可靠性要求高的數據通信系統往往使用TCP協議傳輸數據。
我們來做一個實驗,用計算機A(安裝Windows 2000 Server操作系統)從“網上鄰居”上的一台計算機B拷貝大小為8,644,608字節的文件,通過狀態欄右下角網卡的發送和接收指標就會發現:雖然是 數據流是由計算機B流向計算機A,但是計算機A仍發送了3,456個數據包,如圖2所示。這些數據包是怎樣產生的呢?因為文件傳輸時使用了TCP/IP協 議,更確切地說是使用了面向連接的TCP協議,計算機A接收數據包的時候,要向計算機B回發數據包,所以也產生了一些通信量。
如果事先用網絡監視器監視網絡流量,就會發現由此產生的數據流量是9,478,819字節,比文件大小多出10.96%(如圖3所示),原因不僅在於數據包和幀本身占用了一些空間,而且也在於TCP協議面向連接的特性導致了一些額外的通信量的產生。
面向非連接的UDP協議
“面向非連接”就是在正式通信前不必與對方先建立連接,不管對方狀態就直接發送。這與現在風行的手機短信非常相似:你在發短信的時候,只需要輸入對方手機號就OK了。
UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是面向非連接的協議,它不與對方建立連接,而是直接就把數據包發送過去!
UDP 適用於一次只傳送少量數據、對可靠性要求不高的應用環境。比如,我們經常使用“ping”命令來測試兩台主機之間TCP/IP通信是否正常,其實 “ping”命令的原理就是向對方主機發送UDP數據包,然后對方主機確認收到數據包,如果數據包是否到達的消息及時反饋回來,那么網絡就是通的。例如, 在默認狀態下,一次“ping”操作發送4個數據包。大家可以看到,發送的數據包數量是4包,收到的也是4包(因為對方主機收到后會發回一 個確認收到的數據包)。這充分說明了UDP協議是面向非連接的協議,沒有建立連接的過程。正因為UDP協議沒有連接的過程,所以它的通信效果高;但也正因為如此,它的可靠性不如TCP協議高。QQ就使用UDP發消息,因此有時會出現收不到消息的情況。
附表:tcp協議和udp協議的差別
TCP | UDP | |
是否連接 | 面向連接 | 面向非連接 |
傳輸可靠性 | 可靠 | 不可靠 |
應用場合 | 傳輸大量的數據,對可靠性要求較高的場合 | 傳送少量數據、對可靠性要求不高的場景 |
速度 | 慢 | 快 |
TCP協議和UDP協議各有所長、各有所短,適用於不同要求的通信環境。
轉載至:https://www.cnblogs.com/gaopeng527/p/5255827.html