TCP/IP、Http的區別

來源:互聯網
上載者:User

標籤:osi   osi模型   響應   server   present   lsp   int   台電腦   執行   

TPC/IP協議是傳輸層協議,主要解決資料如何在網路中傳輸,而HTTP是應用程式層協議,主要解決如何封裝資料。關於TCP/IP和HTTP協議的關係,網路有一段比較容易理解的介紹:“我們在傳輸資料時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用程式層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到應用程式層協議,應用程式層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用程式層協議。WEB使用HTTP協議作應用程式層協議,以封裝HTTP 文本資訊,然後使用TCP/IP做傳輸層協議將它發到網路上。”

  術語TCP/IP代表傳輸控制通訊協定/網際協議,指的是一系列協議。“IP”代表網際協議,TCP和UDP使用該協議從一個網路傳送資料包到另一個網路。把 IP想像成一種高速公路,它允許其它協議在上面行駛並找到到其它電腦的出口。 TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP,檔案傳輸通訊協定FTP這樣的協議等。     你應該能理解,TCP和UDP是FTP,HTTP和SMTP之類使用的傳輸層協議。雖然TCP和UDP都是用來傳輸其他協議的,它們卻有一個顯著的不同:TCP提供有保證的資料轉送,而UDP不提供。這意味著TCP有一個特殊的機制來確保資料安全的不出錯的從一個端點傳到另一個端點,而UDP不提供任何這樣的保證。    HTTP(超文字傳輸通訊協定 (HTTP))是利用TCP在兩台電腦(通常是Web伺服器和用戶端)之間傳輸資訊的協議。用戶端使用Web瀏覽器發起HTTP請求給Web伺服器,Web伺服器發送被請求的資訊給用戶端。  Http協議是建立在TCP協議基礎之上的,當瀏覽器需要從伺服器擷取網頁資料的時候,會發出一次Http請求。Http會通過TCP建立起一個到伺服器的串連通道,當本次請求需要的資料完畢後,Http會立即將TCP串連斷開,這個過程是很短的。所以Http串連是一種短串連,是一種無狀態的串連。所謂的無狀態,是指瀏覽器每次向伺服器發起請求的時候,不是通過一個串連,而是每次都建立一個新的串連。如果是一個串連的話,伺服器處理序中就能保持住這個串連並且在記憶體中記住一些資訊狀態。而每次請求結束後,串連就關閉,相關的內容就釋放了,所以記不住任何狀態,成為無狀態串連。  從HTTP/1.1起,預設都開啟了Keep-Alive,保持串連特性,簡單地說,當一個網頁開啟完成後,用戶端和伺服器之間用於傳輸HTTP資料的TCP串連不會關閉,如果用戶端再次訪問這個伺服器上的網頁,會繼續使用這一條已經建立的串連Keep-Alive不會永久保持串連,它有一個保持時間,可以在不同的伺服器軟體(如Apache)中設定這個時間。雖然這裡使用TCP串連保持了一段時間,但是這個時間是有限範圍的,到了時間點依然是會關閉的,所以我們還把其看做是每次串連完成後就會關閉。後來,通過Session, Cookie等相關技術,也能保持一些使用者的狀態。但是還是每次都使用一個串連,依然是無狀態串連。Http就是在每次請求完成後就把TCP串連關了,所以是短串連。而我們直接通過Socket編程使用TCP協議的時候,因為我們自己可以通過代碼區控制什麼時候開啟串連什麼時候關閉串連,只要我們不通過代碼把串連關閉,這個串連就會在用戶端和服務端的進程中一直存在,相關狀態資料會一直儲存著。

  在C#中會有Socket,實際上socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個調用介面(API)。Socket的出現只是使得程式員更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象,從而形成了我們知道的一些最基本的函數介面,比如create、listen、connect、accept、send、read和write等等。

比較形象的描述:HTTP是轎車,提供了封裝或者顯示資料的具體形式;Socket是發動機,提供了網路通訊的能力。對於從C#編程的角度來講,為了方便,你可以直接選擇已經製造好的轎車Http來與伺服器互動。但是有時候往往因為環境因素或者其他的一些定製的請求,必須要使用TCP協議,這時就需要使用Socket編程,然後自己去處理擷取的資料。就像是你用已有的發動機,自己造了一輛卡車,去從伺服器互動。


  HTTP/1.0和HTTP/1.1都把TCP作為底層的傳輸協議。HTTP客戶首先發起建立與伺服器TCP串連。一旦建立串連,瀏覽器進程和伺服器處理序就可以通過各自的通訊端來訪問TCP。如前所述,用戶端通訊端是客戶進程和TCP串連之間的“門”,伺服器端通訊端是伺服器處理序和同一TCP串連之間的“門”。

  下面的圖表試圖顯示不同的TCP/IP和其他的協議在最初OSI模型中的位置:

7 應用程式層 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP
6 展示層 例如XDR、ASN.1、SMB、AFP、NCP
5 會話層 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets
4 傳輸層 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL
3 網路層 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25
2 資料連結層 例如乙太網路、令牌環、HDLC、框架轉送、ISDN、ATM、IEEE 802.11、FDDI、PPP
1 物理層 例如線路、無線電、光纖、信鴿

 

1、HTTP協議的幾個重要概念
 1.串連(Connection):一個傳輸層的實際環流,它是建立在兩個相互連訊的應用程式之間。
 2.訊息(Message):HTTP通訊的基本單位,包括一個結構化的八元組序列並通過串連傳輸。
 3.請求(Request):一個從用戶端到伺服器的請求資訊包括應用於資源的方法、資源的標識符和協議的版本號碼
 4.響應(Response):一個從伺服器返回的資訊包括HTTP協議的版本號碼、請求的狀態(例如“成功”或“沒找到”)和文檔的MIME類型。
 5.資源(Resource):由URI標識的網路資料對象或服務。
 6.實體(Entity):資料資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在一個請求或響應資訊中。一個實體包括實體頭資訊和實體的本身內容。
 7.客戶機(Client):一個為發送請求目的而建立連線應用程式程式。
 8.使用者代理程式(Useragent):初始化一個請求的客戶機。它們是瀏覽器、編輯器或其它使用者工具。
 9.伺服器(Server):一個接受串連並對請求返回資訊的應用程式。
 10.原始伺服器(Originserver):是一個給定資源可以在其上駐留或被建立的伺服器。
 11.代理(Proxy):一個中間程式,它可以充當一個伺服器,也可以充當一個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的伺服器中。一個代理在發送請求資訊之前,必須解釋並且如果可能重寫它。
 代理經常作為通過防火牆的客戶機端的門戶,代理還可以作為一個協助應用來通過協議處理沒有被使用者代理程式完成的請求。
 12.網關(Gateway):一個作為其它伺服器中間媒介的伺服器。與代理不同的是,網關接受請求就好象對被請求的資源來說它就是原始伺服器;發出請求的客戶機並沒有意識到它在同網關打交道。
 網關經常作為通過防火牆的伺服器端的門戶,網關還可以作為一個協議翻譯器以便存取那些儲存在非HTTP系統中的資源。
 13.通道(Tunnel):是作為兩個串連中繼的中介程式。一旦啟用,通道便被認為不屬於HTTP通訊,儘管通道可能是被一個HTTP請求初始化的。當被中繼的串連兩端關閉時,通道便消失。當一個門戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通訊時通道被經常使用。
 14.緩衝(Cache):反應資訊的局域儲存。

 2.發送請求
 開啟一個串連後,客戶機把請求訊息送到伺服器的停留連接埠上,完成提出請求動作。
 HTTP/1.0 請求訊息的格式為:
 請求訊息=請求行(通用資訊|要求標頭|實體頭)CRLF[實體內容]
 請求 行=方法 請求URL HTTP版本號碼 CRLF
 方 法=GET|HEAD|POST|擴充方法
 U R L=協議名稱+宿主名+目錄與檔案名稱
 請求行中的方法描述指定資源中應該執行的動作,常用的方法有GET、HEAD和POST。不同的請求對象對應GET的結果是不同的,對應關係如下:
 對象 GET的結果
 檔案 檔案的內容
 程式 該程式的執行結果
 資料庫查詢 查詢結果
 HEAD??要求伺服器尋找某對象的元資訊,而不是對象本身。
 POST??從客戶機向伺服器傳送資料,在要求伺服器和CGI做進一步處理時會用到POST方法。POST主要用於發送HTML文本中FORM的內容,讓CGI程式處理。
 一個請求的例子為:
 GEThttp://networking.zju.edu.cn/zju/index.htmHTTP/1.0 networking.zju.edu.cn/zju/index.htmHTTP/1.0 頭資訊又稱為元資訊,即資訊的資訊,利用元資訊可以實現有條件的請求或應答。
 要求標頭??告訴伺服器怎樣解釋本次請求,主要包括使用者可以接受的資料類型、壓縮方法和語言等。
 實體頭??實體資訊類型、長度、壓縮方法、最後一次修改時間、資料有效期間等。
 實體??請求或應答對象本身。
 3.發送響應
 伺服器在處理完客戶的請求之後,要向客戶機發送響應訊息。
 HTTP/1.0的響應訊息格式如下:
 響應訊息=狀態行(通用資訊頭|回應標頭|實體頭) CRLF 〔實體內容〕
 狀態行=HTTP版本號碼 狀態代碼 原因敘述
 狀態代碼表示響應類型
 1×× 保留
 2×× 表示請求成功地接收
 3×× 為完成請求客戶需進一步細化請求
 4×× 客戶錯誤
 5×× 伺服器錯誤
 回應標頭的資訊包括:服務程式名,通知客戶請求的URL需要認證,請求的資源何時能使用。
 4.關閉串連
 客戶和伺服器雙方都可以通過關閉通訊端來結束TCP/IP對話

來源:http://www.cnblogs.com/renyuan/archive/2013/01/19/2867720.html

TCP/IP、Http的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.