相比較於udp傳輸協議,tcp傳輸協議被認為是安全可靠的,這是由於tcp協議的三次握手和四次揮手保證了資料傳輸的安全性。
tcp報文格式簡介
要了解tcp協議的三次握手和四次揮手,需要先了解在tcp協議中請求和響應的資料報報文格式。
在報文中有幾個值得注意的字段:
(1)序號:seq序號,佔32位,用來標識從tcp源端向目的地端傳送的位元組流;
(2)確認號:ack號,佔32位,期待收到對方下乙個報文段的第乙個資料位元組的序號;序列號表示報文段攜帶資料的第乙個位元組的編號;而確認號指的是期望接收到下乙個位元組的編號;只有ack標誌位為1時,確認序號欄位才有效,ack=seq+1;
(3)標誌位(flags):共6個,即urg、ack、psh、rst、syn、fin等,具體含義如下:
(a)urg:緊急指標(urgent pointer)有效,值為1時表示某一位需要優先處理。
(b)ack:確認序號有效,一般為1。
(c)psh:接收方應該盡快將這個報文交給應用層。
(d)rst:重置連線。
(e)syn:請求建立連線,並在其序列號的字段進行序列號的初始值設定。建立連線,設定為1。
(f)fin:傳送斷開連線請求。
三次握手
第一次握手:建立連線時,客戶端傳送syn包(syn=x)到伺服器,並進入syn_sent狀態,等待伺服器確認。
第二次握手:伺服器收到syn包,並確認客戶端的syn(ack=x+1),同時自己也傳送乙個syn包(syn=y),即syn+ack包,此時伺服器結束了listen狀態,進入syn_rcvd狀態;
第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=y+1),此包傳送完畢,客戶端和伺服器進入estab-lished(tcp連線成功)狀態,完成三次握手。
四次揮手
第一次揮手:客戶端傳送連線釋放報文fin=1,seq=u,並停止傳送資料,進入fin-wait-1狀態,但是,此時主動關閉方還可以接受資料。
第二次揮手:伺服器收到fin包後,發出確認報文,ack=1,ack=u+1,並且帶上自己的序列號seq=v,此時,伺服器端就進入了close-wait狀態,此時客戶端接收到確認報文後進入到fin-wait-2狀態。
第三次揮手:伺服器將資料傳送完畢後,向客戶端傳送乙個fin=1,ack=u+1,用來關閉伺服器到客戶端的資料傳送,也就是告訴客戶端,我的資料也傳送完了,不會再給你發資料了。
第四次揮手:客戶端收到fin後,必須發出確認,傳送乙個ack=1,自己的序列號seq=u+1,ack=w+1,然後進入時間等待狀態,等待最長報文壽命時間後,釋放tcp連線,服務在收到客戶端確認後,立即進入closed狀態。至此,完成四次揮手。
TCP三次握手 四次揮手
tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...
TCP三次握手 四次揮手
服務端的tcp程序先建立傳輸控制塊tcb,準備接受客戶端程序的連線請求,然後服務端程序處於listen狀態,等待客戶端的連線請求,如有,則作出響應。1 客戶端的tcp程序也首先建立傳輸控制模組tcb,然後向服務端發出連線請求報文段,該報文段首部中的syn 1,ack 0,同時選擇乙個初始序號seq ...
TCP三次握手四次揮手
tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。位碼即tcp標誌位,有6種標誌 urg urgent緊急 ack acknowledgement 確認 psh push傳送 rst...