移動(dòng)開(kāi)發(fā)-TCP/IP協(xié)議

前提

TCP/IP協(xié)議是一種網(wǎng)絡(luò)協(xié)議,并不是在Android中才有的,也不只是在java中有,其他的開(kāi)發(fā)語(yǔ)言中同樣也可以使用TCP/IP協(xié)議進(jìn)行網(wǎng)絡(luò)編程

網(wǎng)絡(luò)的分層

物理層-->數(shù)據(jù)鏈路層-->網(wǎng)絡(luò)層-->傳輸層-->會(huì)話(huà)層-->表示層-->應(yīng)用層

每個(gè)上一層都要基于底下一層而來(lái),我們的IP協(xié)議是位于網(wǎng)絡(luò)層似踱,TCP協(xié)議是位于傳輸層隅熙。TCP協(xié)議是基于IP協(xié)議的稽煤,但是由于TCP協(xié)議和IP協(xié)議是互補(bǔ)的,就組成了我們常說(shuō)的TCP/IP協(xié)議

應(yīng)用層 - 為應(yīng)用提供訪問(wèn)網(wǎng)絡(luò)服務(wù)接口

表示層 - 提供數(shù)據(jù)/信息表示變換囚戚,讓不同編碼計(jì)算機(jī)可相互理解

會(huì)話(huà)層 - 組織同步不同計(jì)算機(jī)的進(jìn)程通信(對(duì)話(huà))酵熙,對(duì)話(huà)的建立與拆除;還提供在數(shù)據(jù)流中插入同步點(diǎn)機(jī)制驰坊,數(shù)據(jù)傳輸中斷后匾二,也不必從頭開(kāi)始,僅重傳最近一個(gè)同步點(diǎn)以后的數(shù)據(jù)

傳輸層 - 源主機(jī)與目的主機(jī)的連接與數(shù)據(jù)傳輸(端到端的數(shù)據(jù)傳輸)

網(wǎng)絡(luò)層 - 尋找合適的路由拳芙,使網(wǎng)絡(luò)層數(shù)據(jù)傳輸單元(分組)可以正確找到目的站

數(shù)據(jù)鏈路層 - 兩個(gè)相鄰結(jié)點(diǎn)間無(wú)差錯(cuò)地以幀為單位的數(shù)據(jù)傳送

物理層 - 物理介質(zhì)傳輸察藐,比特流傳輸

CP/IP三次握手

(1)客戶(hù)端向服務(wù)器端發(fā)送連接請(qǐng)求包SYN(syn=j),等待服務(wù)器回應(yīng)舟扎;

(2)服務(wù)器端收到客戶(hù)端連接請(qǐng)求包SYN(syn=j)后分飞,將客戶(hù)端的請(qǐng)求包SYN(syn=j)放入到自己的未連接隊(duì)列,此時(shí)服務(wù)器需要發(fā)送兩個(gè)包給客戶(hù)端睹限;

? ? ?1.向客戶(hù)端發(fā)送確認(rèn)自己收到其連接請(qǐng)求的確認(rèn)包ACK(ack=j+1)譬猫,向客戶(hù)端表明已知道了其連接請(qǐng)求

  ?2.向客戶(hù)端發(fā)送連接詢(xún)問(wèn)請(qǐng)求包SYN(syn=k)讯檐,詢(xún)問(wèn)客戶(hù)端是否已經(jīng)準(zhǔn)備好建立連接,進(jìn)行數(shù)據(jù)通信染服;

(3) ?客戶(hù)端收到服務(wù)器的ACK(ack=j+1)和SYN(syn=k)包后别洪,知道了服務(wù)器同意建立連接,此時(shí)需要發(fā)送連接已建立的消息給服務(wù)器柳刮;

  向服務(wù)器發(fā)送連接建立的確認(rèn)包ACK(ack=k+1)挖垛,回應(yīng)服務(wù)器的SYN(syn=k)告訴服務(wù)器,我們之間已經(jīng)建立了連接,可以進(jìn)行數(shù)據(jù)通信媚赖。

三次握手”的目的是“為了防止已失效的連接請(qǐng)求報(bào)文段突然又傳送到了服務(wù)端乡翅,因而產(chǎn)生錯(cuò)誤

三次握手可以消除舊有連接請(qǐng)求的SYN消息對(duì)新連接的干擾,同步連接雙方的序列號(hào)和確認(rèn)號(hào)并交換TCP 窗口大小信息闸准。

設(shè)想:如果只有兩次握手,那么第二次握手后服務(wù)器只向客戶(hù)端發(fā)送ACK包梢灭,此時(shí)客戶(hù)端與服務(wù)器端建立連接夷家。在這種握手規(guī)則下:?

? ? ? ?假設(shè):如果發(fā)送網(wǎng)絡(luò)阻塞,由于TCP/IP協(xié)議定時(shí)重傳機(jī)制敏释,B向A發(fā)送了兩次SYN請(qǐng)求库快,分別是x1和x2,且因?yàn)樽枞蛟客纾瑢?dǎo)致x1連接請(qǐng)求和x2連接請(qǐng)求的TCP窗口大小和數(shù)據(jù)報(bào)文長(zhǎng)度不一致义屏,如果最終x1達(dá)到A,x2丟失蜂大,此時(shí)A同B建立了x1的連接闽铐,這個(gè)時(shí)候,因?yàn)锳B已經(jīng)連接奶浦,B無(wú)法知道是請(qǐng)求x1還是請(qǐng)求x2同B連接兄墅,如果B默認(rèn)是最近的請(qǐng)求x2同A建立了連接,此時(shí)B開(kāi)始向A發(fā)送數(shù)據(jù)澳叉,數(shù)據(jù)報(bào)文長(zhǎng)度為x2定義的長(zhǎng)度隙咸,窗口大小為x2定義的大小,而A建立的連接是x1成洗,其數(shù)據(jù)包長(zhǎng)度大小為x1五督,TCP窗口大小為x1定義,這就會(huì)導(dǎo)致A處理數(shù)據(jù)時(shí)出錯(cuò)瓶殃。很顯然充包,如果A接收到B的請(qǐng)求后,A向B發(fā)送SYN請(qǐng)求y3(y3的窗口大小和數(shù)據(jù)報(bào)長(zhǎng)度等信息為x1所定義)碌燕,確認(rèn)了連接建立的窗口大小和數(shù)據(jù)報(bào)長(zhǎng)度為x1所定義误证,A再次確認(rèn)回答建立x1連接继薛,然后開(kāi)始相互傳送數(shù)據(jù),那么就不會(huì)導(dǎo)致數(shù)據(jù)處理出錯(cuò)了愈捅。

TCP/IP釋放連接需四次揮手

假設(shè)客戶(hù)機(jī)A向服務(wù)器B請(qǐng)求釋放TCP/IP連接遏考,則:

第一次揮手:主機(jī)A向主機(jī)B發(fā)送FIN包;A告訴B蓝谨,我(A)發(fā)送給你(B)的數(shù)據(jù)大小是N灌具,我發(fā)送完畢,請(qǐng)求斷開(kāi)A->B的連接譬巫。

第二次揮手:主機(jī)B收到了A發(fā)送的FIN包咖楣,并向主機(jī)A發(fā)送ACK包;B回答A芦昔,是的诱贿,我總共收到了你發(fā)給我N大小的數(shù)據(jù),A->B的連接關(guān)閉咕缎。

第三次揮手:主機(jī)B向主機(jī)A發(fā)送FIN包珠十;B告訴A,我(B)發(fā)送給你(A)的數(shù)據(jù)大小是M凭豪,我發(fā)送完畢焙蹭,請(qǐng)求斷開(kāi)B->A的連接。

第四次揮手:主機(jī)A收到了B發(fā)送的FIN包嫂伞,并向主機(jī)B發(fā)送ACK包孔厉;A回答B(yǎng),是的帖努,我收到了你發(fā)送給我的M大小的數(shù)據(jù)撰豺,B->A的連接關(guān)閉。

需四次揮手原因:由于TCP的半關(guān)閉特性然磷,TCP連接時(shí)雙全工(即數(shù)據(jù)在兩個(gè)方向上能同時(shí)傳遞)郑趁,因此刊驴,每個(gè)方向必須單獨(dú)的進(jìn)行關(guān)閉姿搜。這個(gè)原則就是:當(dāng)一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個(gè)FIN來(lái)終止這個(gè)方向上的連接。當(dāng)一端收到一個(gè)FIN后捆憎,它必須通知應(yīng)用層另一端已經(jīng)終止了那個(gè)方向的數(shù)據(jù)傳送舅柜。即收到一個(gè)FIN意味著在這一方向上沒(méi)有數(shù)據(jù)流動(dòng)了

感謝 Android中的TCP/IP協(xié)議,Socket躲惰,Http協(xié)議間的關(guān)系 - 牛仔面包 - CSDN博客

TCP/IP三次握手致份、四次揮手總結(jié) - Android_Ape - CSDN博客

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市础拨,隨后出現(xiàn)的幾起案子氮块,更是在濱河造成了極大的恐慌绍载,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滔蝉,死亡現(xiàn)場(chǎng)離奇詭異击儡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蝠引,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)阳谍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人螃概,你說(shuō)我怎么就攤上這事矫夯。” “怎么了吊洼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵训貌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我冒窍,道長(zhǎng)旺订,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任超燃,我火速辦了婚禮区拳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘意乓。我一直安慰自己樱调,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布届良。 她就那樣靜靜地躺著笆凌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪士葫。 梳的紋絲不亂的頭發(fā)上乞而,一...
    開(kāi)封第一講書(shū)人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音慢显,去河邊找鬼爪模。 笑死,一個(gè)胖子當(dāng)著我的面吹牛荚藻,可吹牛的內(nèi)容都是我干的屋灌。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼应狱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼共郭!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤除嘹,失蹤者是張志新(化名)和其女友劉穎写半,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體尉咕,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡污朽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了龙考。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蟆肆。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晦款,靈堂內(nèi)的尸體忽然破棺而出炎功,到底是詐尸還是另有隱情,我是刑警寧澤缓溅,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布蛇损,位于F島的核電站,受9級(jí)特大地震影響坛怪,放射性物質(zhì)發(fā)生泄漏淤齐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一袜匿、第九天 我趴在偏房一處隱蔽的房頂上張望更啄。 院中可真熱鬧,春花似錦居灯、人聲如沸祭务。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)义锥。三九已至,卻和暖如春岩灭,著一層夾襖步出監(jiān)牢的瞬間拌倍,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工噪径, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柱恤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓熄云,卻偏偏與公主長(zhǎng)得像膨更,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缴允,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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

  • 當(dāng) app 和服務(wù)器進(jìn)行通信的時(shí)候练般,大多數(shù)情況下矗漾,都是采用 HTTP 協(xié)議。HTTP 最初是為 web 瀏覽器而定...
    Flysss1219閱讀 1,259評(píng)論 0 4
  • 1.這篇文章不是本人原創(chuàng)的薄料,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的敞贡,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,053評(píng)論 6 174
  • 個(gè)人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記摄职,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評(píng)論 0 8
  • 本文主要通過(guò)整理網(wǎng)絡(luò)上的資料誊役,整理出的關(guān)于TCP方面的簡(jiǎn)單理論知識(shí)。作為Java程序員雖然更多的時(shí)候我們都是直接調(diào)...
    tomas家的小撥浪鼓閱讀 5,535評(píng)論 1 100
  • 傳輸層提供的服務(wù) 傳輸層的功能 從通信和信息處理的角度看 ,傳輸層向它上面的應(yīng)用層提供通信服務(wù)迫悠,它屬于面向通信部分...
    CodeKing2017閱讀 3,614評(píng)論 1 9