tcp協議中syn,ack,fin各有什麼作用

2021-03-04 08:10:18 字數 4986 閱讀 8006

1樓:

tcp的三次握手是怎麼進行的了:傳送端傳送乙個syn=1,ack=0標誌的資料報給接收端,請求進行連線,這是第一次握手;接收端收到請求並且允許連線的話,就會傳送乙個syn=1,ack=1標誌的資料報給傳送端,告訴它,可以通訊了,並且讓傳送端傳送乙個確認資料報,這是第二次握手;最後,傳送端傳送乙個syn=0,ack=1的資料報給接收端,告訴它連線已被確認,這就是第三次握手。之後,乙個tcp連線建立,開始通訊。

*syn:同步標誌

同步序列編號(synchronize sequence numbers)欄有效。該標誌僅在三次握手建立tcp連線時有效。它提示tcp連線的服務端檢查序列編號,該序列編號為tcp連線初始端(一般是客戶端)的初始序列編號。

在這裡,可以把tcp序列編號看作是乙個範圍從0到4,294,967,295的32位計數器。通過tcp連線交換的資料中每乙個位元組都經過序列編號。在tcp報頭中的序列編號欄包括了tcp分段中第乙個位元組的序列編號。

*ack:確認標誌

確認編號(acknowledgement number)欄有效。大多數情況下該標誌位是置位的。tcp報頭內的確認編號欄內包含的確認編號(w+1,figure-1)為下乙個預期的序列編號,同時提示遠端系統已經成功接收所有資料。

*rst:復位標誌

復位標誌有效。用於復位相應的tcp連線。

*urg:緊急標誌

緊急(the urgent pointer) 標誌有效。緊急標誌置位,

*psh:推標誌

該標誌置位時,接收端不將該資料進行佇列處理,而是盡可能快將資料轉由應用處理。在處理 tel*** 或 rlogin 等互動模式的連線時,該標誌總是置位的。

*fin:結束標誌

帶有該標誌置位的資料報用來結束乙個tcp回話,但對應埠仍處於開放狀態,準備接收後續資料

三次握手three-way handshake

乙個虛擬連線的建立是通過三次握手來實現的

1. (b) --> [syn] --> (a)

假如伺服器a和客戶機b通訊. 當a要和b通訊時,b首先向a發乙個syn (synchronize) 標記的包,告訴a請求建立連線.

注意: 乙個 syn包就是僅syn標記設為1的tcp包(參見tcp包頭resources). 認識到這點很重要,只有當a受到b發來的syn包,才可建立連線,除此之外別無他法。

因此,如果你的防火牆丟棄所有的發往外網介面的syn包,那麼你將不能讓外部任何主機主動建立連線。

2. (b) <-- [syn/ack] <--(a)

接著,a收到後會發乙個對syn包的確認包(syn/ack)回去,表示對第乙個syn包的確認,並繼續握手操作.

注意: syn/ack包是僅syn 和 ack 標記為1的包.

3. (b) --> [ack] --> (a)

b收到syn/ack 包,b發乙個確認包(ack),通知a連線已建立。至此,三次握手完成,乙個tcp連線完成

note: ack包就是僅ack 標記設為1的tcp包. 需要注意的是當三此握手完成、連線建立以後,tcp連線的每個包都會設定ack位

這就是為何連線跟蹤很重要的原因了. 沒有連線跟蹤,防火牆將無法判斷收到的ack包是否屬於乙個已經建立的連線.一般的包過濾(ipchains)收到ack包時,會讓它通過(這絕對不是個好主意).

而當狀態型防火牆收到此種包時,它會先在連線表中查詢是否屬於哪個已建連線,否則丟棄該包

四次握手four-way handshake

四次握手用來關閉已建立的tcp連線

1. (b) --> ack/fin --> (a)

2. (b) <-- ack <-- (a)

3. (b) <-- ack/fin <-- (a)

4. (b) --> ack --> (a)

注意: 由於tcp連線是雙向連線, 因此關閉連線需要在兩個方向上做。ack/fin 包(ack 和fin 標記設為1)通常被認為是fin(終結)包.

然而, 由於連線還沒有關閉, fin包總是打上ack標記. 沒有ack標記而僅有fin標記的包不是合法的包,並且通常被認為是惡意的

tcp協議中syn ack fin各有什麼作用

2樓:

tcp的三次握手是怎麼進行的了:傳送端傳送乙個syn=1,ack=0標誌的資料報給接收端,請求進行連線,這是第一次握手;接收端收到請求並且允許連線的話,就會傳送乙個syn=1,ack=1標誌的資料報給傳送端,告訴它,可以通訊了,並且讓傳送端傳送乙個確認資料報,這是第二次握手;最後,傳送端傳送乙個syn=0,ack=1的資料報給接收端,告訴它連線已被確認,這就是第三次握手。之後,乙個tcp連線建立,開始通訊。

*syn:同步標誌

同步序列編號(synchronize sequence numbers)欄有效。該標誌僅在三次握手建立tcp連線時有效。它提示tcp連線的服務端檢查序列編號,該序列編號為tcp連線初始端(一般是客戶端)的初始序列編號。

在這裡,可以把tcp序列編號看作是乙個範圍從0到4,294,967,295的32位計數器。通過tcp連線交換的資料中每乙個位元組都經過序列編號。在tcp報頭中的序列編號欄包括了tcp分段中第乙個位元組的序列編號。

*ack:確認標誌

確認編號(acknowledgement number)欄有效。大多數情況下該標誌位是置位的。tcp報頭內的確認編號欄內包含的確認編號(w+1,figure-1)為下乙個預期的序列編號,同時提示遠端系統已經成功接收所有資料。

*rst:復位標誌

復位標誌有效。用於復位相應的tcp連線。

*urg:緊急標誌

緊急(the urgent pointer) 標誌有效。緊急標誌置位,

*psh:推標誌

該標誌置位時,接收端不將該資料進行佇列處理,而是盡可能快將資料轉由應用處理。在處理 tel*** 或 rlogin 等互動模式的連線時,該標誌總是置位的。

*fin:結束標誌

帶有該標誌置位的資料報用來結束乙個tcp回話,但對應埠仍處於開放狀態,準備接收後續資料

三次握手three-way handshake

乙個虛擬連線的建立是通過三次握手來實現的

1. (b) --> [syn] --> (a)

假如伺服器a和客戶機b通訊. 當a要和b通訊時,b首先向a發乙個syn (synchronize) 標記的包,告訴a請求建立連線.

注意: 乙個 syn包就是僅syn標記設為1的tcp包(參見tcp包頭resources). 認識到這點很重要,只有當a受到b發來的syn包,才可建立連線,除此之外別無他法。

因此,如果你的防火牆丟棄所有的發往外網介面的syn包,那麼你將不能讓外部任何主機主動建立連線。

2. (b) <-- [syn/ack] <--(a)

接著,a收到後會發乙個對syn包的確認包(syn/ack)回去,表示對第乙個syn包的確認,並繼續握手操作.

注意: syn/ack包是僅syn 和 ack 標記為1的包.

3. (b) --> [ack] --> (a)

b收到syn/ack 包,b發乙個確認包(ack),通知a連線已建立。至此,三次握手完成,乙個tcp連線完成

note: ack包就是僅ack 標記設為1的tcp包. 需要注意的是當三此握手完成、連線建立以後,tcp連線的每個包都會設定ack位

這就是為何連線跟蹤很重要的原因了. 沒有連線跟蹤,防火牆將無法判斷收到的ack包是否屬於乙個已經建立的連線.一般的包過濾(ipchains)收到ack包時,會讓它通過(這絕對不是個好主意).

而當狀態型防火牆收到此種包時,它會先在連線表中查詢是否屬於哪個已建連線,否則丟棄該包

四次握手four-way handshake

四次握手用來關閉已建立的tcp連線

1. (b) --> ack/fin --> (a)

2. (b) <-- ack <-- (a)

3. (b) <-- ack/fin <-- (a)

4. (b) --> ack --> (a)

注意: 由於tcp連線是雙向連線, 因此關閉連線需要在兩個方向上做。ack/fin 包(ack 和fin 標記設為1)通常被認為是fin(終結)包.

然而, 由於連線還沒有關閉, fin包總是打上ack標記. 沒有ack標記而僅有fin標記的包不是合法的包,並且通常被認為是惡意的

3樓:匿名使用者

syn指的是請求建立鏈路、ack指的是應答、fin指的是終止當前鏈路

4樓:

syn是tcp建立連線時包內設定的標記,例如(c是客戶機,s是伺服器。):

c: syn

s: syn, ack

c: ack

就建立了一條連線。

ack是一般的響應標記,一般報文都會有。

fin是tcp試圖關閉連線時包內設定的標記,例如(c是客戶機,s是伺服器。):

c: fin, ack

s: ack

s: fin, ack

c: ack

就關閉了一條連線。

tcp的ack 有什麼作用

5樓:匿名使用者

ack是乙個對資料報的確認,當正確收到資料報後,接收端會傳送乙個ack給傳送端,內裡面會說明對那個容資料報進行確認,每個資料報裡都會有乙個序列號,如果收到的資料報有誤,或錯序,還會申請重發,nak是乙個否定的回答,ack是確定回答,這樣保證資料的正確傳輸,這是tcp協議的傳輸機制,被稱為面向連線的。當然,為了提高傳輸效率,會使用到乙個視窗的概念,就是說,不是每乙個資料報都需要確認,雙方可以協商多少個資料報才進行確認,只要雙方遵守就可以了。

tcp傳輸連線中的syn、ack、seq、an分別是什麼意思?他們所帶的數字又是代表什麼?

6樓:

syn,ack是標誌位

seq,an是資料報序號

syn=1, ack=0, seq=200 的意思是:傳送的為乙個syn請求,傳送端的初始資料報序號為200

syn=1, ack=1, seq=4800, an=201 的意思是:接收端的確認資訊,且接收端的初始資料報序號為4800

TCP傳輸協議中如何解決丟包問題

一 回答這個問題之前,要考慮tcp協議為什麼會丟包,在什麼樣的情況下會丟包。1 tcp協議定義 transimission control protocol 是以一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議。2 tcp是基於不可靠的網路實現可靠傳輸,肯定會存在丟包問題。3 如果在通訊過程中,...

dns可以使用tcp與udp兩種協議,分別在什麼情況下使用

現在就來說說dns分別在什麼情況下使用這兩種協議。如果用wireshark sniffer或古老些的tcpdump抓包分析,會發現幾乎所有的情況都是在使用udp,使用tcp的情況非常罕見,神秘兮兮。其實當解析器發出乙個request後,返回的response中的tc刪節標誌位元位被置1時,說明反饋報...

仲裁協議有效,但協議中約定的仲裁地點,有些不妥,請問法院或是仲裁庭有權修改嗎?法律依據是什麼

我認為這個仲裁協議的條款是有效的。根據 仲裁法 第18條的規定,仲裁協議對仲裁事項或者仲裁委員會沒有約定或者約定不明確的,當事人可以補充協議 達不成補充協議的,仲裁協議無效。從該仲裁條款的內容看,因為約定的仲裁機構明確 準確,約定的仲裁規則清楚,所以有效。至於地點,確有些不妥。但是中國海事仲裁委員會...