協議:網路協議為計算機網路中進行資料交換而建立的規則、標準或約定的集合。例如,網路中乙個微機使用者和乙個大型主機的操作員進行通訊,由於這兩個資料終端所用字符集不同,因此操作員所輸入的命令彼此不認識。為了能進行通訊,規定每個終端都要將各自字符集中的字元先變換為標準字符集的字元後,才進入網路傳送,到達目的終端之後,再變換為該終端字符集的字元。
tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線:
位碼即tcp標誌位,
有6種標示:
syn(synchronous建立聯機)
ack(acknowledgement 確認)
psh(push傳送)
fin(finish結束)
rst(reset重置)
urg(urgent緊急)
sequence number(順序號碼)
acknowledge number(確認號碼)
握手過程解析
(1)第一次握手
客戶端傳送乙個tcp的syn標誌位置1的包,指明客戶打算連線的伺服器的埠,以及初始序號x, 儲存在包頭的序列號(sequence number)欄位裡。
(2)第二次握手
伺服器發回確認包(ack)應答。即syn標誌位和ack標誌位均為1同時,將確認序號(acknowledgement number)設定為客戶的i s n加1以.即x+1。
(3)第三次握手
客戶端再次傳送確認包(ack) syn標誌位為0,ack標誌位為1.並且把伺服器發來ack的序號欄位+1,放在確定欄位中傳送給對方.並且在資料段放寫isn的+1
揮手過程解析
tcp的連線的拆除需要傳送四個包,因此稱為四次揮手(four-way handshake)。客戶端或伺服器均可主動發起揮手動作,在socket程式設計中,任何一方執行close()操作即可產生揮手操作。
(1)客戶端a傳送乙個fin,用來關閉客戶a到伺服器b的資料傳送(報文段4)。
(2)伺服器b收到這個fin,它發回乙個ack,確認序號為收到的序號加1(報文段5)。和syn一樣,乙個fin將占用乙個序號。
(3)伺服器b關閉與客戶端a的連線,傳送乙個fin給客戶端a(報文段6)。
(4)客戶端a發回ack報文確認,並將確認序號設定為收到序號加1(報文段7)。
為什麼建立連線協議是三次握手,而關閉連線卻是四次握手呢?
這是因為服務端的listen狀態下的socket當收到syn報文的建連請求後,它可以把ack和syn(ack起應答作用,而syn起同步作用)放在乙個報文裡來傳送。但關閉連線時,當收到對方的fin報文通知時,它僅僅表示對方沒有資料傳送給你了;但未必你所有的資料都全部傳送給對方了,所以你可以未必會馬上會關閉socket,也即你可能還需要傳送一些資料給對方之後,再傳送fin報文給對方來表示你同意現在可以關閉連線了,所以它這裡的ack報 文和fin報文多數情況下都是分開傳送的。
三次握手四次揮手協議
一 三次握手 三次握手用正常白話講就是 就這樣經過三次成功建立連線 至於為什麼要經過三報文握手建立連線呢?不是說只能這樣建立連線,只是因為這樣能避免很多建立連線的問題。它可以防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤。比如 client發出的第乙個連線請求報文段並沒有丟失,而是在某...
tcp協議三次握手 四次揮手
起初,伺服器和客戶端都為closed狀態。在通訊開始前,雙方都得建立各自的傳輸控制塊 tcb 伺服器建立完tcb後遍進入listen狀態,此時準備接收客戶端發來的連線請求。第一次握手 客戶端向服務端傳送連線請求報文段。該報文段的頭部中syn 1,ack 0,seq x。請求傳送後,客戶端便進入syn...
TCP協議三次握手四次揮手
1.什麼是tcp協議 tcp協議是作用在傳輸層的傳輸控制協議 tcp 提供一種面向連線的 可靠的位元組流服務 在乙個 tcp 連線中,僅有兩方進行彼此通訊。廣播和多播不能用於 tcp tcp 使用校驗和,確認和重傳機制來保證可靠傳輸 tcp 給資料分節進行排序,並使用累積確認保證資料的順序不變和非重...