理解TCP序列號(Sequence Number)和確認號(Acknowledgment Number)


 

一、概念及作用

TCP會話的每一端都包含一個32位(bit)的序列號,該序列號被用來跟蹤該端發送的數據量。每一個包中都包含序列號,在接收端則通過確認號用來通知發送端數據成功接收。

二、TCP三次握手

TCP標志位

TCP在其協議頭中使用大量的標志位或者說1位(bit)布爾域來控制連接狀態,一個包中有可以設置多個標志位。

TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,采用三次握手確認建立一個連接:

位碼即TCP標志位,有6種標示

SYN(synchronous建立聯機)

ACK(acknowledgement 確認)

PSH(push傳送)

FIN(finish結束)

RST(reset重置)

URG(urgent緊急)

Sequence number(順序號碼) Acknowledge number(確認號碼)
我們常用的是以下三個標志位:

  • SYN - 創建一個連接

  • FIN - 終結一個連接

  • ACK - 確認接收到的數據

握手過程(會畫出三次握手的圖進行理解記憶)

所謂三次握手(Three-way Handshake),是指建立一個TCP連接時,需要客戶端和服務器總共發送3個包。

三次握手的目的是連接服務器指定端口,建立TCP連接,並同步連接雙方的序列號和確認號並交換 TCP 窗口大小信息.在socket編程中,客戶端執行connect()時。將觸發三次握手。

1.第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;

2.第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;

3.第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。完成三次握手,客戶端與服務器開始傳送數據.

第一次握手:

客戶端發送一個TCP的SYN標志位置1的包指明客戶打算連接的服務器的端口,以及初始序號X,保存在包頭的序列號(Sequence Number)字段里。

第二次握手:

服務器發回確認包(ACK)應答。即SYN標志位和ACK標志位均為1同時,將確認序號(Acknowledgement Number)設置為客戶的I S N加1以.即X+1。

第三次握手:

客戶端再次發送確認包(ACK) SYN標志位為0,ACK標志位為1.並且把服務器發來ACK的序號字段+1,放在確定字段中發送給對方.並且在數據段放寫ISN的+1

syn攻擊

在三次握手過程中,服務器發送SYN-ACK之后,收到客戶端的ACK之前的TCP連接稱為半連接(half-open connect).此時服務器處於Syn_RECV狀態.當收到ACK后,服務器轉入ESTABLISHED狀態.

Syn攻擊就是 攻擊客戶端 在短時間內偽造大量不存在的IP地址,向服務器不斷地發送syn包,服務器回復確認包,並等待客戶的確認,由於源地址是不存在的,服務器需要不斷的重發直 至超時,這些偽造的SYN包將長時間占用未連接隊列,正常的SYN請求被丟棄,目標系統運行緩慢,嚴重者引起網絡堵塞甚至系統癱瘓。

Syn攻擊是一個典型的DDOS攻擊。檢測SYN攻擊非常的方便,當你在服務器上看到大量的半連接狀態時,特別是源IP地址是隨機的,基本上可以斷定這是一次SYN攻擊.在Linux下可以如下命令檢測是否被Syn攻擊

netstat -n -p TCP | grep SYN_RECV

一般較新的TCP/IP協議棧都對這一過程進行修正來防范Syn攻擊,修改tcp協議實現。主要方法有SynAttackProtect保護機制、SYN cookies技術、增加最大半連接和縮短超時時間等.

但是不能完全防范syn攻擊。

三、TCP四次揮手(會畫出四次揮手的圖進行理解記憶)

TCP使用四次揮手關閉一個連接:

第一次揮手:主動關閉方發送一個FIN並進入FIN_WAIT1狀態

第二次揮手:被動關閉方接收到主動關閉方發送的FIN並發送ACK,此時被動關閉方進入CLOSE_WAIT狀態;主動關閉方收到被動關閉方的ACK后,進入FIN_WAIT2狀態

第三次揮手:被動關閉方發送一個FIN並進入LAST_ACK狀態

第四次揮手:主動關閉方收到被動關閉方發送的FIN並發送ACK,此時主動關閉方進入TIME_WAIT狀態,經過2MSL時間后關閉連接;被動關閉方收到主動關閉方的ACK后,關閉連接

 
 
歡迎關注微信公眾號:shoshana


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM