Java/Android中高級(jí)面試高頻題之——TCP,UDP和socket奈懒,http之間的聯(lián)系和區(qū)別

很多同學(xué)發(fā)私信給我,說:餅干大佬宪巨,最近經(jīng)常被問到TCP,UDP和socket之間的聯(lián)系和區(qū)別磷杏。這個(gè)單獨(dú)說他們,我都知道捏卓,可是他們之間的聯(lián)系和區(qū)別极祸,我不知道怎么答。

其實(shí)前文中我有說過TCP和UDP,也比較過遥金,只是沒有明確說他們的聯(lián)系和區(qū)別浴捆。今天我們就介紹一下他們的聯(lián)系和區(qū)別。希望這個(gè)高頻面試題不再是阻礙你的攔路石稿械。

TCP(Transmission Control Protocol?傳輸控制協(xié)議)是一種面向連接的选泻、可靠的、基于字節(jié)流的傳輸層通信協(xié)議美莫,由IETF的RFC 793定義页眯。在簡(jiǎn)化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能厢呵,用戶數(shù)據(jù)報(bào)協(xié)議(UDP)是同一層內(nèi)另一個(gè)重要的傳輸協(xié)議窝撵。

在因特網(wǎng)協(xié)議族(Internet protocol suite)中,TCP層是位于IP層之上述吸,應(yīng)用層之下的中間層。不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的锣笨、像管道一樣的連接蝌矛,但是IP層不提供這樣的流機(jī)制,而是提供不可靠的包交換错英。


TCP的優(yōu)點(diǎn)

可靠入撒,穩(wěn)定

TCP的可靠體現(xiàn)在TCP在傳遞數(shù)據(jù)之前,會(huì)有三次握手來建立連接椭岩,而且在數(shù)據(jù)傳遞時(shí)茅逮,有確認(rèn)、窗口判哥、重傳献雅、擁塞控制機(jī)制,在數(shù)據(jù)傳完后塌计,還會(huì)斷開連接用來節(jié)約系統(tǒng)資源挺身。

TCP的缺點(diǎn)

慢,效率低锌仅,占用系統(tǒng)資源高章钾,易被攻擊

TCP在傳遞數(shù)據(jù)之前,要先建連接热芹,這會(huì)消耗時(shí)間贱傀,而且在數(shù)據(jù)傳遞時(shí),確認(rèn)機(jī)制伊脓、重傳機(jī)制府寒、擁塞控制機(jī)制等都會(huì)消耗大量的時(shí)間,而且要在每臺(tái)設(shè)備上維護(hù)所有的傳輸連接,事實(shí)上椰棘,每個(gè)連接都會(huì)占用系統(tǒng)的CPU纺棺、內(nèi)存等硬件資源。

由于TCP存在確認(rèn)機(jī)制和三次握手機(jī)制邪狞,這些是導(dǎo)致TCP容易被人利用祷蝌,實(shí)現(xiàn)DOSDDOS帆卓、CC等攻擊巨朦。

TCP應(yīng)用場(chǎng)景

當(dāng)對(duì)網(wǎng)絡(luò)通訊質(zhì)量有要求的時(shí)候,比如:整個(gè)數(shù)據(jù)要準(zhǔn)確無(wú)誤的傳遞給對(duì)方剑令,這往往用于一些要求可靠的應(yīng)用糊啡,比如HTTPHTTPS吁津、FTP等傳輸文件的協(xié)議棚蓄,POP、SMTP等郵件傳輸?shù)膮f(xié)議碍脏。

在日常生活中梭依,常見使用TCP協(xié)議的應(yīng)用比如:瀏覽器使用HTTP,Outlook使用POP典尾、SMTP役拴,QQ文件傳輸?shù)取?/p>

UDP 是User Datagram Protocol的簡(jiǎn)稱, 中文名是用戶數(shù)據(jù)報(bào)協(xié)議钾埂,是OSI(Open System Interconnection河闰,開放式系統(tǒng)互聯(lián)) 參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)褥紫,IETF RFC 768是UDP的正式規(guī)范姜性。UDP在IP報(bào)文的協(xié)議號(hào)是17。

UDP的優(yōu)點(diǎn)

快髓考,比TCP稍安全

UDP沒有TCP的握手污抬、確認(rèn)、窗口绳军、重傳印机、擁塞控制等機(jī)制,UDP是一個(gè)無(wú)狀態(tài)的傳輸協(xié)議门驾,所以它在傳遞數(shù)據(jù)時(shí)非成淙快。沒有TCP的這些機(jī)制奶是,UDP較TCP被攻擊者利用的漏洞就要少一些楣责。但UDP也是無(wú)法避免攻擊的竣灌,比如:UDP Flood攻擊……

UDP的缺點(diǎn)

不可靠,不穩(wěn)定

因?yàn)閁DP沒有TCP那些可靠的機(jī)制秆麸,在數(shù)據(jù)傳遞時(shí)初嘹,如果網(wǎng)絡(luò)質(zhì)量不好,就會(huì)很容易丟包沮趣。

UDP應(yīng)用場(chǎng)景

當(dāng)對(duì)網(wǎng)絡(luò)通訊質(zhì)量要求不高的時(shí)候屯烦,要求網(wǎng)絡(luò)通訊速度能盡量的快,這時(shí)就可以使用UDP房铭。在日常生活中驻龟,常見使用UDP協(xié)議的應(yīng)用比如:QQ語(yǔ)音、QQ視頻缸匪、TFTP等翁狐。

TCP和UDP使用IP協(xié)議從一個(gè)網(wǎng)絡(luò)傳送數(shù)據(jù)包到另一個(gè)網(wǎng)絡(luò)。把IP想像成一種高速公路凌蔬,它允許其它協(xié)議在上面行駛并找到到其它電腦的出口露懒。TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP砂心,文件傳輸協(xié)議FTP這樣的協(xié)議等懈词。


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)用層有:FTPHTTP衰抑、TELNET象迎、SMTPDNS等協(xié)議呛踊。

因此砾淌,HTTP本身就是一個(gè)協(xié)議,是從Web服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議谭网。

TCP和UDP是FTP汪厨,HTTP和SMTP之類使用的傳輸層協(xié)議。雖然TCP和UDP都是用來傳輸其他協(xié)議的愉择,它們卻有一個(gè)顯著的不同:TCP提供有保證的數(shù)據(jù)傳輸劫乱,而UDP不提供织中。這意味著TCP有一個(gè)特殊的機(jī)制來確保數(shù)據(jù)安全的不出錯(cuò)的從一個(gè)端點(diǎn)傳到另一個(gè)端點(diǎn),而UDP不提供任何這樣的保證衷戈。


HTTP協(xié)議

HTTP(超文本傳輸協(xié)議)是利用TCP在兩臺(tái)電腦(通常是Web服務(wù)器和客戶端)之間傳輸信息的協(xié)議狭吼。客戶端使用Web瀏覽器發(fā)起HTTP請(qǐng)求給Web服務(wù)器殖妇,Web服務(wù)器發(fā)送被請(qǐng)求的信息給客戶端刁笙。



HTTP是短連接:客戶端發(fā)送請(qǐng)求都需要服務(wù)器端回送響應(yīng).請(qǐng)求結(jié)束后,主動(dòng)釋放鏈接拉一,因此為短連接采盒。通常的做法是,不需要任何數(shù)據(jù)蔚润,也要保持每隔一段時(shí)間向服務(wù)器發(fā)送"保持連接"的請(qǐng)求磅氨。這樣可以保證客戶端在服務(wù)器端是"上線"狀態(tài)。

HTTP連接使用的是"請(qǐng)求-響應(yīng)"方式嫡纠,不僅在請(qǐng)求時(shí)建立連接烦租,而且客戶端向服務(wù)器端請(qǐng)求后晕城,服務(wù)器才返回?cái)?shù)據(jù)筒繁。

Socket協(xié)議

網(wǎng)絡(luò)上的兩個(gè)程序通過一個(gè)雙向的通信連接實(shí)現(xiàn)數(shù)據(jù)的交換,這個(gè)連接的一端稱為一個(gè)socket眼姐。

建立網(wǎng)絡(luò)通信連接至少要一對(duì)端口號(hào)(socket)者蠕。socket本質(zhì)是編程接口(API)窃祝,對(duì)TCP/IP的封裝,TCP/IP也要提供可供程序員做網(wǎng)絡(luò)開發(fā)所用的接口踱侣,這就是Socket編程接口粪小;HTTP是轎車,提供了封裝或者顯示數(shù)據(jù)的具體形式抡句;Socket是發(fā)動(dòng)機(jī)探膊,提供了網(wǎng)絡(luò)通信的能力。

好了待榔,快到年關(guān)了逞壁,各位先不要跳槽了。好好補(bǔ)習(xí)補(bǔ)習(xí)專業(yè)知識(shí)吧锐锣。明天爭(zhēng)取能跟公司提漲薪多漲一點(diǎn)腌闯。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雕憔,隨后出現(xiàn)的幾起案子姿骏,更是在濱河造成了極大的恐慌,老刑警劉巖橘茉,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件工腋,死亡現(xiàn)場(chǎng)離奇詭異姨丈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)擅腰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門蟋恬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人趁冈,你說我怎么就攤上這事歼争。” “怎么了渗勘?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵沐绒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我旺坠,道長(zhǎng)乔遮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任取刃,我火速辦了婚禮蹋肮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘璧疗。我一直安慰自己坯辩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布崩侠。 她就那樣靜靜地躺著漆魔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪却音。 梳的紋絲不亂的頭發(fā)上改抡,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音僧家,去河邊找鬼雀摘。 笑死裸删,一個(gè)胖子當(dāng)著我的面吹牛八拱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涯塔,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼肌稻,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了匕荸?” 一聲冷哼從身側(cè)響起爹谭,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榛搔,沒想到半個(gè)月后诺凡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體东揣,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年腹泌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘶卧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凉袱,死狀恐怖芥吟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情专甩,我是刑警寧澤钟鸵,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站涤躲,受9級(jí)特大地震影響棺耍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜种樱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一烈掠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缸托,春花似錦左敌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至佩抹,卻和暖如春叼风,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棍苹。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工无宿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枢里。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓孽鸡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親栏豺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子彬碱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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