先來乙個講tcp、udp和http關係的
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 (網際協議)
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個資料報(如圖2所示)。大家可以看到,傳送的資料報數量是4包,收到的也是4包(因為對方主機收到後會發回一 個確認收到的資料報)。這充分說明了udp協議是面向非連線的協議,沒有建立連線的過程。正因為udp協議沒有連線的過程,所以它的通訊效果高;但也正因 為如此,它的可靠性不如tcp協議高。qq就使用udp發訊息,因此有時會出現收不到訊息的情況。
附表:tcp協議和udp協議的差別
tcp udp
是否連線 面向連線 面向非連線
傳輸可靠性 可靠的 不可靠的
應用場合 傳輸大量的資料 少量資料
速度 慢 快
tcp協議和udp協議各有所長、各有所短,適用於不同要求的通訊環境。tcp協議和udp協議之間的差別如附表所示。
tcp和udp是osi模型中的運輸層中的協議。tcp提供可靠的通訊傳輸,而udp則常被用於讓廣播和細節控制交給應用的通訊傳輸。
udp(user datagram protocol)
udp不提供複雜的控制機制,利用ip提供面向無連線的通訊服務。並且它是將應用程式發來的資料在收到的那一刻,立刻按照原樣傳送到網路上的一種機制。
即使是出現網路擁堵的情況下,udp也無法進行流量控制等避免網路擁塞的行為。此外,傳輸途中如果出現了丟包,udo也不負責重發。甚至當出現包的到達順序亂掉時也沒有糾正的功能。如果需要這些細節控制,那麼不得不交給由採用udo的應用程式去處理。換句話說,udp將部分控制轉移到應用程式去處理,自己卻只提供作為傳輸層協議的最基本功能。udp有點類似於使用者說什麼聽什麼的機制,但是需要使用者充分考慮好上層協議型別並製作相應的應用程式。
tcp(transmission control protocol)
tcp充分實現愛呢了資料傳輸時各種控制功能,可以進行丟包的重發控制,還可以對次序亂掉的分包進行順序控制。而這些在udp中都沒有。此外,tcp作為一種面向有連線的協議,只有在確認通訊對端存在時才會傳送資料,從而可以控制通訊流量的浪費。
tcp通過檢驗和、序列號、確認應答、重發控制、連線管理以及視窗控制等機制實現可靠性傳輸。此處不一一敘述。
tcp協議主要有一下特點:
1. 面向連線意味著兩個使用tcp的應用(通常是乙個客戶端和乙個伺服器)在彼此交換資料之前必須先建立乙個tcp連線。
2. tcp通過下列方式來提供可靠性:
1)應用資料被分割程tcp認為合適的資料塊。tcp傳遞給ip的資訊單位稱為報文段。
2)當tcp發出乙個段後,它啟動乙個計時器,等待目的端確認這個報文段。如果不能及時收到確認,將重新傳送這個報文段。
3)當tcp收到發自乙個tcp連線另一端的資料,它將傳送乙個確認。這個確認將推遲幾分之一秒。
4)tcp將保持它首部以及資料的檢驗和。如果檢驗和接收端將丟棄這個報文段而且不確認收到此報文段。
5)tcp提供流量控制。
3. tcp對位元組流內容不作任何解釋,對位元組流的解釋交由應用層。
tcp與udp如何加以區分使用?
tcp用於在傳輸層有必要實現可靠性傳輸的情況。由於它是面向有連線並具備順序控制、重發控制等機制的。所以它可以為應用提供可靠傳輸。
另一方面,udp主要用於那些對高速傳輸和實時性有較高要求的通訊或廣播通訊。舉乙個ip**進行通話的例子。如果使用tcp,資料在傳送途中如果丟失會被重發,但是這樣無法流暢地傳輸通話人的聲音,會導致無法進行正常交流。而採用udp,它不會進行重發處理。從而也就不會有聲音大幅度延遲到達的問題。即使有部分資料丟失,也只是影響某一小部分的通話。此外,在多播與廣播通訊中也使用udp而不是udp。rip、dhcp等基於廣播的協議也要依賴於udp。
tcp與udp區別總結:
1、tcp面向連線(如打**要先撥號建立連線);udp是無連線的,即傳送資料之前不需要建立連線
2、tcp提供可靠的服務。也就是說,通過tcp連線傳送的資料,無差錯,不丟失,不重複,且按序到達;udp盡最大努力交付,即不保證可靠交付
3、tcp面向位元組流,實際上是tcp把資料看成一連串無結構的位元組流;udp是面向報文的
4、每一條tcp連線只能是點到點的;udp支援一對一,一對多,多對一和多對多的互動通訊
5、tcp首部開銷20位元組;udp的首部開銷小,只有8個位元組
6、tcp的邏輯通訊通道是全雙工的可靠通道,udp則是不可靠通道
Socket連線 TCP UDP HTTP連線詳解
我們在傳輸資料時,可以只使用 傳輸層 tcp ip協議,但是那樣的話,如果沒有應 用層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到應用層協議,應用層協議有很多,比如http ftp telnet等,也可以自己 定義應用層協議。web使用http協議作應用層協議,以封裝http文字資...
TCP UDP HTTP之間的區別
http 是用於www瀏覽的乙個協議。tcp 是機器之間建立連線用的到的乙個協議。1 tcp ip是個協議組,可分為三個層次 網路層 傳輸層和應用層。在網路層有ip協議 icmp協議 arp協議 rarp協議和bootp協議。在傳輸層中有tcp協議與udp協議。在應用層有ftp http telne...
Socket連線 TCP UDP HTTP連線詳解
我們在傳輸資料時,可以只使用 傳輸層 tcp ip協議,但是那樣的話,如果沒有應 用層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到應用層協議,應用層協議有很多,比如http ftp telnet等,也可以自己 定義應用層協議。web使用http協議作應用層協議,以封裝http文字資...