socket姐霍、tcp、udp典唇、http 的認(rèn)識(shí)及區(qū)別

一镊折、先來(lái)一個(gè)講TCP、UDP和HTTP關(guān)系的

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é)議渊抽。

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

首先由客戶(hù)建立一條與服務(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)銷(xiāo),而其并不帶有實(shí)際有用的數(shù)據(jù)荤西,只是保證鏈接的可靠性澜搅,因此HTTP/1.1提出了可持續(xù)鏈接的實(shí)現(xiàn)方法。

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

3、結(jié)論:

雖然HTTP本身是一個(gè)協(xié)議秃流,但其最終還是基于TCP的赂蕴。不過(guò),目前舶胀,有人正在研究基于TCP+UDP混合的HTTP協(xié)議概说。

Socket是什么呢?Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層嚣伐,它是一組接口糖赔。在設(shè)計(jì)模式中,

Socket其實(shí)就是一個(gè)門(mén)面模式轩端,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面放典,

對(duì)用戶(hù)來(lái)說(shuō),一組簡(jiǎn)單的接口就是全部基茵,讓Socket去組織數(shù)據(jù)奋构,以符合指定的協(xié)議。

HTTP拱层、TCP弥臼、UDP、Socket

二根灯、TCP径缅、UDP掺栅、HTTP、SOCKET之間的區(qū)別

TCP和UDP:傳輸層協(xié)議纳猪;

HTTP:應(yīng)用層協(xié)議氧卧;

SOCKET:TCP/IP網(wǎng)絡(luò)的API。

TCP/IP代表傳輸控制協(xié)議/網(wǎng)際協(xié)議氏堤,指的是一系列協(xié)議沙绝。

TCP和UDP使用IP協(xié)議從一個(gè)網(wǎng)絡(luò)傳送數(shù)據(jù)包到另一個(gè)網(wǎng)絡(luò)。把IP想像成一種高速公路丽猬,它允許其它協(xié)議在上面行駛并找到到其它電腦的出口宿饱。

TCP和UDP是高速公路上的“卡車(chē)”,它們攜帶的貨物就是像HTTP脚祟,文件傳輸協(xié)議FTP這樣的協(xié)議等。

TCP和UDP是FTP强饮、HTTP和SMTP之類(lèi)使用的傳輸層協(xié)議由桌。

雖然TCP和UDP都是用來(lái)傳輸其他協(xié)議的,它們卻有一個(gè)顯著的不同:TCP提供有保證的數(shù)據(jù)傳輸邮丰,而UDP不提供行您。

這意味著TCP有一個(gè)特殊的機(jī)制來(lái)確保數(shù)據(jù)安全的不出錯(cuò)的從一個(gè)端點(diǎn)傳到另一個(gè)端點(diǎn),而UDP不提供任何這樣的保證剪廉。

HTTP(超文本傳輸協(xié)議)是利用TCP在兩臺(tái)電腦(通常是Web服務(wù)器和客戶(hù)端)之間傳輸信息的協(xié)議娃循。

客戶(hù)端使用Web瀏覽器發(fā)起HTTP請(qǐng)求給Web服務(wù)器,Web服務(wù)器發(fā)送被請(qǐng)求的信息給客戶(hù)端斗蒋。

記住捌斧,需要IP協(xié)議來(lái)連接網(wǎng)絡(luò);TCP是一種允許我們安全傳輸數(shù)據(jù)的機(jī)制,使用TCP協(xié)議來(lái)傳輸數(shù)據(jù)的HTTP是Web服務(wù)器和客戶(hù)端使用的特殊協(xié)議泉沾。

Socket 接口是TCP/IP網(wǎng)絡(luò)的API捞蚂,Socket接口定義了許多函數(shù)或例程,用以開(kāi)發(fā)TCP/IP網(wǎng)絡(luò)上的應(yīng)用程序跷究。

三姓迅、socket、tcp俊马、udp丁存、http 的認(rèn)識(shí)及區(qū)別

網(wǎng)絡(luò)由下往上分為物理層、數(shù)據(jù)鏈路層柴我、網(wǎng)絡(luò)層解寝、傳輸層、會(huì)話(huà)層屯换、表示層和應(yīng)用層编丘。
IP 協(xié)議對(duì)應(yīng)于網(wǎng)絡(luò)層与学,TCP協(xié)議對(duì)應(yīng)于傳輸層,HTTP協(xié)議對(duì)應(yīng)于應(yīng)用層嘉抓,三者從本質(zhì)上來(lái)說(shuō)沒(méi)有可比性索守,socket則是對(duì)TCP/IP協(xié)議的封裝和應(yīng)用。
可以說(shuō)抑片,TPC/IP協(xié)議是傳輸層協(xié)議卵佛,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸,而HTTP是應(yīng)用層協(xié)議敞斋,主要解決如何包裝數(shù)據(jù)

socket是對(duì)TCP/IP協(xié)議的封裝截汪,Socket本身并不是協(xié)議,而是一個(gè)調(diào)用接口(API)植捎,
通過(guò)Socket衙解,我們才能使用TCP/IP協(xié)議。
實(shí)際上焰枢,Socket跟TCP/IP協(xié)議沒(méi)有必然的聯(lián)系蚓峦。Socket編程接口在設(shè)計(jì)的時(shí)候,就希望也能適應(yīng)其他的網(wǎng)絡(luò)協(xié)議济锄。
所以說(shuō)暑椰,Socket的出現(xiàn)只是使得程序員更方便地使用TCP/IP協(xié)議棧而已,是對(duì)TCP/IP協(xié)議的抽象荐绝,
從而形成了我們知道的一些最基本的函數(shù)接口一汽,比如create、 listen低滩、connect召夹、accept、send委造、read和write等等

實(shí)際上戳鹅,傳輸層的TCP是基于網(wǎng)絡(luò)層的IP協(xié)議的,而應(yīng)用層的HTTP協(xié)議又是基于傳輸層的TCP協(xié)議的昏兆,
而Socket本身不算是協(xié)議枫虏,就像上面所說(shuō),它只是提供了一個(gè)針對(duì)TCP或者UDP編程的接口

TCP連接的三次握手:
第一次握手:客戶(hù)端發(fā)送syn包(syn=j)到服務(wù)器爬虱,并進(jìn)入SYN_SEND狀態(tài)隶债,等待服務(wù)器確認(rèn);第二次握手:服務(wù)器收到syn包跑筝,必須確認(rèn)客戶(hù)的SYN(ack=j+1)死讹,同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包曲梗,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)赞警;
第三次握手:客戶(hù)端收到服務(wù)器的SYN+ACK包妓忍,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢愧旦,客戶(hù)端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài)世剖,完成三次握手。
握手過(guò)程中傳送的包里不包含數(shù)據(jù)笤虫,三次握手完畢后旁瘫,客戶(hù)端與服務(wù)器才正式開(kāi)始傳送數(shù)據(jù)
斷開(kāi)連接時(shí)服務(wù)器和客戶(hù)端均可以主動(dòng)發(fā)起斷開(kāi)TCP連接的請(qǐng)求,斷開(kāi)過(guò)程需要經(jīng)過(guò)“四次握手”

TCP是面向鏈接的琼蚯,雖然說(shuō)網(wǎng)絡(luò)的不安全不穩(wěn)定特性決定了多少次握手都不能保證連接的可靠性酬凳,
但TCP的三次握手在最低限度上(實(shí)際上也很大程度上保證了)保證了連接的可靠性;
而UDP不是面向連接的遭庶,UDP傳送數(shù)據(jù)前并不與對(duì)方建立連接宁仔,對(duì)接收到的數(shù)據(jù)也不發(fā)送確認(rèn)信號(hào),
發(fā)送端不知道數(shù)據(jù)是否會(huì)正確接收罚拟,當(dāng)然也不用重發(fā)台诗,所以說(shuō)UDP是無(wú)連接的、不可靠的一種數(shù)據(jù)傳輸協(xié)議
也正由于上面的特點(diǎn)赐俗,使得UDP的開(kāi)銷(xiāo)更小數(shù)據(jù)傳輸速率更高,因?yàn)椴槐剡M(jìn)行收發(fā)數(shù)據(jù)的確認(rèn)弊知,所以UDP的實(shí)時(shí)性更好阻逮。

所以采用TCP傳輸協(xié)議的MSN比采用UDP的QQ傳輸文件慢,
但并不能說(shuō)QQ的通信是不安全的秩彤,因?yàn)槌绦騿T可以手動(dòng)對(duì)UDP的數(shù)據(jù)收發(fā)進(jìn)行驗(yàn)證叔扼,
比如發(fā)送方對(duì)每個(gè)數(shù)據(jù)包進(jìn)行編號(hào)然后由接收方進(jìn)行驗(yàn)證啊什么的,
即使是這樣漫雷,UDP因?yàn)樵诘讓訁f(xié)議的封裝上沒(méi)有采用類(lèi)似 TCP的“三次握手”而實(shí)現(xiàn)了TCP所無(wú)法達(dá)到的傳輸效率瓜富。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市降盹,隨后出現(xiàn)的幾起案子与柑,更是在濱河造成了極大的恐慌,老刑警劉巖蓄坏,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件价捧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡涡戳,警方通過(guò)查閱死者的電腦和手機(jī)结蟋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渔彰,“玉大人嵌屎,你說(shuō)我怎么就攤上這事推正。” “怎么了宝惰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵植榕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我掌测,道長(zhǎng)内贮,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任汞斧,我火速辦了婚禮夜郁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粘勒。我一直安慰自己竞端,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布庙睡。 她就那樣靜靜地躺著事富,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乘陪。 梳的紋絲不亂的頭發(fā)上统台,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音啡邑,去河邊找鬼贱勃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谤逼,可吹牛的內(nèi)容都是我干的贵扰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼流部,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼戚绕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起枝冀,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舞丛,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后宾茂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瓷马,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年跨晴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了欧聘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡端盆,死狀恐怖怀骤,靈堂內(nèi)的尸體忽然破棺而出费封,到底是詐尸還是另有隱情,我是刑警寧澤蒋伦,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布弓摘,位于F島的核電站,受9級(jí)特大地震影響痕届,放射性物質(zhì)發(fā)生泄漏韧献。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一研叫、第九天 我趴在偏房一處隱蔽的房頂上張望锤窑。 院中可真熱鬧,春花似錦嚷炉、人聲如沸渊啰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绘证。三九已至,卻和暖如春哗讥,著一層夾襖步出監(jiān)牢的瞬間嚷那,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工杆煞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留车酣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓索绪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贫悄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瑞驱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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