TCP/IP協(xié)議理解

理解TCP/IP協(xié)議

一货裹、協(xié)議

在計(jì)算機(jī)網(wǎng)絡(luò)與信息通訊領(lǐng)域里,人們經(jīng)常提及 “協(xié)議” 一詞精偿』≡玻互聯(lián)網(wǎng)中常用的協(xié)議有HTTP、TCP笔咽、IP等搔预。

協(xié)議的必要性

簡(jiǎn)單來(lái)說(shuō),協(xié)議就是計(jì)算機(jī)與計(jì)算機(jī)之間通過(guò)網(wǎng)絡(luò)通信時(shí)叶组,事先達(dá)成的一種 “約定”拯田。這種“約定”使不同廠商的設(shè)備、不同的CPU以及不同操作系統(tǒng)組成的計(jì)算機(jī)之間扶叉,只要遵循相同的協(xié)議就能夠?qū)崿F(xiàn)通信勿锅。這就好比一個(gè)中國(guó)人說(shuō)漢語(yǔ)一個(gè)外國(guó)人說(shuō)英語(yǔ)使用不同的國(guó)家語(yǔ)言進(jìn)行溝通,怎么也無(wú)法理解枣氧。如果兩個(gè)人約定好 都說(shuō)中文或英文溢十,就可以互相溝通通信。協(xié)議分為很多種达吞,每一種協(xié)議都明確界定了它的行為規(guī)范张弛。兩臺(tái)計(jì)算機(jī)必須能夠支持相同的協(xié)議,并遵循相同協(xié)議進(jìn)行處理酪劫,這樣才能實(shí)現(xiàn)相互通信吞鸭。

二、協(xié)議分層

TCP/IP協(xié)議

TCP/IP 是用于因特網(wǎng) (Internet) 的通信協(xié)議覆糟。 TCP/IP 通信協(xié)議是對(duì)計(jì)算機(jī)必須遵守的規(guī)則的描述刻剥,只有遵守這些規(guī)則,計(jì)算機(jī)之間才能進(jìn)行通信滩字。

TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協(xié)議屬于傳輸層協(xié)議造虏。其中TCP提供IP環(huán)境下的數(shù)據(jù)可靠傳輸,它提供的服務(wù)包括數(shù)據(jù)流傳送麦箍、可靠性漓藕、有效流控、全雙工操作和多路復(fù) 用挟裂。通過(guò)面向連接享钞、端到端和可靠的數(shù)據(jù)包發(fā)送。通俗說(shuō)诀蓉,它是事先為所發(fā)送的數(shù)據(jù)開(kāi)辟出連接好的通道栗竖,然后再進(jìn)行數(shù)據(jù)發(fā)送;而UDP則不為IP提供可靠性渠啤、 流控或差錯(cuò)恢復(fù)功能划滋。一般來(lái)說(shuō),TCP對(duì)應(yīng)的是可靠性要求高的應(yīng)用埃篓,而UDP對(duì)應(yīng)的則是可靠性要求低处坪、傳輸經(jīng)濟(jì)的應(yīng)用。 TCP支持的應(yīng)用協(xié)議主要有:Telnet架专、FTP同窘、SMTP等; UDP支持的應(yīng)用層協(xié)議主要有:NFS(網(wǎng)絡(luò)文件系統(tǒng))部脚、SNMP(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)想邦、DNS(主域名稱(chēng)系統(tǒng))、TFTP(通用文件傳輸協(xié)議)等委刘。 TCP/IP協(xié)議與低層的數(shù)據(jù)鏈路層和物理層無(wú)關(guān)丧没,這也是TCP/IP的重要特點(diǎn)

  • TCP(Transimision Control Protocal)
  • 傳輸控制協(xié)議
  • 可靠的鹰椒、面向連接的協(xié)議
  • 傳輸效率低
  • UDP(User Datagram Protocal)
  • 用戶數(shù)據(jù)報(bào)協(xié)議
  • 不可靠的、無(wú)連接的服務(wù)
  • 傳輸效率高

TCP/IP協(xié)議族

TCP/IP是基于TCP和IP這兩個(gè)最初的協(xié)議之上的不同的通信協(xié)議的大集合

image

協(xié)議的分層

網(wǎng)絡(luò)協(xié)議通常分不同層次進(jìn)行開(kāi)發(fā)呕童,每一層分別負(fù)責(zé)不同的通信功能漆际。一個(gè)協(xié)議族,比如TCP/IP夺饲,是一組不同層次上的多個(gè)協(xié)議的組合奸汇。 傳統(tǒng)上來(lái)說(shuō) TCP/IP 被認(rèn)為是一個(gè)四層協(xié)議, 而ISO(國(guó)際標(biāo)準(zhǔn)化組織),制定了一個(gè)國(guó)際標(biāo)準(zhǔn)OSI七層協(xié)議模型往声,OSI協(xié)議以O(shè)SI參考模型為基礎(chǔ)界定了每個(gè)階層的協(xié)議和每個(gè)階層之間接口相關(guān)的標(biāo)準(zhǔn)擂找。

image

分層的作用

image

應(yīng)用層

應(yīng)用層為操作系統(tǒng)或網(wǎng)絡(luò)應(yīng)用程序提供訪問(wèn)網(wǎng)絡(luò)服務(wù)的接口。應(yīng)用層協(xié)議的代表包括:Telnet浩销、FTP贯涎、HTTP、SNMP等慢洋。

表示層

將應(yīng)用處理的信息轉(zhuǎn)換為適合網(wǎng)絡(luò)傳輸?shù)母袷郊聿桑驅(qū)?lái)自下一層的數(shù)據(jù)轉(zhuǎn)換為上層能夠處理的格式。數(shù)據(jù)的表示且警、安全粉捻、壓縮。

會(huì)話層

負(fù)責(zé)建立和斷開(kāi)通信連接(數(shù)據(jù)流動(dòng)的邏輯通路)斑芜,以及數(shù)據(jù)的分割等數(shù)據(jù)傳輸相關(guān)的管理肩刃。

傳輸層

管理兩個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)傳輸。負(fù)責(zé)可靠傳輸(確保數(shù)據(jù)被可靠地傳送到目標(biāo)地址)杏头。

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

地址管理與路由選擇, 在這一層盈包,數(shù)據(jù)的單位稱(chēng)為數(shù)據(jù)包(packet)(路由器)。

數(shù)據(jù)鏈路層

互連設(shè)備之間傳送和識(shí)別數(shù)據(jù)幀(交換機(jī))醇王。

物理層

以"0"呢燥、 "1"代表電壓的高低,燈光的閃滅寓娩,在這一層叛氨,數(shù)據(jù)的單位稱(chēng)為比特(bit),(中繼器、集線器棘伴、還有我們通常說(shuō)的雙絞線也工作在物理層)寞埠。

七層通信

image

發(fā)送方由第七層到第一層 由上到下按照順序傳送數(shù)據(jù),每個(gè)分層在處理上層傳遞的數(shù)據(jù)時(shí)焊夸,附上當(dāng)前層協(xié)議所必須的 "首部"信息仁连。接收方由第一層到第七層 由下到上按照順序傳遞數(shù)據(jù),每個(gè)分層對(duì)接收到的數(shù)據(jù)進(jìn)行 "首部"與"內(nèi)容"分離阱穗,在轉(zhuǎn)發(fā)給上一層饭冬。最終將發(fā)送的數(shù)據(jù)恢復(fù)為原始數(shù)據(jù)使鹅。

三、傳輸方式的分類(lèi)

網(wǎng)絡(luò)通信科根據(jù)數(shù)據(jù)發(fā)送方法進(jìn)行多種分類(lèi)昌抠,分類(lèi)方法很多患朱,下面列舉幾種常見(jiàn)的:

  1. 面向有連接型和面向無(wú)連接型 1.1 面向有連接型
image

發(fā)送數(shù)據(jù)之前,需要在收發(fā)主機(jī)之間建立一條通信線路扰魂,在通信傳輸前后麦乞,專(zhuān)門(mén)進(jìn)行建立和斷開(kāi)連接的處理蕴茴,如果與對(duì)端之間無(wú)法通信劝评,可避免發(fā)送無(wú)謂的數(shù)據(jù)

1.2面向無(wú)連接型

image

四、報(bào)文倦淀、幀蒋畜、數(shù)據(jù)包等的區(qū)別

報(bào)文(message)是網(wǎng)絡(luò)中交換與傳輸?shù)臄?shù)據(jù)單元,也是網(wǎng)絡(luò)傳輸?shù)膯卧策础?bào)文包含了將要發(fā)送的完整的數(shù)據(jù)信息姻成,其長(zhǎng)短不需一致。報(bào)文在傳輸過(guò)程中會(huì)不斷地封裝成分組愿棋、包科展、幀來(lái)傳輸,封裝的方式就是添加一些控制信息組成的首部糠雨,那些就是報(bào)文頭才睹。

應(yīng)用層:報(bào)文(message),一般指完整的信息甘邀,傳輸層實(shí)現(xiàn)報(bào)文交付琅攘,位于應(yīng)用層的信息分組稱(chēng)為報(bào)文; 傳輸層:報(bào)文段(segment)松邪,組成報(bào)文的每個(gè)分組坞琴; 網(wǎng)絡(luò)層:分組(packet)是網(wǎng)絡(luò)傳輸中的二進(jìn)制格式單元,數(shù)據(jù)包(datapacket)是TCP/IP通信協(xié)議傳輸中的數(shù)據(jù)單位逗抑;通過(guò)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)基本單元剧辐,包含一個(gè)報(bào)頭和數(shù)據(jù)本身,其中報(bào)頭描述了數(shù)據(jù)的目的地及其與其他數(shù)據(jù)之間的關(guān)系邮府,可以理解為數(shù)據(jù)傳輸?shù)姆纸M浙于,我們將通過(guò)網(wǎng)絡(luò)傳輸?shù)幕緮?shù)據(jù)單元稱(chēng)為數(shù)據(jù)報(bào)(Datagram); 鏈路層:幀(frame)挟纱,數(shù)據(jù)鏈路層的協(xié)議數(shù)據(jù)單元羞酗,為了保證數(shù)據(jù)的可靠傳輸,把用戶數(shù)據(jù)封裝成幀紊服; 物理層:PDU(bit)檀轨,協(xié)議數(shù)據(jù)單元胸竞; 抓包,抓到的是傳輸層的包参萄,packet/frame/Datagram/segment是存在于同條記錄中的卫枝,這些是基于所在協(xié)議層的不同取了不同的名字。

五讹挎、TCP報(bào)文

數(shù)據(jù)包

image

IP 數(shù)據(jù)包在以太網(wǎng)數(shù)據(jù)包的負(fù)載里面校赤,TCP數(shù)據(jù)包在IP數(shù)據(jù)包的負(fù)載里。

image

TCP 首部各字段的意義和作用

TCP首部最小為20字節(jié)筒溃,這20字節(jié)分為5行马篮,每行4個(gè)字節(jié)也就是32個(gè)位。

源端口和目的端口 Port

  • 源端口號(hào):16位的源端口中包含初始化通信的端口怜奖。源端口和源IP地址的作用是標(biāo)識(shí)報(bào)文的返回地址浑测。
  • 目的端口號(hào):16位的目的端口域定義傳輸?shù)哪康摹_@個(gè)端口指明報(bào)文接收計(jì)算機(jī)上的應(yīng)用程序地址接口歪玲。計(jì)算機(jī)通過(guò)端口號(hào)識(shí)別訪問(wèn)哪個(gè)服務(wù),比如http服務(wù)或ftp服務(wù)迁央,發(fā)送方端口號(hào)是進(jìn)行隨機(jī)端口待笑,目標(biāo)端口號(hào)決定了接收方哪個(gè)程序來(lái)接收 分別占用16位攒霹,也就是端口號(hào)最大是2^16,所以端口號(hào)的范圍是0~65536

端口號(hào)的分配:

  • 知名端口號(hào)一般位于:1 --- 255 之間
  • 256 --- 1023的端口號(hào)搞糕,通常是由Unix系統(tǒng)占用(系統(tǒng)占用)
  • 1024 ---5000 是大多數(shù)TCP钙皮、IP實(shí)現(xiàn)的臨時(shí)分配
  • 大于5000的一般是給其他服務(wù)預(yù)留的(Internet上并不常用的服務(wù))

序號(hào) Sequence Number

TCP用序列號(hào)對(duì)數(shù)據(jù)包進(jìn)行標(biāo)記蜂科,以便在到達(dá)目的地后重新重裝,假設(shè)當(dāng)前的序列號(hào)為 s株灸,發(fā)送數(shù)據(jù)長(zhǎng)度為 l崇摄,則下次發(fā)送數(shù)據(jù)時(shí)的序列號(hào)為 s + l。在建立連接時(shí)通常由計(jì)算機(jī)生成一個(gè)隨機(jī)數(shù)作為序列號(hào)的初始值慌烧。

確認(rèn)號(hào) Acknowledgemt Number

占 4 個(gè)字節(jié)逐抑,表示期望收到對(duì)方下一個(gè)報(bào)文段的序號(hào)值。 TCP 的可靠性屹蚊,是建立在「每一個(gè)數(shù)據(jù)報(bào)文都需要確認(rèn)收到」的基礎(chǔ)之上的厕氨。

就是說(shuō),通訊的任何一方在收到對(duì)方的一個(gè)報(bào)文之后汹粤,都要發(fā)送一個(gè)相對(duì)應(yīng)的「確認(rèn)報(bào)文」命斧,來(lái)表達(dá)確認(rèn)收到。 那么嘱兼,確認(rèn)報(bào)文国葬,就會(huì)包含確認(rèn)號(hào)。 例如,通訊的一方收到了第一個(gè) 25kb 的報(bào)文汇四,該報(bào)文的 序號(hào)值=0接奈,那么就需要回復(fù)一個(gè)確認(rèn)報(bào)文,其中的確認(rèn)號(hào) = 25600.

數(shù)據(jù)偏移 Offset

占 0.5 個(gè)字節(jié) (4 位)通孽。 這個(gè)字段實(shí)際上是指出了 TCP 報(bào)文段的首部長(zhǎng)度 序宦,它指出了 TCP報(bào)文段的數(shù)據(jù)起始處 距離 TCP報(bào)文的起始處 有多遠(yuǎn)。(注意 數(shù)據(jù)起始處 和 報(bào)文起始處 的意思)

一個(gè)數(shù)據(jù)偏移量 = 4 byte背苦,由于 4 位二進(jìn)制數(shù)能表示的最大十進(jìn)制數(shù)字是 15互捌,因此數(shù)據(jù)偏移的最大值是 60 byte,這也側(cè)面限制了 TCP 首部的最大長(zhǎng)度行剂。

保留 Reserved

占 0.75 個(gè)字節(jié) (6 位)秕噪。 保留為今后使用,但目前應(yīng)置為 0硼讽。

標(biāo)志位 TCP Flags

標(biāo)志位巢价,一共有 6 個(gè)牲阁,分別占 1 位固阁,共 6 位 。 每一位的值只有 0 和 1城菊,分別表達(dá)不同意思备燃。

  • ACK:確認(rèn)序號(hào)有效
  • RST:重置連接
  • SYN:發(fā)起了一個(gè)新連接
  • FIN:釋放一個(gè)連接

確認(rèn) ACK (Acknowlegemt)

當(dāng) ACK = 1 的時(shí)候,確認(rèn)號(hào)(Acknowledgemt Number)有效凌唬。 一般稱(chēng)攜帶 ACK 標(biāo)志的 TCP 報(bào)文段為「確認(rèn)報(bào)文段」并齐。為0表示數(shù)據(jù)段不包含確認(rèn)信息,確認(rèn)號(hào)被忽略客税。

TCP 規(guī)定况褪,在連接建立后所有傳送的報(bào)文段都必須把 ACK 設(shè)置為 1。

推送 PSH (Push)

當(dāng) PSH = 1 的時(shí)候更耻,表示該報(bào)文段高優(yōu)先級(jí)测垛,接收方 TCP 應(yīng)該盡快推送給接收應(yīng)用程序,而不用等到整個(gè) TCP 緩存都填滿了后再交付秧均。

復(fù)位 RST (Reset)

當(dāng) RST = 1 的時(shí)候食侮,表示 TCP 連接中出現(xiàn)嚴(yán)重錯(cuò)誤,需要釋放并重新建立連接目胡。 一般稱(chēng)攜帶 RST 標(biāo)志的 TCP 報(bào)文段為「復(fù)位報(bào)文段」锯七。

同步 SYN (SYNchronization)

當(dāng) SYN = 1 的時(shí)候,表明這是一個(gè)請(qǐng)求連接報(bào)文段誉己。 一般稱(chēng)攜帶 SYN 標(biāo)志的 TCP 報(bào)文段為「同步報(bào)文段」眉尸。 在 TCP 三次握手中的第一個(gè)報(bào)文就是同步報(bào)文段,在連接建立時(shí)用來(lái)同步序號(hào)。

對(duì)方若同意建立連接噪猾,則應(yīng)在響應(yīng)的報(bào)文段中使 SYN = 1 和 ACK = 1地消。

終止 FIN (Finis)

當(dāng) FIN = 1 時(shí),表示此報(bào)文段的發(fā)送方的數(shù)據(jù)已經(jīng)發(fā)送完畢畏妖,并要求釋放 TCP 連接脉执。

一般稱(chēng)攜帶 FIN 的報(bào)文段為「結(jié)束報(bào)文段」。

在 TCP 四次揮手釋放連接的時(shí)候戒劫,就會(huì)用到該標(biāo)志半夷。

窗口大小 Window Size

占 2 字節(jié)。

該字段明確指出了現(xiàn)在允許對(duì)方發(fā)送的數(shù)據(jù)量迅细,它告訴對(duì)方本端的 TCP 接收緩沖區(qū)還能容納多少字節(jié)的數(shù)據(jù)巫橄,這樣對(duì)方就可以控制發(fā)送數(shù)據(jù)的速度。 窗口大小的值是指茵典,從本報(bào)文段首部中的確認(rèn)號(hào)算起湘换,接收方目前允許對(duì)方發(fā)送的數(shù)據(jù)量。

例如统阿,假如確認(rèn)號(hào)是 701 彩倚,窗口字段是 1000。這就表明扶平,從 701 號(hào)算起帆离,發(fā)送此報(bào)文段的一方還有接收 1000 (字節(jié)序號(hào)是 701 ~ 1700) 個(gè)字節(jié)的數(shù)據(jù)的接收緩存空間。

校驗(yàn)和 TCP Checksum

占 2 個(gè)字節(jié)结澄。 由發(fā)送端填充哥谷,接收端對(duì) TCP 報(bào)文段執(zhí)行 CRC 算法,以檢驗(yàn) TCP 報(bào)文段在傳輸過(guò)程中是否損壞麻献,如果損壞這丟棄们妥。

檢驗(yàn)范圍包括首部和數(shù)據(jù)兩部分,這也是 TCP 可靠傳輸?shù)囊粋€(gè)重要保障勉吻。

緊急指針 Urgent Pointer

占 2 個(gè)字節(jié)监婶。 僅在 URG = 1 時(shí)才有意義,它指出本報(bào)文段中的緊急數(shù)據(jù)的字節(jié)數(shù)餐曼。 當(dāng) URG = 1 時(shí)压储,發(fā)送方 TCP 就把緊急數(shù)據(jù)插入到本報(bào)文段數(shù)據(jù)的最前面,而在緊急數(shù)據(jù)后面的數(shù)據(jù)仍是普通數(shù)據(jù)源譬。

因此集惋,緊急指針指出了緊急數(shù)據(jù)的末尾在報(bào)文段中的位置。

六踩娘、三次握手刮刑,四次揮手

需要了解的信息:

  • ACK : TCP協(xié)議規(guī)定喉祭,只有ACK=1時(shí)有效,也規(guī)定連接建立后所有發(fā)送的報(bào)文的ACK必須為1
  • SYN(SYNchronization) : 在連接建立時(shí)用來(lái)同步序號(hào)雷绢。當(dāng)SYN=1而ACK=0時(shí)泛烙,表明這是一個(gè)連接請(qǐng)求報(bào)文。對(duì)方若同意建立連接翘紊,則應(yīng)在響應(yīng)報(bào)文中使SYN=1和ACK=1. 因此, SYN置1就表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文蔽氨。
  • FIN (finis)即完,終結(jié)的意思帆疟, 用來(lái)釋放一個(gè)連接鹉究。當(dāng) FIN = 1 時(shí),表明此報(bào)文段的發(fā)送方的數(shù)據(jù)已經(jīng)發(fā)送完畢踪宠,并要求釋放連接自赔。

三次握手 建立連接

TCP(Transmission Control Protocol,傳輸控制協(xié)議)是 面向連接的協(xié)議柳琢,也就是說(shuō)在收發(fā)數(shù)據(jù)之前绍妨,必須先和對(duì)方建立連接

一個(gè)TCP連接必須要經(jīng)過(guò)三次“對(duì)話”才能建立起來(lái),其中的過(guò)程非常復(fù)雜柬脸,只簡(jiǎn)單的 描述下這三次對(duì)話的簡(jiǎn)單過(guò)程:主機(jī)A向主機(jī)B發(fā)出連接請(qǐng)求數(shù)據(jù)包:“我想給你發(fā)數(shù)據(jù)他去,可以嗎?”肖粮,這是第一次對(duì)話孤页;主機(jī)B向主機(jī)A發(fā)送同意連接和要求同步 (同步就是兩臺(tái)主機(jī)一個(gè)在發(fā)送尔苦,一個(gè)在接收涩馆,協(xié)調(diào)工作)的數(shù)據(jù)包:“可以,你什么時(shí)候發(fā)允坚?”魂那,這是第二次對(duì)話;主機(jī)A再發(fā)出一個(gè)數(shù)據(jù)包確認(rèn)主機(jī)B的要求同 步:“我現(xiàn)在就發(fā)稠项,你接著吧涯雅!”,這是第三次對(duì)話展运。三次“對(duì)話”的目的是使數(shù)據(jù)包的發(fā)送和接收同步活逆,經(jīng)過(guò)三次“對(duì)話”之后,主機(jī)A才向主機(jī)B正式發(fā)送數(shù) 據(jù)拗胜。

image

首先由Client發(fā)出請(qǐng)求連接即 SYN=1 ACK=0 (請(qǐng)看頭字段的介紹), TCP規(guī)定SYN=1時(shí)不能攜帶數(shù)據(jù)蔗候,但要消耗一個(gè)序號(hào),因此聲明自己的32位序號(hào)是 seq=x,然后 Server 進(jìn)行回復(fù)確認(rèn)埂软,即 SYN=1 ACK=1 seq=y, ack=x+1, 再然后 Client 再進(jìn)行一次確認(rèn)锈遥,但不用SYN 了,這時(shí)即為 ACK=1, seq=x+1, ack=y+1.

四次揮手 釋放連接

image

當(dāng)客戶A 沒(méi)有東西要發(fā)送時(shí)就要釋放 A 這邊的連接,A會(huì)發(fā)送一個(gè)報(bào)文(沒(méi)有數(shù)據(jù))所灸,其中 FIN 設(shè)置為1, 服務(wù)器B收到后會(huì)給應(yīng)用程序一個(gè)信丽惶,這時(shí)A那邊的連接已經(jīng)關(guān)閉,即A不再發(fā)送信息(但仍可接收信息)爬立。 A收到B的確認(rèn)后進(jìn)入等待狀態(tài)钾唬,等待B請(qǐng)求釋放連接, B數(shù)據(jù)發(fā)送完成后就向A請(qǐng)求連接釋放侠驯,也是用FIN=1 表示知纷, 并且用 ack = u+1(如圖), A收到后回復(fù)一個(gè)確認(rèn)信息陵霉,并進(jìn)入 TIME_WAIT 狀態(tài)琅轧, 等待 2MSL 時(shí)間。

關(guān)于 TIME_WAIT 過(guò)渡到 CLOSED 狀態(tài)說(shuō)明: 從 TIME_WAIT 進(jìn)入 CLOSED 需要經(jīng)過(guò) 2MSL踊挠,其中 MSL 就叫做 最長(zhǎng)報(bào)文段壽命(Maxinum Segment Lifetime)乍桂,根據(jù) RFC 793 建議該值這是為 2 分鐘,也就是說(shuō)需要經(jīng)過(guò) 4 分鐘效床,才進(jìn)入 CLOSED 狀態(tài)睹酌。

為什么要等待呢?

為了這種情況: B向A發(fā)送 FIN = 1 的釋放連接請(qǐng)求剩檀,但這個(gè)報(bào)文丟失了憋沿, A沒(méi)有接到不會(huì)發(fā)送確認(rèn)信息, B 超時(shí)會(huì)重傳沪猴,這時(shí)A在 WAIT_TIME 還能夠接收到這個(gè)請(qǐng)求辐啄,這時(shí)再回復(fù)一個(gè)確認(rèn)就行了。(A收到 FIN = 1 的請(qǐng)求后 WAIT_TIME會(huì)重新記時(shí))

另外服務(wù)器B存在一個(gè)痹耸龋活狀態(tài)壶辜,即如果A突然故障死機(jī)了,那B那邊的連接資源什么時(shí)候能釋放呢担租? 就是痹颐瘢活時(shí)間到了后,B會(huì)發(fā)送探測(cè)信息奋救, 以決定是否釋放連接

為什么連接的時(shí)候是三次握手岭参,關(guān)閉的時(shí)候卻是四次握手?

答:因?yàn)楫?dāng)Server端收到Client端的SYN連接請(qǐng)求報(bào)文后尝艘,可以直接發(fā)送SYN+ACK報(bào)文演侯。其中ACK報(bào)文是用來(lái)應(yīng)答的,SYN報(bào)文是用來(lái)同步的利耍。但是關(guān)閉連接時(shí)蚌本,當(dāng)Server端收到FIN報(bào)文時(shí)盔粹,很可能并不會(huì)立即關(guān)閉SOCKET,所以只能先回復(fù)一個(gè)ACK報(bào)文程癌,告訴Client端舷嗡,"你發(fā)的FIN報(bào)文我收到了"。只有等到我Server端所有的報(bào)文都發(fā)送完了嵌莉,我才能發(fā)送FIN報(bào)文进萄,因此不能一起發(fā)送。故需要四步握手锐峭。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末中鼠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子沿癞,更是在濱河造成了極大的恐慌援雇,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椎扬,死亡現(xiàn)場(chǎng)離奇詭異惫搏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蚕涤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)筐赔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人揖铜,你說(shuō)我怎么就攤上這事茴丰。” “怎么了天吓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵贿肩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我失仁,道長(zhǎng)尸曼,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任萄焦,我火速辦了婚禮,結(jié)果婚禮上冤竹,老公的妹妹穿的比我還像新娘拂封。我一直安慰自己,他們只是感情好鹦蠕,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布冒签。 她就那樣靜靜地躺著,像睡著了一般钟病。 火紅的嫁衣襯著肌膚如雪萧恕。 梳的紋絲不亂的頭發(fā)上刚梭,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音票唆,去河邊找鬼朴读。 笑死,一個(gè)胖子當(dāng)著我的面吹牛走趋,可吹牛的內(nèi)容都是我干的衅金。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼簿煌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼氮唯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起姨伟,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惩琉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后夺荒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體琳水,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年般堆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了在孝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡淮摔,死狀恐怖私沮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情和橙,我是刑警寧澤仔燕,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站魔招,受9級(jí)特大地震影響晰搀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜办斑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一外恕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乡翅,春花似錦鳞疲、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至靶累,卻和暖如春腺毫,著一層夾襖步出監(jiān)牢的瞬間癣疟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工潮酒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留睛挚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓澈灼,卻偏偏與公主長(zhǎng)得像竞川,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子叁熔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • 1.這篇文章不是本人原創(chuàng)的委乌,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,037評(píng)論 6 174
  • 個(gè)人認(rèn)為荣回,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記遭贸,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評(píng)論 0 8
  • 最近在惡補(bǔ)計(jì)算機(jī)網(wǎng)絡(luò)方面的知識(shí),之前對(duì)于TCP的三次握手和四次分手也是模模糊糊心软,對(duì)于其中的細(xì)節(jié)更是渾然不知壕吹,最近看...
    微醺歲月閱讀 9,511評(píng)論 4 129
  • 讀懂了TCP/IP協(xié)議,也就基本了解的網(wǎng)絡(luò)通信原理删铃。本文是參照研究生教材《網(wǎng)絡(luò)安全原理與應(yīng)用》里面的內(nèi)容加上自己實(shí)...
    Super超人閱讀 21,790評(píng)論 1 19
  • 18.1 引言 TCP是一個(gè)面向連接的協(xié)議耳贬。無(wú)論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間建立一條連接猎唁。本章將...
    張芳濤閱讀 3,344評(píng)論 0 13