TCP協議的三次握手

2021-09-25 21:13:05 字數 1617 閱讀 5541

##tcp udp協議

由於傳輸的時候可能出現掉包,順序不一致,速度慢等情況,在不同的需求下使用不同的協議進行傳輸。

uag:緊急指標標誌

ack:確認序號標誌

psh:push標誌

rst:重置連線標誌

syn:同步序號,用於建立連線過程

fin:finish標誌,用於釋放連線

一次完整的tcp通訊包括:建立連線、資料傳輸、關閉連線

第一次握手

客戶端通過向伺服器端傳送乙個syn(reserved 中的 syn)=1,seq(sequence number)=x來建立乙個主動開啟。

第二次握手

伺服器端應當為乙個合法的syn回送乙個syn/ack=1,seq=y,ack=x+1。

第三次握手

最後,客戶端再傳送乙個ack=1,seq=x+1,ack=y+1。這樣就完成了三路握手,並進入了連線建立狀態。

三次握手的意義:tcp通過三次握手建立可靠的(確保收到)的全雙工通訊,並且同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。

安全隱患

syn攻擊 伺服器接收到連線請求(syn=x),將此資訊加入未連線佇列,並傳送請求包給客戶(syn=y,ack=x+1),

此時進入syn_recv狀態。當伺服器未收到客戶端的確認包時,重發請求包,一直到超時

(linux預設重發6次總共63秒), 才將此條目從未連線佇列刪除。引起網路堵塞甚至系統癱瘓。針對syn flood防範

syn佇列滿後,通過tcp_syncookies引數回發syn cookie 若為正常連線client會回發syn

cookie,建立連線

第一次揮手:

client向server傳送乙個fin,用來關閉client到server的資料傳送,client進入fin_wait_1狀態

第二次揮手

server收到fin後,傳送乙個ack給client,確認序號為收到的序號+1,server進入close_wait 狀態

第三次揮手

server傳送乙個fin,用來關閉server到client的資料傳送,server進入last_ack狀態

第四次揮手

client收到fin後,client進入time_wait狀態,接著傳送乙個ack給server,確認序號為收到序號+1

server進入closed狀態,完成四次揮手,

client端需要再等待2msl保證對方收到傳送後closed

出現大量close_wait狀態,伺服器忙於讀寫,沒有及時關閉連線

**,釋放資源**

配置,處理請求的執行緒配置

保證tcp的可靠性

保證tcp的流控特性

TCP三次握手協議

摘自 syn攻擊原理以及防範技術 tcp握手協議 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack ...

TCP三次握手協議

在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack j 1 同時自己也傳送乙個syn包 syn k 即...

TCP協議三次握手

第一次握手 客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack j 1 同時自己也傳送乙個syn包 syn k 即syn ack包,此時伺服器進入 syn recv 狀態 第三次握手 客戶端 收到伺服器的...