日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一次经典的tcp三次握手

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一次经典的tcp三次握手 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TCP報頭

在三次握手中使用的字段:

32位序列號 seq:表示的是本次報文發送的數據的第一個字節的序號

32位確認號:ack ?表示期望下一次應該接受到的報文的第一個字節的序號,若ack = N則表示,到序號N-1為止的所有的數據都已經正確的收到了。

ACK位(圖中紅色部分,用ACK大寫表示ACK位,ack小寫表示確認號):確認,當ACK = 1是確認號ack才有效,建立連接后,所有傳送的報文段都必須把ACK置為1.

SYN位(圖中紅色部分):同部位,在建立連接的時候使用,若SYN=1,ACK=0,則表示是一個連接請求報文,若接收方同意接收連接,則使用SYN = 1,ACK = 1。所以,從上面可以看出來SYN = 1表示這個報文是一個連接請求或連接接收報文

三次握手的過程

A發送連接請求:A發送連接請求時,將SYN置為1,ACK置為0,seq取一個數x,ack取0(因為ACK為0,所以這個時候ack取值沒有意義),這個過程將消耗一個序號

B確認連接:若B同意A請求連接,則B發送的報文中,SYN = 1,ACK = 1,seq取一個數字y,ack取x +1,這個過程將消耗一個序號。seq取y和前面的過程沒有關系,ack取x+1是因為,A發送的數據seq為x,并且在發送的過程當中消耗了一個序號,所以,下一次應該收到的數據的地址為x+1,加的1就是消耗的一個序號。

A確認:A需要再次確認,SYN = 0,ACK = 1, seq = x + 1, ack = y + 1。 seq表示發送的數據的序號為x + 1,同時希望B下一次發送的數據的序號為y + 1。

一個例子

發送的第一個數據包

?在第一個包的時候SYN = 1,ACK = 1,seq的值為一個隨機的值,ack為0。

發送的第二個數據包

在第二個數據包的時候ACK = 1,SYN = 1,seq的值為一個隨機數,ack的值為上一個數據包的seq的值+1。

發送的第三個數據包

在第三個數據包中:SYN = 0,ACK = 1,seq的值為第一個數據包的seq的值+1,ack的值為第二個數據包的seq值+1。

?

總結一下

在三次握手的時候,有四個字段是非常重要的。SYN和ACK均占一位,表示同步和確認。seq和ack均為32位,分別為發送的數據的序號,和希望對方發送的數據的序號。

在三次握手的過程中,第一次和第二次的過程中SYN的值均為1,并且每個過程都消耗掉一個序號,消耗一個序號的意思是:使得數據的序號加1,好像是發送了一位數據,但是并沒有真正的傳遞數據。

參考:謝希仁 《計算機網絡》第六版

轉載于:https://www.cnblogs.com/jiaxin359/p/7634371.html

總結

以上是生活随笔為你收集整理的一次经典的tcp三次握手的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。