對(duì)HTTP滨嘱,TCP,UDP的認(rèn)識(shí)

1浸间、TCP/IP是個(gè)協(xié)議組太雨,可分為三個(gè)層次:網(wǎng)絡(luò)層、傳輸層和應(yīng)用層魁蒜。在網(wǎng)絡(luò)層有IP協(xié)議囊扳、ICMP協(xié)議、ARP協(xié)議兜看、RARP協(xié)議和BOOTP協(xié)議锥咸。在傳輸層中有TCP協(xié)議與UDP協(xié)議。在應(yīng)用層有FTP细移、HTTP搏予、TELNET、SMTP葫哗、DNS等協(xié)議缔刹。因此,HTTP本身就是一個(gè)協(xié)議劣针,是從Web服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議校镐。 TCP 是基于 TCP 協(xié)議實(shí)現(xiàn)的網(wǎng)絡(luò)文本協(xié)議,屬于應(yīng)用層。UDP 是和TCP 對(duì)等的捺典,屬于傳輸層鸟廓,UDP 和 TCP 有重要的區(qū)別。

?2襟己、HTTP協(xié)議是建立在請(qǐng)求/響應(yīng)模型上的引谜。

首先由客戶建立一條與服務(wù)器的TCP鏈接,并發(fā)送一個(gè)請(qǐng)求到服務(wù)器擎浴,請(qǐng)求中包含請(qǐng)求方法员咽、URI、協(xié)議版本以及相關(guān)的MIME樣式的消息贮预。

服務(wù)器響應(yīng)一個(gè)狀態(tài)行贝室,包含消息的協(xié)議版本契讲、一個(gè)成功和失敗碼以及相關(guān)的MIME式樣的消息。HTTP/1.0為每一次HTTP的請(qǐng)求/響應(yīng)建立一條新的TCP鏈接滑频,因此一個(gè)包含HTML內(nèi)容和圖片的頁(yè)面將需要建立多次的短期的TCP鏈接捡偏。一次TCP鏈接的建立將需要3次握手。另外峡迷,為了獲得適當(dāng)?shù)膫鬏斔俣纫埃瑒t需要TCP花費(fèi)額外的回路鏈接時(shí)間(RTT)。

每一次鏈接的建立需要這種經(jīng)常性的開(kāi)銷绘搞,而其并不帶有實(shí)際有用的數(shù)據(jù)彤避,只是保證鏈接的可靠性,因此HTTP/1.1提出了可持續(xù)鏈接的實(shí)現(xiàn)方法看杭。

HTTP/1.1將只建立一次TCP的鏈接而重復(fù)地使用它傳輸一系列的請(qǐng)求/響應(yīng)消息忠藤,因此減少了鏈接建立的次數(shù)和經(jīng)常性的鏈接開(kāi)銷。

這里有必要再講一下三次握手的過(guò)程:?

第一次握手:建立連接時(shí)楼雹,客戶端發(fā)送syn包(syn=j)到服務(wù)器模孩,并進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器確認(rèn)贮缅;SYN:同步序列編號(hào)(Synchronize Sequence Numbers)榨咐。?

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1)谴供,同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k)块茁,即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)桂肌;ACK:確認(rèn)字符(Acknowledgement)?

第三次握手:客戶端收到服務(wù)器的SYN+ACK包数焊,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢崎场,客戶端和服務(wù)器進(jìn)入ESTABLISHED(TCP連接成功)狀態(tài)佩耳,完成三次握手。?

?3谭跨、結(jié)論:雖然HTTP本身是一個(gè)協(xié)議干厚,但其最終還是基于TCP的。不過(guò)螃宙,目前蛮瞄,有人正在研究基于TCP+UDP混合的HTTP協(xié)議。

Socket是什么呢谆扎?? ? ??

Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層挂捅,它是一組接口。

在設(shè)計(jì)模式中堂湖,Socket其實(shí)就是一個(gè)門面模式闲先,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面周瞎,對(duì)用戶來(lái)說(shuō),一組簡(jiǎn)單的接口就是全部饵蒂,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議酱讶。

HTTP退盯、TCP、UDP泻肯、Socket(轉(zhuǎn))? TCP(Transmission Control Protocol渊迁,傳輸控制協(xié)議)是基于連接的協(xié)議,也就是說(shuō)灶挟,在正式收發(fā)數(shù)據(jù)前琉朽,必須和對(duì)方建立可靠的連接。一個(gè)TCP連接必須要經(jīng)過(guò)三次“對(duì)話”才能建立起來(lái)稚铣,其中的過(guò)程非常復(fù)雜箱叁,我們這里只做簡(jiǎn)單、形象的介紹惕医,你只要做到能夠理解這個(gè)過(guò)程即可耕漱。

我們來(lái)看看這三次對(duì)話的簡(jiǎn)單過(guò)程:主機(jī)A向主機(jī)B發(fā)出連接請(qǐng)求數(shù)據(jù)包:“我想給你發(fā)數(shù)據(jù),可以嗎抬伺?”螟够,這是第一次對(duì)話;主機(jī)B向主機(jī)A發(fā)送同意連接和要求同步(同步就是兩臺(tái)主機(jī)一個(gè)在發(fā)送峡钓,一個(gè)在接收妓笙,協(xié)調(diào)工作)的數(shù)據(jù)包:“可以,你什么時(shí)候發(fā)能岩?”寞宫,這是第二次對(duì)話;主機(jī)A再發(fā)出一個(gè)數(shù)據(jù)包確認(rèn)主機(jī)B的要求同步:“我現(xiàn)在就發(fā)捧灰,你接著吧淆九!”,這是第三次對(duì)話毛俏。三次“對(duì)話”的目的是使數(shù)據(jù)包的發(fā)送和接收同步炭庙,經(jīng)過(guò)三次“對(duì)話”之后,主機(jī)A才向主機(jī)B正式發(fā)送數(shù)據(jù)煌寇。 UDP(User Data Protocol焕蹄,用戶數(shù)據(jù)報(bào)協(xié)議)是與TCP相對(duì)應(yīng)的協(xié)議。

它是面向非連接的協(xié)議阀溶,它不與對(duì)方建立連接腻脏,而是直接就把數(shù)據(jù)包發(fā)送過(guò)去鸦泳!? UDP適用于一次只傳送少量數(shù)據(jù)、對(duì)可靠性要求不高的應(yīng)用環(huán)境永品。比如做鹰,我們經(jīng)常使用“ping”命令來(lái)測(cè)試兩臺(tái)主機(jī)之間TCP/IP通信是否正常,其實(shí)“ping”命令的原理就是向?qū)Ψ街鳈C(jī)發(fā)送UDP數(shù)據(jù)包鼎姐,然后對(duì)方主機(jī)確認(rèn)收到數(shù)據(jù)包钾麸,如果數(shù)據(jù)包是否到達(dá)的消息及時(shí)反饋回來(lái),那么網(wǎng)絡(luò)就是通的炕桨。例如饭尝,在默認(rèn)狀態(tài)下,一次“ping”操作發(fā)送4個(gè)數(shù)據(jù)包(如圖2所示)献宫。大家可以看到钥平,發(fā)送的數(shù)據(jù)包數(shù)量是4包,收到的也是4包(因?yàn)閷?duì)方主機(jī)收到后會(huì)發(fā)回一個(gè)確認(rèn)收到的數(shù)據(jù)包)姊途。

這充分說(shuō)明了UDP協(xié)議是面向非連接的協(xié)議涉瘾,沒(méi)有建立連接的過(guò)程。正因?yàn)閁DP協(xié)議沒(méi)有連接的過(guò)程吭净,所以它的通信效果高睡汹;但也正因?yàn)槿绱耍目煽啃圆蝗鏣CP協(xié)議高寂殉。QQ就使用UDP發(fā)消息囚巴,因此有時(shí)會(huì)出現(xiàn)收不到消息的情況。

?tcp協(xié)議和udp協(xié)議的差別? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? TCP ? ? ? ? ? ? ? ? ? UDP?

是否連接 ? ? ? ? 面向連接 ? ? ? ? ? ?面向非連接?

傳輸可靠性 ? ? 可靠 ? ? ? ? ? ? ? ? ? ?不可靠

?應(yīng)用場(chǎng)合 ? ? ? ?傳輸大量數(shù)據(jù) ? ? 少量數(shù)據(jù)?

速度 ? ? ? ? ? ? ? ? 慢 ? ? ? ? ? ? ? ? ? ? ? ? 快

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末友扰,一起剝皮案震驚了整個(gè)濱河市彤叉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌村怪,老刑警劉巖秽浇,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異甚负,居然都是意外死亡柬焕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門梭域,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)斑举,“玉大人,你說(shuō)我怎么就攤上這事病涨「荤瑁” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)赎懦。 經(jīng)常有香客問(wèn)我雀鹃,道長(zhǎng),這世上最難降的妖魔是什么励两? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任黎茎,我火速辦了婚禮,結(jié)果婚禮上当悔,老公的妹妹穿的比我還像新娘工三。我一直安慰自己,他們只是感情好先鱼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布睹限。 她就那樣靜靜地躺著钉稍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪玻熙。 梳的紋絲不亂的頭發(fā)上串远,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天宏多,我揣著相機(jī)與錄音,去河邊找鬼澡罚。 笑死伸但,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的留搔。 我是一名探鬼主播更胖,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隔显!你這毒婦竟也來(lái)了却妨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤括眠,失蹤者是張志新(化名)和其女友劉穎彪标,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體掷豺,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捞烟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了当船。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片题画。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖生年,靈堂內(nèi)的尸體忽然破棺而出婴程,到底是詐尸還是另有隱情,我是刑警寧澤抱婉,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布档叔,位于F島的核電站桌粉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏衙四。R本人自食惡果不足惜铃肯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望传蹈。 院中可真熱鬧押逼,春花似錦、人聲如沸惦界。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沾歪。三九已至漂彤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灾搏,已是汗流浹背挫望。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狂窑,地道東北人媳板。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像泉哈,于是被迫代替她去往敵國(guó)和親蛉幸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 個(gè)人認(rèn)為丛晦,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記巨缘,這雖然只是...
    貳零壹柒_fc10閱讀 5,054評(píng)論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的采呐,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,063評(píng)論 6 174
  • 簡(jiǎn)介 用簡(jiǎn)單的話來(lái)定義tcpdump若锁,就是:dump the traffic on a network,根據(jù)使用者...
    保川閱讀 5,956評(píng)論 1 13
  • 1斧吐、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)又固、netstat -nat 查看TCP各個(gè)狀態(tài)的數(shù)量2)、lso...
    北辰青閱讀 9,423評(píng)論 0 11
  • 參考:http://www.2cto.com/net/201611/569006.html TCP HTTP UD...
    F麥子閱讀 2,949評(píng)論 0 14