天天看點

TCP HTTP UDP 差別

TCP   HTTP   UDP:

這是通信協定,也就是通信時所遵守的規則,隻有雙方按照這個規則“說話”,對方才能了解或為之服務。

socket:

這是為了實作以上的通信過程而建立成來的通信管道,其真實的代表是用戶端和伺服器端的一個通信程序,雙方程序通過socket進行通信,而通信的規則采用指定的協定。

socket隻是一種連接配接模式,不是協定

在c程式中,http,udp連接配接,都是基于socket的

tcp,udp,簡單的說(雖然不準确)是兩個最基本的協定

很多其它協定都是基于這兩個協定

如,http就是基于tcp的,FTP,SMTP,...都 是

用socket可以建立tcp連接配接,也可以建立udp連接配接

這意味着,用socket可以建立任何協定的連接配接,因為其它協定都是基于此的

先來一個講TCP、UDP和HTTP關系的

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協定。

Socket是什麼呢?

       Socket是應用層與TCP/IP協定族通信的中間軟體抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協定族隐藏在Socket接口後面,對使用者來說,一組簡單的接口就是全部,讓Socket去組織資料,以符合指定的協定。

TCP HTTP UDP 差別
TCP HTTP UDP 差別