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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

TCP 三次握手过程详解

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

TCP(Transmission Control Protocol) 傳輸控制協議

TCP:面向連接的,可靠的,基于字節流的傳輸層通信協議

TCP(傳輸層)位于IP層(網絡層)之上,應用層之下,不同的主機之間需要可靠的連接,但IP層不提供這樣的流機制,而是提供不可靠的包交換。

?

在可靠性上:采用超時重傳和捎帶確認機制;

在流量控制上:采用滑動窗口協議;

在擁塞控制上:TCP擁塞控制算法;

?

TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,采用三次握手確認建立一個連接;

TCP功能如下:通過端對端檢錯與糾錯提供可靠的數據傳輸,保證數據在網絡中正確的傳輸并按照恰當的順序到達目的的節點,重傳目的節點沒有收到的任何數據,防止接受重復的數據報文;

TCP被稱為一個端對端的服務,兩端之間是一個Internet網,建立連接,必須經過‘三次握手’,即三次數據交換;廣播和多播不能用于TCP;

?

TCP端口:16位端口表示進程的地址,其中小于1024的端口稱為熟知端口,分配給固定進程;

位碼:即tcp標志位,有6種標示: SYN(synchronous建立聯機) ACK(acknowledgement 確認)??PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)

??????????

????????? Sequence number(順序號碼) Acknowledge number(確認號碼)

第一次握手:主機A發送位碼為syn=1,隨機產生seq number=1234567的數據包到服務器,主機B由SYN=1知道,A要求建立聯機;A進入SYN_SEND階段;

第二次握手:主機B收到請求后要確認聯機信息,向A發送ack number=(主機A的seq+1),syn=1,ack=1,隨機產生seq=7654321的包;B進入SYN_RECV狀態;

第三次握手:主機A收到后檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ack是否為1,若正確,主機A會再發送ack number=(主機B的seq+1),ack=1,主機B收到后確認seq值與ack=1則連接建立成功。進入建立狀態;

完成三次握手,主機A與主機B開始傳送數據。

?

在TCP/IP協議中,TCP協議提供可靠的連接服務,采用三次握手建立一個連接。

第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;?

第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;

第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。 完成三次握手,客戶端與服務器開始傳送數據.

?

實例:

IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836

IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837

IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1

?

第一次握手:192.168.1.116發送位碼syn=1,隨機產生seq number=3626544836的數據包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立聯機;

第二次握手:192.168.1.123收到請求后要確認聯機信息,向192.168.1.116發送ack number=3626544837,syn=1,ack=1,隨機產生seq=1739326486的包;

第三次握手:192.168.1.116收到后檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ack是否為1,若正確,192.168.1.116會再發送ack number=1739326487,ack=1,192.168.1.123收到后確認seq=seq+1,ack=1則連接建立成功。

?

轉自:http://blog.csdn.net/xubo_zhang/article/details/11900947/

==================================================================================================

==================================================================================================

三次握手又是什么?

TCP是面向連接的,無論哪一方向另一方發送數據之前,都必須先在雙方之間建立一條連接。在TCP/IP協議中,TCP協議提供可靠的連接服務,連接是通過三次握手進行初始化的。

三次握手的目的是同步連接雙方的序列號和確認號并交換 TCP窗口大小信息。這就是面試中經常會被問到的TCP三次握手

只是了解TCP三次握手的概念,對你獲得一份工作是沒有任何幫助的,你需要去了解TCP三次握手中的一些細節。先來看圖說話。

多么清晰的一張圖,當然了,也不是我畫的,我也只是引用過來說明問題了。

  • 第一次握手:建立連接。客戶端發送連接請求報文段,將SYN位置為1,Sequence Number為x;然后,客戶端進入SYN_SEND狀態,等待服務器的確認;
  • 第二次握手:服務器收到SYN報文段。服務器收到客戶端的SYN報文段,需要對這個SYN報文段進行確認,設置Acknowledgment Number為x+1(Sequence Number+1);同時,自己自己還要發送SYN請求信息,將SYN位置為1,Sequence Number為y;服務器端將上述所有信息放到一個報文段(即SYN+ACK報文段)中,一并發送給客戶端,此時服務器進入SYN_RECV狀態;
  • 第三次握手:客戶端收到服務器的SYN+ACK報文段。然后將Acknowledgment Number設置為y+1,向服務器發送ACK報文段,這個報文段發送完畢以后,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。
  • 完成了三次握手,客戶端和服務器端就可以開始傳送數據。以上就是TCP三次握手的總體介紹。

    那四次分手呢?

    當客戶端和服務器通過三次握手建立了TCP連接以后,當數據傳送完畢,肯定是要斷開TCP連接的啊。那對于TCP的斷開連接,這里就有了神秘的“四次分手”。

  • 第一次分手:主機1(可以使客戶端,也可以是服務器端),設置Sequence Number和Acknowledgment Number,向主機2發送一個FIN報文段;此時,主機1進入FIN_WAIT_1狀態;這表示主機1沒有數據要發送給主機2了;
  • 第二次分手:主機2收到了主機1發送的FIN報文段,向主機1回一個ACK報文段,Acknowledgment Number為Sequence Number加1;主機1進入FIN_WAIT_2狀態;主機2告訴主機1,我“同意”你的關閉請求;
  • 第三次分手:主機2向主機1發送FIN報文段,請求關閉連接,同時主機2進入LAST_ACK狀態;
  • 第四次分手:主機1收到主機2發送的FIN報文段,向主機2發送ACK報文段,然后主機1進入TIME_WAIT狀態;主機2收到主機1的ACK報文段以后,就關閉連接;此時,主機1等待2MSL后依然沒有收到回復,則證明Server端已正常關閉,那好,主機1也可以關閉連接了。
  • 至此,TCP的四次分手就這么愉快的完成了。

    ?

    轉載于:https://www.cnblogs.com/Allen-rg/p/6929373.html

    總結

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

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