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

圖解 TCP 三次握手:一步步構建網絡會話

網絡
在互聯網通信中,確保數據傳輸的可靠性至關重要。TCP三次握手的過程正是為了解決這一問題而設計的。

在互聯網通信中,確保數據傳輸的可靠性至關重要。TCP三次握手的過程正是為了解決這一問題而設計的。在建立連接之前,客戶端和服務器需要確認彼此的存在與準備狀態,以防止因網絡延遲或數據丟失而導致的錯誤。通過三次握手,雙方不僅能夠同步序列號,還能有效地建立穩定的通信鏈路,從而保證后續數據傳輸的順利進行。

TCP基礎認識

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

(1) 序列號:在建立連接的過程中,由計算機生成的一個隨機數值被用作初始序列號,并通過SYN數據包傳遞給接收端主機。每當發送數據時,該序列號會根據所發送的數據字節數進行相應的遞增。這種方法有助于解決網絡傳輸中可能出現的數據包亂序問題。

(2) 確認應答號:下次預期接收的數據序列號,即為確認應答(ACK)中所指的序列號。當發送端接收到此確認應答后,可以認為該序列號之前的所有數據均已成功傳輸至接收端。這一機制主要用于解決網絡傳輸過程中可能出現的數據包丟失問題。

(3) 控制位:

  • ACK:當這個位是1的時候,「確認應答」就生效了。TCP 規定,除了剛開始建立連接時發送的 SYN 包之外,其他情況下這個位都必須設為1。
  • RST:當這個位是1的時候,意味著 TCP 連接出了問題,必須強制斷開。
  • SYN:當這個位置是1的時候,就表示想要建立連接,并且會在[序列號]那一欄設定一個起始的序列號。
  • FIN:當這個位置為1時,意味著之后不會再發送數據了,想要結束連接。當雙方都完成了通信并且想要斷開連接時,兩臺電腦會互相發送FIN位設為1的TCP數據包。

TCP連接建立

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

1.TCP三次握手過程

一開始,客戶端和服務端都處于CLOSED狀態。先是服務端主動監聽某個端口,處于LISTEN狀態。

第一個報文:SYN報文

客戶端會隨機初始化序號client_isn,將此序號置于TCP 首部的序號字段中,同時把SYN標志位置為1 ,表示SYN 報文。接著把第一個SYN報文發送給服務端,表示向服務端發起連接,該報文不包含應用層數據,之后客戶端處于SYN-SENT狀態。

第二個報文:SYN+ACK報文

服務端收到客戶端的SYN報文后,首先服務端也隨機初始化自己的序號server_isn,將此序號填入TCP首部的序號字段中,其次把TCP首部的確認應答號字段填入client_isn+1, 接著把SYN和ACK標志位置為1。最后把該報文發給客戶端,該報文也不包含應用層數據,之后服務端處于SYN-RCVD狀態。

第三個報文:ACK報文

客戶端收到服務端報文后,還要向服務端回應最后一個應答報文,首先該應答報文TCP首部ACK標志位置為1 ,其次確認應答號字段填入server_isn+1 ,最后把報文發送給服務端,這次報文可以攜帶客戶到服務器的數據,之后客戶端處于ESTABLISHED狀態。

服務器收到客戶端的應答報文后,也進入ESTABLISHED狀態。

通過ENSP搭建一個簡單的實驗環境,如下圖

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

三次握手數據包

(1) 第一次握手標志位

從標志位看出,同步位有值,在做請求SYN:Syn同步位為1

第一次握手數據包

(2) 第二次握手標志位

從標志位看出,確認位、同步位有值,在做應答SYN+ACK:Syn同步位為1、Acknowledgment 確認位為1。

第二次握手數據包

(3) 第三次握手標志位

從標志位看出,只有確認位有值,在做再次確認SYN:Acknowledgment確認位為1

第三次握手數據包

常見面試題

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

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

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

TCP用三次握手而不是四次來建立連接,是因為三次已經足夠確認雙方狀態和同步序列號了。第一次握手是客戶端發出請求,第二次握手是服務器回應,第三次握手是客戶端再次確認,這樣就能可靠地建立起連接。如果改成四次握手,反而會增加不必要的等待時間和資源浪費。三次握手既能保證雙方都準備好通信,又能快速有效地完成連接。

3.有一種網絡攻擊是利用了TCP建立連接機制的漏洞,你了解嗎?這個問題怎么解決?

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

解決方案:

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

2017-01-19 21:08:33

iOS路由構建

2019-04-01 10:15:02

2019-03-05 14:09:27

Docker存儲容器

2019-07-09 15:23:22

Docker存儲驅動

2018-12-24 10:04:06

Docker存儲驅動

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操作系統寄存器

2024-09-30 09:56:59

2009-12-17 16:36:23

無線路由設置密碼

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

程序機器指令字符串

2015-07-27 16:06:16

VMware Thin虛擬化

2020-12-24 11:19:55

JavaMapHashMap

2025-02-08 08:21:48

Java排序Spring
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品在线 | 欧美日韩视频 | 99re在线视频 | 日韩亚洲欧美综合 | 国产精品国产成人国产三级 | 亚洲精品乱码久久久久久蜜桃 | 国产精品视频一区二区三 | 日本视频一区二区 | 国产精品乱码一区二三区小蝌蚪 | 国产伦精品一区二区三区高清 | 操人网 | 日本久久久久久 | 亚洲精品一区二 | 国产精品日韩一区二区 | 91精品国产综合久久福利软件 | 黄色一级免费观看 | 久久亚洲综合 | 亚洲视频在线看 | 精品久久久久久亚洲精品 | 国产精品色一区二区三区 | 亚洲精品在线视频 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 久久久久久中文字幕 | 热久久久 | 国产99热精品 | 爱爱视频网 | 岛国av一区二区三区 | 国产激情第一页 | 日本网站在线看 | 99婷婷| 天天影视色综合 | 日本亚洲一区 | av黄色免费在线观看 | 欧美一区二区免费在线 | 久久综合一区二区三区 | 国产高清精品一区二区三区 | 欧美日韩国产三级 | 欧美成人视屏 | 国产日韩久久久久69影院 | 成人免费在线视频 | 国产午夜精品理论片a大结局 |