1. 程式人生 > >寫給那些讓我糊里糊塗的HTTP、TCP、UDP、Socket

寫給那些讓我糊里糊塗的HTTP、TCP、UDP、Socket

先來一個講TCP、UDP和HTTP關係的,注意紅色mark的部分

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去組織資料,以符合指定的協議。

相關推薦

那些糊里糊塗HTTPTCPUDPSocket

先來一個講TCP、UDP和HTTP關係的,注意紅色mark的部分 1、TCP/IP是個協議組,可分為三個層次:網路層、傳輸層和應用層。在網路層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。在傳輸層中有TCP協議與UDP協議。在應用層有FTP、HTTP、

HTTPTCPUDPSocket與Websocket之間的聯絡與區別

ICP/IP協議(Transmission Control Protocol/InternetProtocol):網路通訊協議,是Internet最基本的協議、Internet國際網際網路絡的基礎,由網路層的IP協議和傳輸層的TCP協議組成。協議採用了4層

HTTPTCPUDPSocket理解

HTTP 中文名:超文字傳輸協議(HyperText Transfer Protocol)是網際網路上應用最為廣泛的一種網路協議,是一個基於請求與響應模式的、無狀態的、應用層的協議,常基於TCP的連線方式。HTTP 是一種請求/響應式的協議,讓客戶端和伺服器進行有效的溝通。一個客戶端與伺服器建立

大學計算機的那些事兒 ---曾經和一樣迷茫的新生

        還記得大三搬到實驗室,有一天上網,看到一個童鞋發帖問,計算機應該怎麼學?說實話,當時自己也很茫然,想提筆寫點什麼,但終究覺得自己能力不夠,也就作罷。時間就這麼過了好久,漸漸地也能感覺到學計算機的怎麼才能很好地提高自己的程式設計水平,趁著侄女學計算機需要我指點

那些傻傻想做服務器開發的朋友

需要 基礎上 技術 由於 災難 高可用 兩個 部分 SQ 很久以前看過一篇標題為《寫給那些傻傻的,想做服務器開發的應屆生》文章,無意中看到知乎上也對這篇文章進行了激烈的討論。下面談談我的看法。 寫在前面的話 我在七八年前就看過這篇文章,那個時候我還是一名學生,它深深地影響了

那些沒有用過oracle儲存過程但又準備學習的同志們

公司屬於外包公司,公司所用的是oracle資料庫,所以,避免不了操作oracle資料庫,而且動不動就是呼叫儲存過程,但是發現一個問題,對於儲存過程的學習還是有相對有限的系統性的學習資料。都是一些零碎的學習資料,東一榔頭西一棒槌。所以本人在這裡就給大家操作一波儲存過程,從基礎語

[轉載]PM和程式設計師(RD)的相處之道--那些血氣方剛的產品經理(PM)

最近有位剛做 PM(產品經理)的小夥跑來跟我控訴,說公司技術部的 RD 們(程式設計師)個個不給力。需求過了千百遍還是理解錯,或者就是簡單回一句“做不了”,表情如死灰。這位 PM 血氣方剛,張牙舞抓,腦子裡總有一千萬個新產品需求的想法撲騰著。他咄咄不停的抱怨 RD 們不配合,能力差,懶惰,沒思考能力,沒品位,

【手動滑稽】第一次部落格浪一浪first~blog~哈哈

【演算法設計與分析基礎 習題1.1】1·研究一下 al-Khorezmi(或者稱為 al-Khwarizmi,譯名為阿爾·花刺子模),“演算法”(algorithm)一次起源於這個人的名字。研究過程中我們還會發現,“演算法”一詞的起源和“代數”(algebra)一詞的起源是相同的。  

那些想要自學成才的java程式設計師

一:我的大學:第一年泡在圖書館看雜七雜八的書,跟學習毫無關係。第二年瘋狂打LOL,從白銀打到黃銅(黃銅守門員)。第三年上半年,被某人點醒,學習了整套C#知識體系,某馬。下半年又決定轉行,又開始了為期半年的自學java路程。所以我的經歷可能適用一些正在學校的孩子或者準備轉行做java的。 二:如果你還是在校生

那些想要自學成才的java程序員

com 隊列 專家 完整 red arch 2.4 可復用 虛擬 一:我的大學:第一年泡在圖書館看雜七雜八的書,跟學習毫無關系。第二年瘋狂打LOL,從白銀打到黃銅(黃銅守門員)。第三年上半年,被某人點醒,學習了整套C#知識體系,某馬。下半年又決定轉行,又開始了為期半年的自學

那些想自學java的同伴

一:我的大學:第一年泡在圖書館看雜七雜八的書,跟學習毫無關係。第二年瘋狂打LOL,從白銀打到黃銅(黃銅守門員)。第三年上半年,被某人點醒,學習了整套C#知識體系,某馬。下半年又決定轉行,又開始了為期半年的自學java路程。所以我的經歷可能適用一些正在學校的孩子或者準備轉行做java的。

+++++++++用戶空間進程通信tcp協議基礎http協議基礎

博客 linux 運維 遊戲 it 互聯網網絡進程的通信知識裸套接字、分段、分片、MTU進程地址、用戶空間、內核空間進程間通信、sockettcp協議http協議超文本定義、超文本格式web資源:動態靜態訪問入口、被訪問的資源跨站引用/盜鏈URI,URL,RUN關系,子集URL格式主機地址+進程地址(port

httpTCP/IP協議與socket之間的區別

輪詢 之前 是什麽 防火墻 其中 line targe pro nbsp http、TCP/IP協議與socket之間的區別 網絡由下往上分為: www.2cto.com 物理層-- 數據鏈路層-- 網絡層--

深入瞭解通訊協議:httpTCP/IP協議與socket之間的區別

相信不少初學手機聯網開發的朋友都想知道Http與Socket連線究竟有什麼區別,希望通過自己的淺顯理解能對初學者有所幫助。 1、TCP連線 要想明白Socket連線,先要明白TCP連線。手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網路建立TCP連線。TCP協議可以對

Socket 網路通訊協議 httpTCP/IP協議與socket之間的區別

網路由下往上分為:  物理層-- 資料鏈路層-- 網路層-- IP協議 傳輸層-- TCP協議 會話層-- 表示層和應用層-- HTTP協議 1、TCP/IP連線 手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網路建立TCP連線

面試篇-- HttpTCP/IP協議與Socket之間的區別

網路由下往上分為: 物理層-- 資料鏈路層-- 網路層-- IP協議 傳輸層-- TCP協議 會話層-- 表示層和應用層-- HTTP協議 1、TCP/IP連線 手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網路建立TCP連線。TCP協議可

RPC協議http協議tcp/ip協議udp協議socket協議以及soap協議都有什麼相同點和不同點

HTTP與RPC的區別: 人們常常錯誤地將HTTP稱作一種遠端過程呼叫(RPC)[23]機制,僅僅是因為它包括了請求和響應。    呼叫遠端機器上的一個過程(procedure)的觀念,是RPC與其他形式的基於網路的應用通訊的區別在。 RPC的協議識別出過程並且傳遞給它固定

【轉】HTTP學習---TCPUDP協議的區別與應用

用戶數 prot 發送 smi 處理 層次 實時性 oot user 【原文】https://www.toutiao.com/i6592813624689951239/ 概述 ⊙TCP/IP是個協議組,可分為三個層次:網絡層、傳輸層和應用層。 在網絡層有IP協議、ICMP

【基本網路概念之三】IPTCPUDP IP地址和域名 埠

IP、TCP和UDP   java支援的協議只有TCP和UDP,以及建立在TCP和UDP之上的應用層協議。所有其他傳輸層、網際層和更底層的協議,如ICMP、IGMP、ARP和其他協議在java程式中都只能通過連結到原生程式碼來實現。 IP地址和域名   I

python中的socketTCP/IP協議UDP協議

本文的大概內容從一片技術文章中而來,再加上自己的想法。 socket通常也稱作"套接字",用於描述IP地址和埠,是一個通訊鏈的控制代碼,應用程式通常通過"套接字"向網路發出請求或者應答網路請求。 socket起源於Unix,而Unix/Linux基本哲學之一就是“一切