成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

圖解 TCP 三次握手:一步步構(gòu)建網(wǎng)絡(luò)會(huì)話

網(wǎng)絡(luò)
在互聯(lián)網(wǎng)通信中,確保數(shù)據(jù)傳輸?shù)目煽啃灾陵P(guān)重要。TCP三次握手的過程正是為了解決這一問題而設(shè)計(jì)的。

在互聯(lián)網(wǎng)通信中,確保數(shù)據(jù)傳輸?shù)目煽啃灾陵P(guān)重要。TCP三次握手的過程正是為了解決這一問題而設(shè)計(jì)的。在建立連接之前,客戶端和服務(wù)器需要確認(rèn)彼此的存在與準(zhǔn)備狀態(tài),以防止因網(wǎng)絡(luò)延遲或數(shù)據(jù)丟失而導(dǎo)致的錯(cuò)誤。通過三次握手,雙方不僅能夠同步序列號(hào),還能有效地建立穩(wěn)定的通信鏈路,從而保證后續(xù)數(shù)據(jù)傳輸?shù)捻樌M(jìn)行。

TCP基礎(chǔ)認(rèn)識(shí)

讓我們一起來探索一下TCP頭部的格式吧。其中,用顏色標(biāo)注的部分是與我們討論的主題關(guān)系比較密切的字段,而其余部分我們就暫時(shí)不深入探討了。

(1) 序列號(hào):在建立連接的過程中,由計(jì)算機(jī)生成的一個(gè)隨機(jī)數(shù)值被用作初始序列號(hào),并通過SYN數(shù)據(jù)包傳遞給接收端主機(jī)。每當(dāng)發(fā)送數(shù)據(jù)時(shí),該序列號(hào)會(huì)根據(jù)所發(fā)送的數(shù)據(jù)字節(jié)數(shù)進(jìn)行相應(yīng)的遞增。這種方法有助于解決網(wǎng)絡(luò)傳輸中可能出現(xiàn)的數(shù)據(jù)包亂序問題。

(2) 確認(rèn)應(yīng)答號(hào):下次預(yù)期接收的數(shù)據(jù)序列號(hào),即為確認(rèn)應(yīng)答(ACK)中所指的序列號(hào)。當(dāng)發(fā)送端接收到此確認(rèn)應(yīng)答后,可以認(rèn)為該序列號(hào)之前的所有數(shù)據(jù)均已成功傳輸至接收端。這一機(jī)制主要用于解決網(wǎng)絡(luò)傳輸過程中可能出現(xiàn)的數(shù)據(jù)包丟失問題。

(3) 控制位:

  • ACK:當(dāng)這個(gè)位是1的時(shí)候,「確認(rèn)應(yīng)答」就生效了。TCP 規(guī)定,除了剛開始建立連接時(shí)發(fā)送的 SYN 包之外,其他情況下這個(gè)位都必須設(shè)為1。
  • RST:當(dāng)這個(gè)位是1的時(shí)候,意味著 TCP 連接出了問題,必須強(qiáng)制斷開。
  • SYN:當(dāng)這個(gè)位置是1的時(shí)候,就表示想要建立連接,并且會(huì)在[序列號(hào)]那一欄設(shè)定一個(gè)起始的序列號(hào)。
  • FIN:當(dāng)這個(gè)位置為1時(shí),意味著之后不會(huì)再發(fā)送數(shù)據(jù)了,想要結(jié)束連接。當(dāng)雙方都完成了通信并且想要斷開連接時(shí),兩臺(tái)電腦會(huì)互相發(fā)送FIN位設(shè)為1的TCP數(shù)據(jù)包。

TCP連接建立

TCP是一種需要先建立連接才能使用的協(xié)議。在開始傳輸數(shù)據(jù)之前,雙方得通過一個(gè)叫做“三次握手”的過程來建立起這個(gè)連接。具體怎么握手的步驟可以看下面的圖。

1.TCP三次握手過程

一開始,客戶端和服務(wù)端都處于CLOSED狀態(tài)。先是服務(wù)端主動(dòng)監(jiān)聽某個(gè)端口,處于LISTEN狀態(tài)。

第一個(gè)報(bào)文:SYN報(bào)文

客戶端會(huì)隨機(jī)初始化序號(hào)client_isn,將此序號(hào)置于TCP 首部的序號(hào)字段中,同時(shí)把SYN標(biāo)志位置為1 ,表示SYN 報(bào)文。接著把第一個(gè)SYN報(bào)文發(fā)送給服務(wù)端,表示向服務(wù)端發(fā)起連接,該報(bào)文不包含應(yīng)用層數(shù)據(jù),之后客戶端處于SYN-SENT狀態(tài)。

第二個(gè)報(bào)文:SYN+ACK報(bào)文

服務(wù)端收到客戶端的SYN報(bào)文后,首先服務(wù)端也隨機(jī)初始化自己的序號(hào)server_isn,將此序號(hào)填入TCP首部的序號(hào)字段中,其次把TCP首部的確認(rèn)應(yīng)答號(hào)字段填入client_isn+1, 接著把SYN和ACK標(biāo)志位置為1。最后把該報(bào)文發(fā)給客戶端,該報(bào)文也不包含應(yīng)用層數(shù)據(jù),之后服務(wù)端處于SYN-RCVD狀態(tài)。

第三個(gè)報(bào)文:ACK報(bào)文

客戶端收到服務(wù)端報(bào)文后,還要向服務(wù)端回應(yīng)最后一個(gè)應(yīng)答報(bào)文,首先該應(yīng)答報(bào)文TCP首部ACK標(biāo)志位置為1 ,其次確認(rèn)應(yīng)答號(hào)字段填入server_isn+1 ,最后把報(bào)文發(fā)送給服務(wù)端,這次報(bào)文可以攜帶客戶到服務(wù)器的數(shù)據(jù),之后客戶端處于ESTABLISHED狀態(tài)。

服務(wù)器收到客戶端的應(yīng)答報(bào)文后,也進(jìn)入ESTABLISHED狀態(tài)。

通過ENSP搭建一個(gè)簡(jiǎn)單的實(shí)驗(yàn)環(huán)境,如下圖

為了讓大家直觀了解三次握手的過程,以下通過Wireshark抓包軟件,抓取三次握手的數(shù)據(jù)包。

三次握手?jǐn)?shù)據(jù)包

(1) 第一次握手標(biāo)志位

從標(biāo)志位看出,同步位有值,在做請(qǐng)求SYN:Syn同步位為1

第一次握手?jǐn)?shù)據(jù)包

(2) 第二次握手標(biāo)志位

從標(biāo)志位看出,確認(rèn)位、同步位有值,在做應(yīng)答SYN+ACK:Syn同步位為1、Acknowledgment 確認(rèn)位為1。

第二次握手?jǐn)?shù)據(jù)包

(3) 第三次握手標(biāo)志位

從標(biāo)志位看出,只有確認(rèn)位有值,在做再次確認(rèn)SYN:Acknowledgment確認(rèn)位為1

第三次握手?jǐn)?shù)據(jù)包

常見面試題

1.TCP 建立連接為什么要三次握手而不是兩次?

TCP連接需要三次握手,而不是兩次,主要是為了保證兩邊都能順利通信,而且連接穩(wěn)定。第一次握手時(shí),客戶端告訴服務(wù)器想建立連接;第二次握手,服務(wù)器回復(fù)說它已經(jīng)準(zhǔn)備好接受連接了;第三次握手是客戶端再次確認(rèn),確保雙方都已經(jīng)準(zhǔn)備好發(fā)送數(shù)據(jù)了。如果只有兩次握手的話,有時(shí)候可能會(huì)導(dǎo)致客戶端和服務(wù)器之間的情況不對(duì)等,造成數(shù)據(jù)丟失或者連接不穩(wěn)定的問題。所以,通過三次握手,可以確保兩邊都確認(rèn)好了,為后面的數(shù)據(jù)傳輸做好準(zhǔn)備。

2.TCP 建立連接為什么要三次握手而不是四次?

TCP用三次握手而不是四次來建立連接,是因?yàn)槿我呀?jīng)足夠確認(rèn)雙方狀態(tài)和同步序列號(hào)了。第一次握手是客戶端發(fā)出請(qǐng)求,第二次握手是服務(wù)器回應(yīng),第三次握手是客戶端再次確認(rèn),這樣就能可靠地建立起連接。如果改成四次握手,反而會(huì)增加不必要的等待時(shí)間和資源浪費(fèi)。三次握手既能保證雙方都準(zhǔn)備好通信,又能快速有效地完成連接。

3.有一種網(wǎng)絡(luò)攻擊是利用了TCP建立連接機(jī)制的漏洞,你了解嗎?這個(gè)問題怎么解決?

一種利用TCP連接建立過程中潛在安全漏洞的網(wǎng)絡(luò)攻擊手段被稱為TCP SYN Flood攻擊。此類攻擊策略性地利用了TCP三次握手協(xié)議的特性,通過向目標(biāo)服務(wù)器發(fā)送大量SYN(同步序列編號(hào))請(qǐng)求報(bào)文,但故意不響應(yīng)最終的ACK(確認(rèn)應(yīng)答)報(bào)文來完成握手過程。這種行為會(huì)導(dǎo)致目標(biāo)服務(wù)器上開放大量的半開連接狀態(tài),進(jìn)而消耗其有限的資源,如內(nèi)存和處理能力,最終使得服務(wù)器難以或無法為合法用戶提供服務(wù)。

解決方案:

  • SYN Cookies:服務(wù)器在收到SYN請(qǐng)求時(shí)不立即分配資源,而是生成一個(gè)加密的SYN Cookie,只有在收到合法的ACK時(shí)才會(huì)真正建立連接。
  • 限制SYN請(qǐng)求速率:通過配置防火墻或入侵檢測(cè)系統(tǒng)(IDS)來限制某個(gè)IP地址的SYN請(qǐng)求頻率,防止過多請(qǐng)求。
  • 使用負(fù)載均衡:將流量分散到多個(gè)服務(wù)器,減少單一服務(wù)器的壓力。
  • 設(shè)置連接超時(shí):調(diào)整服務(wù)器的連接超時(shí)設(shè)置,減少等待狀態(tài)的持續(xù)時(shí)間。
責(zé)任編輯:趙寧寧 來源: 攻城獅成長(zhǎng)日記
相關(guān)推薦

2017-01-19 21:08:33

iOS路由構(gòu)建

2019-04-01 10:15:02

2019-03-05 14:09:27

Docker存儲(chǔ)容器

2019-07-09 15:23:22

Docker存儲(chǔ)驅(qū)動(dòng)

2018-12-24 10:04:06

Docker存儲(chǔ)驅(qū)動(dòng)

2010-03-04 16:28:17

Android核心代碼

2016-11-02 18:54:01

javascript

2017-12-25 11:50:57

LinuxArch Linux

2011-05-10 10:28:55

2024-08-30 08:30:29

CPU操作系統(tǒng)寄存器

2024-09-30 09:56:59

2009-12-17 16:36:23

無線路由設(shè)置密碼

2018-04-23 14:23:12

2018-06-11 15:30:12

2017-01-06 15:13:25

LinuxVim源代碼

2018-07-13 15:36:52

2024-08-06 09:29:54

程序機(jī)器指令字符串

2020-12-24 11:19:55

JavaMapHashMap

2025-02-08 08:21:48

Java排序Spring

2015-07-27 16:06:16

VMware Thin虛擬化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲高清视频在线观看 | 中文字幕一区二区三区四区五区 | 成年人免费在线视频 | 成人免费小视频 | 欧美日韩一区精品 | 国产成人99久久亚洲综合精品 | 久草视频观看 | 欧美在线看片 | a级片播放 | 色网在线观看 | 亚洲精品国产综合区久久久久久久 | 成人片免费看 | 日韩成人av在线 | 亚洲色图50p| 成人日批视频 | 成人欧美一区二区三区黑人孕妇 | 一级毛片免费视频 | 欧美日韩精品一区二区天天拍 | 国产欧美一区二区三区日本久久久 | 一二三在线视频 | 欧美理论在线观看 | 超碰伊人久久 | 91免费在线看 | 超碰在线人人 | 欧美日韩在线视频观看 | 日本又色又爽又黄的大片 | 超碰日本 | 一级黄色绿像片 | 久久久久久久久久一区二区 | 精品一区国产 | www精品美女久久久tv | 日本一区二区视频 | 国产日韩精品视频 | 人操人人干人 | 欧美色综合一区二区三区 | 自拍偷拍在线视频 | 日韩免费高清视频 | 日本人麻豆 | 久久久久久中文字幕 | 男人的天堂中文字幕 | 韩日一区 |