客戶端傳送乙個syn=1,ack=0標誌的資料報給服務端,請求進行連線,這裡完成了第一次握手;服務端收到請求並且允許連線的話,就會傳送乙個syn=1,ack=1標誌的資料報給客戶端,告訴它,可以通訊了,並且讓客戶端傳送乙個確定資料報,這是第二次完成握手;最後,客戶端傳送乙個syn=0,ack=1的資料報給服務端,告訴它連線已被確認,這就是第三次握手。之後,乙個tcp連線建立,開始通訊。
同步序列編號(synchronize sequence numbers)欄有效。該標誌僅在三次握手建立tcp連線時有效。它提示tcp連線的服務端檢查序列編碼,該序列編碼為tcp連線初始端(一般是客戶端)的初始序列編號。在這裡,可以把tcp序列編號看作乙個範圍0到4,294,967,295的32位計數器。通過tcp連線交換的資料中每乙個位元組都經過序列編號。在tcp報頭中的序列編號欄包括了tcp分段中第乙個位元組的序列編號。
確定編號(acknowledgement number)欄有效。大多數情況下該標誌位是置位的。tcp報頭內的確認編號欄內包含的確定編號(w+1,figure-1)為下乙個預期的序列編號,同時提示遠端系統已經成功接收所有資料。
復位標誌有效,用於復位相應的tcp連線。
緊急(the urgent pointer)標誌有效。緊急標誌置位。
該標誌置位時,接收端不將該資料進行佇列處理,而是盡可能將資料轉由應用處理。在處理telnet或rlogin等互動模式的連線時,該標誌總是置位的。
帶由該標誌置位的資料報用來結束乙個tcp回話,但對應埠仍處於開放狀態,準備接收後續資料。
在tcp層,有個flags欄位,這個欄位有以下幾個標識:syn,fin,ack,psh,rst,urg,其中,對於我們日常的分析有用的就是前面的五個字段。它們的含義是:syn表示建立連線,fin表示關閉連線,ack表示響應,psh表示有data資料傳輸,rst表示連線重置。其中,ack是可能與syn,fin等同時使用的,比如syn和ack可能同時為1,它表示的就是建立連線之後的響應,如果只是單個的乙個syn,它表示的只是建立連線。tcp的幾次握手就是通過這樣的ack表現出來的。但syn與fin是不會同時為1的,因為前者表示的是建立連線,而後者表示的是斷開連線。rst一般是在fin之後才會出現為1的情況,表示的是連線重置。一般地,當出現fin包或rst包時,我們便認為客戶端與伺服器斷開了連線;而當出現syn和syn+ack包時,我們認為客戶端與伺服器建立了乙個連線。psh為1的情況,一般只出現在data內容不為0的包中,也就是說psh為1表示的是有真正的tcp資料報內容被傳遞。tcp的連線建立和連線關閉,都是通過請求-響應的模式完成的。
TCP三次握手過程
幾個概念 ack 僅當ack 1時確認欄位才有效,當ack 0時確認字段無效,並且tcp規定,在連線建立後所有的傳送報文段都必須要把ack置為1 syn 同步序列號,用來發起乙個連線。當syn 1而ack 0時表明這是乙個請求報文段 若對方同意連線,則響應報文中syn 1,ack 1 tcp三次握手...
TCP三次握手過程
握手過程主要使用tcp協議的標誌flag syn和ack 傳送端 將乙個標有syn synchronize 的資料報傳送至接收端。接收端 接收到帶有syn的資料報後,返回乙個標有syn ack acknowledgement 的資料報 傳送端 收到後傳送標有ack的資料報,代表握手結束。如果握手過程...
TCP三次握手過程
本次只是分析了三次握手,其他更具體的過程可以看看這篇文章,絕對大有收穫。開局一張圖 一目了然就沒必要看接下來的廢話了!第一次握手,建立連線。客戶端傳送連線請求報文段,將syn置1序號seq x。客戶端進入syn send狀態,等待伺服器進行確認。第二次握手 伺服器接收到syn報文段,對這個報文段進行...