TCP的三次握手

????????IP協(xié)議無(wú)連接的通信協(xié)議淘正,它不會(huì)占用兩個(gè)正在通信的計(jì)算機(jī)之間的通信線路摆马。這樣IP就降低了對(duì)網(wǎng)絡(luò)線路的需求臼闻,每條線可以同時(shí)滿足許多不同的計(jì)算機(jī)之間的通信需要。通過(guò)IP 消息或者其他數(shù)據(jù)呢會(huì)被分割為較小的獨(dú)立的包囤采。并通過(guò)因特網(wǎng)在計(jì)算機(jī)之間傳送述呐。IP負(fù)責(zé)將每個(gè)包路由至它的目的地。但是IP協(xié)議并沒(méi)有做任何事情來(lái)確認(rèn)數(shù)據(jù)包是否按順序發(fā)送或者包是否被破壞蕉毯。所以IP數(shù)據(jù)包是不可靠的乓搬,需要由它的上層協(xié)議來(lái)做出控制。

????????傳輸控制協(xié)議TCP是屬于傳輸層的協(xié)議(Transmission Control Protocol 縮寫就是TCP)是一種面向連接的代虾、可靠的进肯、基于字節(jié)流的傳輸層通信協(xié)議,數(shù)據(jù)傳輸時(shí)應(yīng)用層向TCP發(fā)送數(shù)據(jù)流棉磨。然后TCP把數(shù)據(jù)流分割成適當(dāng)長(zhǎng)度的報(bào)文段江掩,報(bào)文段的長(zhǎng)度通常受該計(jì)算機(jī)連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳輸單元(MTU)的限制,之后TCP把結(jié)果包傳給IP層乘瓤,由它通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)傳輸給目標(biāo)節(jié)點(diǎn)的TCP層环形。TCP為了保證不丟失包,就給每個(gè)包一個(gè)序列號(hào)(sequence number)衙傀,保證了包傳送到目標(biāo)節(jié)點(diǎn)的按序處理抬吟,然后接收端對(duì)已成功接收的包發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK確認(rèn))。如果接收端在合理的發(fā)送時(shí)延(也稱傳輸時(shí)延)內(nèi)未收到確認(rèn)统抬,那么對(duì)應(yīng)的數(shù)據(jù)包就會(huì)被定義為假設(shè)已丟失火本,且會(huì)對(duì)其進(jìn)行重傳?

TCP用一個(gè)奇偶校驗(yàn)“”累加和函數(shù)“”檢驗(yàn)是否有錯(cuò)誤,在發(fā)送和接收時(shí)都會(huì)校驗(yàn)和

TCP報(bào)文頭


TCP 報(bào)文頭

? ? ? 如圖所示聪建,其中Source PortDestination Port 分別表示源端口和目的端口发侵,各占兩個(gè)字節(jié)。TCP和UDP的數(shù)據(jù)包妆偏,都不包含IP地址信息的刃鳄,那是IP層上的事,但是TCP和UDP均會(huì)有源端口和目的端口钱骂,端口是屬于傳輸層知識(shí)范疇的叔锐。兩個(gè)進(jìn)程在計(jì)算機(jī)內(nèi)部進(jìn)行通信,可以由管道见秽、內(nèi)存共享愉烙、信號(hào)量、消息隊(duì)列等方法進(jìn)行通信的解取。而兩個(gè)進(jìn)程如果需要進(jìn)行通信最基本的前提是能夠唯一的標(biāo)識(shí)步责,通過(guò)唯一標(biāo)識(shí)找到對(duì)應(yīng)的進(jìn)程。在本地進(jìn)程通信中,我們可以使用PID(進(jìn)程標(biāo)識(shí)符)來(lái)唯一標(biāo)識(shí)一個(gè)進(jìn)程蔓肯,但是PID只在本地唯一遂鹊,如果把兩個(gè)進(jìn)程放到兩臺(tái)不同的計(jì)算機(jī),然后進(jìn)行通信的話蔗包,那PID就不夠用了秉扑,這樣就需要另外一個(gè)手段。解決這個(gè)問(wèn)題的方法调限,就是在傳輸層中使用協(xié)議端口號(hào)(Protocol port number)舟陆,簡(jiǎn)稱端口。

IP層的ip地址可以唯一標(biāo)識(shí)主機(jī)耻矮,而TCP協(xié)議和端口號(hào)可以唯一標(biāo)識(shí)主機(jī)中的一個(gè)進(jìn)程秦躯。所以我們可以利用IP地址+協(xié)議+端口號(hào)去標(biāo)識(shí)網(wǎng)絡(luò)中的一個(gè)進(jìn)程,俗稱套接字(socket)裆装。

????????雖然通信的重點(diǎn)是應(yīng)用進(jìn)程宦赠,我們只要把要傳送的報(bào)文交給目的主機(jī)的某一個(gè)合適的端口,剩下的工作米母,就由TCP來(lái)完成。

Sequence Number(seq序號(hào))
????????占了4個(gè)字節(jié)毡琉。TCP連接中傳送的字節(jié)流中的每一個(gè)字節(jié)都按順序編號(hào)铁瞒,例如一段報(bào)文的序號(hào)字段值是107,而攜帶的數(shù)據(jù)共有100個(gè)字段桅滋。如果有下一個(gè)報(bào)文段慧耍。其序號(hào)應(yīng)該是107+100=207開(kāi)始。接下來(lái)丐谋。

Acknowledgment Number(ACK確認(rèn)號(hào))
??????????占了4個(gè)字節(jié)芍碧。是期望收到對(duì)方下一個(gè)報(bào)文的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào),例如B收到A發(fā)送過(guò)來(lái)的報(bào)文号俐,其序列號(hào)字段值為301泌豆,而數(shù)據(jù)長(zhǎng)度是200字節(jié)。這表明了B正確的收到了A發(fā)送得到序號(hào)500(301+200-1)為止的數(shù)據(jù)吏饿。所以B希望收到A的下一個(gè)數(shù)據(jù)序號(hào)是501踪危。于是B在發(fā)送給A的確認(rèn)報(bào)文段中會(huì)把ACK確認(rèn)號(hào)置為501。

Offset(數(shù)據(jù)偏移)
????????由于頭部有可選字段猪落,長(zhǎng)度不固定贞远,所以由它指出TCP報(bào)文的數(shù)據(jù)距離TCP報(bào)文的起始處有多遠(yuǎn)。

Reserved(保留域)
? ? ? ? 保留今后使用的笨忌,目前都是被標(biāo)為0

TCP Flags(控制位)
? ? ? ? 主要有八個(gè)標(biāo)志位來(lái)組成蓝仲,每個(gè)標(biāo)志位標(biāo)識(shí)一個(gè)控制功能(CEUAPRSF)

常見(jiàn)的6個(gè):
? ? ? ? ? ? ? ? URG:緊急指針標(biāo)志(當(dāng)它為1時(shí),表示緊急指針有效,為0則忽略緊急指針)袱结;
? ? ? ? ? ? ? ? ACK:確認(rèn)序號(hào)標(biāo)志? ?(當(dāng)它為1時(shí)亮隙,表示確認(rèn)號(hào)有效,為0表示報(bào)文信息中不含確認(rèn)信息擎勘,忽略確認(rèn)號(hào)字段)咱揍;
? ? ? ? ? ? ? ? PSH:push標(biāo)志 (當(dāng)它為1時(shí),是表示帶有push的標(biāo)志棚饵,指示報(bào)文的接收端接收到報(bào)文信息后應(yīng)該盡快將報(bào)文數(shù)據(jù)交給應(yīng)用程序煤裙,而不在緩沖區(qū)排隊(duì))
? ? ? ? ? ? ? ? RST:重置連接標(biāo)志(用于重置因?yàn)橹鳈C(jī)崩潰或者其他原因錯(cuò)誤的標(biāo)志,或者用于拒絕非法的報(bào)文段的連接請(qǐng)求)
? ? ? ? ? ? ? ? SYN:同步序號(hào)噪漾,用于建立連接過(guò)程(當(dāng)它為1時(shí)和ACK為0時(shí)硼砰,表示該數(shù)據(jù)段沒(méi)有使用捎帶的確認(rèn)域,而連接應(yīng)答捎帶一個(gè)確認(rèn)域需要syn=1欣硼,ack=1)
? ? ? ? ? ? ? ? FIN:finish標(biāo)志题翰,用于釋放連接(當(dāng)它為1時(shí),表示發(fā)送方已經(jīng)沒(méi)有數(shù)據(jù)發(fā)送了诈胜,關(guān)閉本方數(shù)據(jù)流)

? ? ? ? ? ? ? ? 注:加粗部分留意使用

window(指的是滑動(dòng)窗口的大小)
? ? ? ? 用來(lái)告知發(fā)送端和接收端的緩存大小 以此控制發(fā)送端發(fā)送數(shù)據(jù)的速率豹障,從而達(dá)到流量控制

Checksum(檢驗(yàn)和)
? ? ? ? 奇偶校驗(yàn),此校驗(yàn)和時(shí)對(duì)整個(gè)TCP報(bào)文段(包括TCP頭部和TCP數(shù)據(jù))以16位進(jìn)行計(jì)算所得由發(fā)送端計(jì)算和存儲(chǔ)焦匈,并由接收端進(jìn)行驗(yàn)證。

Urgent Pointer(緊急指針)
? ? ? ? 只有在TCP flags中的URG(緊急指針標(biāo)志)為1的時(shí)候才有效缓熟,指出本次報(bào)文中緊急數(shù)據(jù)的字節(jié)數(shù)

TCP Options(可選項(xiàng))
? ? ? ? 長(zhǎng)度可變,定義其他的可選參數(shù)


????????當(dāng)應(yīng)用程序希望通過(guò)TCP與另一個(gè)應(yīng)用程序通信時(shí)垦写。會(huì)發(fā)送一個(gè)通信請(qǐng)求,這個(gè)請(qǐng)求必須被送到一個(gè)確切的地址梯投。在雙方握手之后。TCP將在兩個(gè)應(yīng)用之間建立一個(gè)全雙工(full duplex)的通信况毅。這個(gè)全雙工的通信將占用兩個(gè)計(jì)算機(jī)之間的通信線路,直到它被一方或雙方關(guān)閉為止俭茧。全雙工(計(jì)算機(jī)A給B發(fā)送數(shù)據(jù)的同時(shí),B也可以給A發(fā)送數(shù)據(jù))



三次握手流程圖

未完待續(xù)···太困了 打游戲去了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末母债,一起剝皮案震驚了整個(gè)濱河市尝抖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌迅皇,老刑警劉巖昧辽,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異登颓,居然都是意外死亡搅荞,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門框咙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)咕痛,“玉大人,你說(shuō)我怎么就攤上這事喇嘱≤怨保” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵者铜,是天一觀的道長(zhǎng)腔丧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)作烟,這世上最難降的妖魔是什么愉粤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拿撩,結(jié)果婚禮上衣厘,老公的妹妹穿的比我還像新娘。我一直安慰自己绷雏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布怖亭。 她就那樣靜靜地躺著涎显,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兴猩。 梳的紋絲不亂的頭發(fā)上期吓,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音倾芝,去河邊找鬼讨勤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛晨另,可吹牛的內(nèi)容都是我干的潭千。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼借尿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刨晴!你這毒婦竟也來(lái)了屉来?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤狈癞,失蹤者是張志新(化名)和其女友劉穎茄靠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蝶桶,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慨绳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年脐雪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疼邀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡获询,死狀恐怖拐袜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蹬铺,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布秋泄,位于F島的核電站恒序,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏歧胁。R本人自食惡果不足惜厉碟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一箍鼓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧款咖,春花似錦逢并、人聲如沸郭卫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)词疼。三九已至,卻和暖如春许饿,著一層夾襖步出監(jiān)牢的瞬間舵盈,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工瓦糟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赴蝇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓劲蜻,卻偏偏與公主長(zhǎng)得像考余,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子秃殉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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