tcp/ip網(wǎng)絡(luò)筆記

tcp三次握手和四次揮手


為什么需要三次握手

TCP是全雙工的,即客戶端在給服務(wù)器端發(fā)送信息的同時彪蓬,服務(wù)器端也可以給客戶端發(fā)送信息。而半雙工的意思是A可以給B發(fā)捺萌,B也可以給A發(fā)档冬,但是A在給B發(fā)的時候,B不能給A發(fā)桃纯,即不同時酷誓,為半雙工。 單工為只能A給B發(fā)态坦,B不能給A發(fā)盐数; 或者是只能B給A發(fā),不能A給B發(fā)伞梯。

假如只有兩次握手玫氢,B無法確定B的信息A是否能聽到。

假如四次握手谜诫,那就造成浪費(fèi)了漾峡,因?yàn)榈诙€握手報(bào)文中syn和ack可以同時設(shè)置,三次握手后就已經(jīng)可以保證A可以給B發(fā)信息喻旷,A可以收到B的信息生逸; B可以給A發(fā)信息,B可以收到A的信息且预。

為什么需要四次揮手

TCP是全雙工的槽袄,通信的雙方都可以獨(dú)立關(guān)閉自己的通信通道

TIME_WAIT狀態(tài)以及2msl

?1 可靠實(shí)現(xiàn)tcp全雙工連接的終止。如果四次握手中最后一個ack丟失(A發(fā)給B)锋谐,對方將重發(fā)最終的fin遍尺,如果A端不維持TIME_WAIT狀態(tài),A端將響應(yīng)RST怀估,B端會拋出異常

2 保證舊連接的分組在網(wǎng)絡(luò)中消逝狮鸭。網(wǎng)絡(luò)情況不好時,如果A端無TIME_WAIT狀態(tài)多搀,A端跟B端又新建一個新的tcp連接(采用相同的端口號)歧蕉,這時被動方重傳或延時過來的FIN包過來后會直接影響新的TCP連接。TIME_WAIT狀態(tài)持續(xù)2MSL康铭,足以讓某個方向的分組最多存活msl秒被丟棄惯退。

服務(wù)器大量time_wait的原因、影響从藤、解決方法

原因:在高并發(fā)短連接的TCP服務(wù)器上催跪,當(dāng)服務(wù)器處理完請求后立刻主動正常關(guān)閉連接锁蠕。這個場景下會出現(xiàn)大量socket處于TIME_WAIT狀態(tài)

影響:持續(xù)的的高并發(fā)短連接,會使服務(wù)器因端口資源不足而拒絕為一部分客戶服務(wù)

解決方法:1?可以設(shè)置SO_REUSEADDR套接字選項(xiàng)來通知內(nèi)核懊蒸,如果端口忙荣倾,但TCP連接位于TIME_WAIT狀態(tài)時可以重用端口。 2?由于time_wait狀態(tài)是在主動關(guān)閉的一方出現(xiàn)的骑丸,所以在設(shè)計(jì)協(xié)議邏輯的時候舌仍,盡量由客戶端主動關(guān)閉,避免服務(wù)端出現(xiàn)time_wait

第三次握手失敗了怎么辦

當(dāng)client與server的第三次握手失敗了之后通危,即client發(fā)送至server的確認(rèn)建立連接報(bào)文段未能到達(dá)server铸豁,server在等待client回復(fù)ACK的過程中超時了,那么server會向client發(fā)送一個RTS報(bào)文段并進(jìn)入關(guān)閉狀態(tài)菊碟,即:并不等待client第三次握手的ACK包重傳节芥,直接關(guān)閉連接請求,這主要是為了防止泛洪攻擊逆害,即壞人偽造許多IP向server發(fā)送連接請求头镊,從而將server的未連接隊(duì)列塞滿,浪費(fèi)server的資源

三次握手有什么缺陷會被黑客利用忍燥,如何防范

黑客仿造IP大量的向server發(fā)送TCP連接請求報(bào)文包拧晕,從而將server的半連接隊(duì)列(即server收到連接請求SYN之后將client加入半連接隊(duì)列中)占滿,從而使得server拒絕其他正常的連接請求梅垄。即拒絕服務(wù)攻擊

防范方法:

1?縮短服務(wù)器接收客戶端SYN報(bào)文之后的等待連接時間厂捞,即SYN timeout時間,队丝,但是過低的SYN timeout可能會影響正常的TCP連接的建立靡馁,一旦網(wǎng)絡(luò)不通暢便可能導(dǎo)致client連接請求失敗

2?SYN cookie:當(dāng)server接收到client的SYN之后,不立即分配資源机久,而是根據(jù)client發(fā)送過來的SYN包計(jì)算出一個cookie值臭墨,這個cookie值用來存儲server返回給client的SYN+ACK數(shù)據(jù)包中的初始序列號,當(dāng)client返回第三次握手的ACK包之后進(jìn)行校驗(yàn)膘盖,如果校驗(yàn)成功則server分配資源胧弛,建立連接

3?SYN proxy代理,作為server與client連接的代理侠畔,代替server與client建立三次握手的連接结缚,同時SYN proxy與client建立好了三次握手連接之后,確保是正常的TCP連接软棺,而不是TCP泛洪攻擊红竭,那么SYN proxy就與server建立三次握手連接

tcp的擁塞控制

TCP通過一個定時器(timer)采樣了RTT并計(jì)算RTO,但是,如果網(wǎng)絡(luò)上的延時突然增加茵宪,那么最冰,TCP對這個事做出的應(yīng)對只有重傳數(shù)據(jù),然而重傳會導(dǎo)致網(wǎng)絡(luò)的負(fù)擔(dān)更重稀火,于是會導(dǎo)致更大的延遲以及更多的丟包暖哨,這就導(dǎo)致了惡性循環(huán),最終形成“網(wǎng)絡(luò)風(fēng)暴”憾股。為了在發(fā)送端調(diào)節(jié)所要發(fā)送的數(shù)據(jù)量鹿蜀,定義了一個“擁塞窗口”(Congestion Window),在發(fā)送數(shù)據(jù)時服球,將擁塞窗口的大小與接收端ack的窗口大小做比較,取較小者作為發(fā)送數(shù)據(jù)量的上限

擁塞控制與流量控制的區(qū)別

擁塞控制是防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中颠焦,可以使網(wǎng)絡(luò)中的路由器或鏈路不致過載斩熊,是一個全局性的過程。 流量控制是點(diǎn)對點(diǎn)通信量的控制伐庭,是一個端到端的問題粉渠,主要就是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率,以便接收端來得及接收

慢開始算法

剛剛加入網(wǎng)絡(luò)的連接圾另,一點(diǎn)一點(diǎn)地提速霸株,不要一上來就把路占滿。主機(jī)剛開始發(fā)送報(bào)文段時設(shè)置cwnd=1集乔,每收到一個對新的報(bào)文段的確認(rèn)后去件,將cwn加1。慢開始算法每經(jīng)過一個傳輸輪次扰路,擁塞窗口cwnd就加倍尤溜,一個傳輸輪次就是把擁塞窗口cwnd所允許發(fā)送的報(bào)文段都連續(xù)發(fā)送出去,并收到了對已發(fā)送的最后一個字節(jié)的確認(rèn)汗唱,傳輸輪次所經(jīng)歷的時間就是往返時間RTT


擁塞避免算法

擁塞避免算法的思路是讓擁塞窗口cwnd緩慢地增大宫莱,即每經(jīng)過一個往返rtt時間吧發(fā)送方的擁塞窗口cwnd加1,而不是慢開始算法的加倍哩罪,使擁塞窗口cwn按線性規(guī)律緩慢增長

當(dāng)cwnd < ssthresh時授霸,使用慢開始算法

當(dāng)cwnd > ssthresh時,使用擁塞避免算法

當(dāng)cwnd = ssthresh時际插,既可使用慢開始碘耳,也可使用擁塞避免

網(wǎng)絡(luò)擁塞時

無論在慢開始還是擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞腹鹉,就要把慢開始門限ssthresh設(shè)置為出現(xiàn)擁塞時的發(fā)送方窗口值的一半藏畅,把擁塞窗口cwnd設(shè)置為1,執(zhí)行慢開始算法。這樣做的目的是為了迅速減少主機(jī)發(fā)送到網(wǎng)絡(luò)中的分組數(shù)愉阎。

快重傳

如果發(fā)送方設(shè)置的超時計(jì)時器時限已到但還沒有收到確認(rèn)绞蹦,那么很可能是網(wǎng)絡(luò)出現(xiàn)了擁塞,致使報(bào)文段在網(wǎng)絡(luò)中的某處被丟棄榜旦。這時幽七,TCP馬上把擁塞窗口 cwnd 減小到1,并執(zhí)行慢開始算法溅呢,同時把慢開始門限值ssthresh減半澡屡。這是不使用快重傳的情況。使用快重傳時咐旧,發(fā)送方只要一連收到三個重復(fù)確認(rèn)就應(yīng)當(dāng)立即重傳對方尚未收到的報(bào)文段驶鹉,快重傳并非取消重傳計(jì)時器,而是在某些情況下可更早地重傳丟失的報(bào)文段铣墨,


快恢復(fù)

與快重傳配合使用室埋,當(dāng)發(fā)送端收到連續(xù)三個重復(fù)的確認(rèn)時,發(fā)送方認(rèn)為網(wǎng)絡(luò)很可能沒有發(fā)生擁塞(沒有快重傳時伊约,只要發(fā)生重傳姚淆,就認(rèn)為網(wǎng)絡(luò)發(fā)生擁塞,需要執(zhí)行慢開始)屡律,把慢開始的門限ssthresh減半腌逢,但不執(zhí)行慢開始算法,cwnd現(xiàn)在不設(shè)置為1超埋,設(shè)置為ssthresh減半后的數(shù)值搏讶,然后開始執(zhí)行擁塞避免算法

TCP/IP詳解--擁塞控制 & 慢啟動 快恢復(fù) 擁塞避免 - losbyday - 博客園

tcp的流量控制

流量控制跟擁塞控制相比就簡單很多了,tcp利用滑動窗口實(shí)現(xiàn)流量控制

流量控制就是讓發(fā)送方的發(fā)送速率不用太快纳本,要讓接收方來得及接收窍蓝,通過接收方通知的窗口大小來實(shí)現(xiàn)流量控制

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市繁成,隨后出現(xiàn)的幾起案子吓笙,更是在濱河造成了極大的恐慌,老刑警劉巖巾腕,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件面睛,死亡現(xiàn)場離奇詭異,居然都是意外死亡尊搬,警方通過查閱死者的電腦和手機(jī)叁鉴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佛寿,“玉大人幌墓,你說我怎么就攤上這事但壮。” “怎么了常侣?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵蜡饵,是天一觀的道長。 經(jīng)常有香客問我胳施,道長溯祸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任舞肆,我火速辦了婚禮焦辅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘椿胯。我一直安慰自己筷登,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布哩盲。 她就那樣靜靜地躺著仆抵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪种冬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天舔糖,我揣著相機(jī)與錄音娱两,去河邊找鬼。 笑死金吗,一個胖子當(dāng)著我的面吹牛十兢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摇庙,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼旱物,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了卫袒?” 一聲冷哼從身側(cè)響起宵呛,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎夕凝,沒想到半個月后宝穗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡码秉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年逮矛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片转砖。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡须鼎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晋控,我是刑警寧澤汞窗,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站糖荒,受9級特大地震影響杉辙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捶朵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一蜘矢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧综看,春花似錦品腹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至析珊,卻和暖如春羡鸥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忠寻。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工惧浴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奕剃。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓衷旅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纵朋。 傳聞我的和親對象是個殘疾皇子柿顶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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