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)模型上的。

首先由客戶建立一條與服務(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)銷慧瘤。

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ì)用戶來(lái)說(shuō)代芜,一組簡(jiǎn)單的接口就是全部驹饺,讓Socket去組織數(shù)據(jù)楣嘁,以符合指定的協(xié)議。

HTTP旁仿、TCP贷掖、UDP嫡秕、Socket <wbr> <wbr> <wbr>(轉(zhuǎn))

二、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是高速公路上的“卡車”亩鬼,它們攜帶的貨物就是像HTTP殖告,文件傳輸協(xié)議FTP這樣的協(xié)議等。

TCP和UDP是FTP雳锋、HTTP和SMTP之類使用的傳輸層協(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ù)器和客戶端)之間傳輸信息的協(xié)議粤蝎。

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

記住初澎,需要IP協(xié)議來(lái)連接網(wǎng)絡(luò);TCP是一種允許我們安全傳輸數(shù)據(jù)的機(jī)制,使用TCP協(xié)議來(lái)傳輸數(shù)據(jù)的HTTP是Web服務(wù)器和客戶端使用的特殊協(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ì)話層、表示層和應(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ō)豆同,TCP/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連接的三次握手:
第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài)疟丙,等待服務(wù)器確認(rèn)颖侄;第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1)享郊,同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k)览祖,即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)炊琉;
第三次握手:客戶端收到服務(wù)器的SYN+ACK包展蒂,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢苔咪,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài)锰悼,完成三次握手。
握手過(guò)程中傳送的包里不包含數(shù)據(jù)团赏,三次握手完畢后箕般,客戶端與服務(wù)器才正式開(kāi)始傳送數(shù)據(jù)
斷開(kāi)連接時(shí)服務(wù)器和客戶端均可以主動(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)銷更小數(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)有采用類似 TCP的“三次握手”而實(shí)現(xiàn)了TCP所無(wú)法達(dá)到的傳輸效率坯墨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寂汇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捣染,更是在濱河造成了極大的恐慌骄瓣,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耍攘,死亡現(xiàn)場(chǎng)離奇詭異榕栏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蕾各,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)扒磁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人式曲,你說(shuō)我怎么就攤上這事妨托。” “怎么了检访?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵始鱼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我脆贵,道長(zhǎng)医清,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任卖氨,我火速辦了婚禮会烙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘筒捺。我一直安慰自己柏腻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布系吭。 她就那樣靜靜地躺著五嫂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肯尺。 梳的紋絲不亂的頭發(fā)上沃缘,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音则吟,去河邊找鬼槐臀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛氓仲,可吹牛的內(nèi)容都是我干的水慨。 我是一名探鬼主播得糜,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晰洒!你這毒婦竟也來(lái)了朝抖?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤欢顷,失蹤者是張志新(化名)和其女友劉穎槽棍,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抬驴,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡炼七,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了布持。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豌拙。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖题暖,靈堂內(nèi)的尸體忽然破棺而出按傅,到底是詐尸還是另有隱情,我是刑警寧澤胧卤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布唯绍,位于F島的核電站,受9級(jí)特大地震影響枝誊,放射性物質(zhì)發(fā)生泄漏况芒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一叶撒、第九天 我趴在偏房一處隱蔽的房頂上張望绝骚。 院中可真熱鬧,春花似錦祠够、人聲如沸压汪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)止剖。三九已至,卻和暖如春落君,著一層夾襖步出監(jiān)牢的瞬間穿香,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工叽奥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痛侍。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓朝氓,卻偏偏與公主長(zhǎng)得像魔市,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赵哲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

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