先來一個講TCP、UDP和HTTP關係的設計模式
一、TCP/IP是個協議組,可分爲三個層次:網絡層、傳輸層和應用層。 在網絡層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。 在傳輸層中有TCP協議與UDP協議。 在應用層有FTP、HTTP、TELNET、SMTP、DNS等協議。 所以,HTTP自己就是一個協議,是從Web服務器傳輸超文本到本地瀏覽器的傳送協議。瀏覽器
TCP 是基於 TCP 協議實現的網絡文本協議,屬於傳輸層。 UDP 是和TCP 對等的,屬於傳輸層,UDP 和 TCP 有重要的區別。服務器
二、HTTP協議是創建在請求/響應模型上的。首先由客戶創建一條與服務器的TCP連接,併發送一個請求到服務器,請求中包含請求方法、URI、協議版本以及相關的MIME樣式的消息。服務器響應一個狀態行,包含消息的協議版本、一個成功和失敗碼以及相關的MIME式樣的消息。 HTTP/1.0爲每一次HTTP的請求/響應創建一條新的TCP連接,所以一個包含HTML內容和圖片的頁面將須要創建屢次的短時間的TCP連接。一次TCP連接的創建將須要3次握手。 另外,爲了得到適當的傳輸速度,則須要TCP花費額外的迴路連接時間(RTT)。每一次連接的創建須要這種常常性的開銷,而其並不帶有實際有用的數據,只是保證連接的可靠性,所以HTTP/1.1提出了可持續連接的實現方法。HTTP/1.1將只創建一次TCP的連接而重複地使用它傳輸一系列的請求/響應消息,所以減小了連接創建的次數和常常性的連接開銷。網絡
這裏有必要再講一下三次握手的過程:併發
第一次握手:創建鏈接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SENT狀態,等待服務器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。tcp
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;ACK:確認字符(Acknowledgement)測試
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED(TCP鏈接成功)狀態,完成三次握手。.net
三、結論:雖然HTTP自己是一個協議,但其最終仍是基於TCP的。不過,目前,有人正在研究基於TCP+UDP混合的HTTP協議。設計
Socket是什麼呢? Socket是應用層與TCP/IP協議族通訊的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket接口後面,對用戶來講,一組簡單的接口就是所有,讓Socket去組織數據,以符合指定的協議。blog
TCP(Transmission Control Protocol,傳輸控制協議)是基於鏈接的協議,也就是說,在正式收發數據前,必須和對方創建可靠的鏈接。一個TCP鏈接必需要通過三次「對話」才能創建起來,其中的過程很是複雜,咱們這裏只作簡單、形象的介紹,你只要作到可以理解這個過程便可。咱們來看看這三次對話的簡單過程:主機A向主機B發出鏈接請求數據包:「我想給你發數據,能夠嗎?」,這是第一次對話;主機B向主機A發送贊成鏈接和要求同步(同步就是兩臺主機一個在發送,一個在接收,協調工做)的數據包:「能夠,你何時發?」,這是第二次對話;主機A再發出一個數據包確認主機B的要求同步:「我如今就發,你接着吧!」,這是第三次對話。三次「對話」的目的是使數據包的發送和接收同步,通過三次「對話」以後,主機A才向主機B正式發送數據。
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少許數據 速度: TCP慢 UDP快
參考文章:http://blog.csdn.net/hexinli/article/details/50500316
http://blog.csdn.net/u013485792/article/details/52100533
http://blog.csdn.net/sundacheng1989/article/details/28239711