1. 程式人生 > >tcp二次、三次、四次握揮手

tcp二次、三次、四次握揮手

轉載地址:http://blog.chinaunix.net/uid-26826958-id-3157048.html
為什麼tcp建立連線是三次握手而不是兩次或四次,釋放連線的時候是四次揮手
由於TCP連線是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的資料傳送任務後就能傳送一個FIN來終止這個方向的連線。收到一個 FIN只意味著這一方向上沒有資料流動,一個TCP連線在收到一個FIN後仍能傳送資料。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。客戶端是主動傳送連線的,服務端是被動接受連線的。 1. TCP的三次握手最主要是防止已過期的連線再次傳到被連線的主機。 如果採用兩次的話,會出現下面這種情況。 比如是A機要連到B機,結果傳送的連線資訊由於某種原因沒有到達B機; 於是,A機又發了一次,結果這次B收到了,於是就發信息回來,兩機就連線。 傳完東西后,斷開。 結果這時候,原先沒有到達的連線資訊突然又傳到了B機,於是B機發資訊給A,然後B機就以為和A連上了,這個時候B機就在等待A傳東西過去。 2. 三次握手改成僅需要兩次握手,死鎖是可能發生
考慮計算機A和B之間的通訊,假定B給A傳送一個連線請求分組,A收到了這個分組,併發送了確認應答分組。按照兩次握手的協定,A認為連線已經成功地建立了,可以開始傳送資料分組。可是,B在A的應答分組在傳輸中被丟失的情況下,將不知道A是否已準備好,不知道A建議什麼樣的序列號,B甚至懷疑A是否收到自己的連線請求分組。在這種情況下,B認為連線還未建立成功,將忽略A發來的任何資料分組,只等待連線確認應答分組。而A在發出的分組超時後,重複傳送同樣的分組。這樣就形成了死鎖 3.為什麼建立連線是三次握手,而關閉連線是四次呢? 建立連線時,服務端可以把應答ACK和同步SYN放在一個報文裡進行傳送。而關閉連線時,收到FIN通知僅僅表示對方沒有資料傳送過來了,並不表示自己的資料全部發送給了對方。所以ACK和FIN是分了兩次進行傳送。如果服務端收到FIN,恰恰自己也沒有資料要發,是不是ACK和FIN可以一起發給客戶端呢,這樣就可以少一次資料流了。經典的TCP連線狀態圖中考慮到了這種情況,tcp關閉連線確實是只有三次資料流動,服務端將ACK和FIN放在一個包裡進行傳送,但四次握手這個概念卻已經根深蒂固無法更改了。

相關推薦

css中margin標記可以帶一個個引數,各有不同的含義

         在css中使用margin可以將margin-top,margin-right,margin-bottom,margin-left,縮寫為一個標記,順序為上右下左(順時針)。帶不同的引數具有不同的含義,

遞迴求解走臺階問題,一可以走一步兩步...n步(經典面試題——增強版走臺階)

1、問題描述       現在有一個臺階,一共有n階,你一次性可以走1步、2步、3步、......、n步。問:一共有多少種走法。 2、求解思路       第一步走1階:那麼這種情況下的走法數量和剩下n-1階的走法數量有關;

Wireshark抓包示範:TCP握手建立連線和握手斷開連線

以下內容來自網路資源整合,僅供自己記錄,日後檢視方便。 首先介紹Wireshark抓包工具,它長這樣: 下面我們要設定過濾規則: 按如下設定,主要設定: 1、需要監控的網絡卡; 2、過濾規則(圖示是“HTTP TCP port(80)”,即只監控TCP連線):

【網路】TCP握手建立連線和揮手釋放連結

TCP協議 TCP報文格式 TCP建立連線的過程   (1)Client將標誌位SYN置為1,隨機產生一個值seq=J,並將該資料包傳送給Server,Client進入SYN_SENT狀態,等待Se

TCP握手和揮手過程以及連線為什麼使用連線,釋放使用

TCP三次握手: 第一次握手:客戶端A傳送位碼為SYN=1,隨機產生序號seq=123的資料包到伺服器B,伺服器B由SYN=1知道,A                       要求建立聯機; 第二次握手:伺服器B收到請求後要確認聯機資訊,向A傳送ACK=1,SYN=1

TCP/IP詳解--TCP握手建立連線與握手終止連線

1.TCP連線的建立 (1)首先是伺服器初始化的過程,從CLOSED(關閉)狀態開始通過順序呼叫SOCKET、BIND、LISTEN和ACCEPT原語建立Socket套接字,進入LISTEN(監聽)狀態,等待客戶端的TCP傳輸連線請求。      (2)客戶端最開始也是從CLOSED狀態開始呼叫SOCKET

TCP為什麼要握手而結束要

舉個打電話的例子:   A : 你好我是A,你聽得到我在說話嗎   B : 聽到了,我是B,你聽到我在說話嗎   A : 嗯,聽到了   建立連線,開始聊天! 簡單而言:如果不是三次握手的話,那麼到底需要幾次握手最佳呢?2次握手,或者4次以上的握手?

知識:層交換機區別

二層交換技術是發展比較成熟,二層交換機屬資料鏈路層裝置,可以識別資料包中的MAC地址資訊,根據MAC地址進行轉發,並將這些MAC地址與對應的埠記錄在自己內部的一個地址表中。具體的工作流程如下:   (1) 當交換機從某個埠收到一個數據包,它先讀取包頭中的源MAC地址,這樣

TCP建立連線握手和釋放連線握手

TCP的報文結構如下下所示:序列號seq:佔4個位元組,用來標記資料段的順序,TCP把連線中傳送的所有資料位元組都編上一個序號,第一個位元組的編號由本地隨機產生;給位元組編上序號後,就給每一個報文段指派

網路TCP建立連線為什麼需要握手而結束要

 舉個打電話的例子:   A : 你好我是A,你聽得到我在說話嗎   B : 聽到了,我是B,你聽到我在說話嗎   A : 嗯,聽到了   建立連線,開始聊天! 為什麼TCP協議終止連結要四次? 1、當主機A確認傳送完資料且知道B已經接受完了,想

層交換機的區別

二層交換技術是發展比較成熟,二層交換機屬資料鏈路層裝置,可以識別資料包中的MAC地址資訊,根據MAC地址進行轉發,並將這些MAC地址與對應的埠記錄在自己內部的一個地址表中。具體的工作流程如下:  (1) 當交換機從某個埠收到一個數據包,它先讀取包頭中的源MAC地址,這樣它就知道源MAC地址的機器是連在哪個埠上

TCP握手建連以及揮手斷連詳解

這是我見過最詳盡的TCP三次握手以及四次斷連的文章,文末已註明出處,若有冒犯,請通知,將會刪除。 不過,其中加入了我自己的理解,試著讓文章更加完善,做了一定的補充工作。增加了實際應用中的注意事項,做到知其然,更知其所以然的效果。 一. TCP/IP協議族      

層交換機的區別!!

二層交換技術是發展比較成熟,二層交換機屬資料鏈路層裝置,可以識別資料包中的MAC地址資訊,根據MAC地址進行轉發,並將這些MAC地

Ex 2_25 n位十進制整數轉換為進制形式..._第作業

運行時 es2017 整數 cnblogs 二進制 .cn http bsp alt (a) 當n=1時,(10)d=(1010)b 當n=2時,(100)d=(10)d x (10)d=(1010)b x (1010)b 當n=4時,(

周第課(12月28日)

linux 三周第四次課(12月28日)4.1 df命令df -h 根據磁盤大小適當顯示單位(Byte KB MB GB TB)df -m 以m為單位顯示帶有tmpfs的都是臨時的文件系統,即使在這個掛載點裏寫了東西,重啟也會消失。/dev/shm是內存,寫東西快用free查看swapdf -i 查看分區下有

周第課 4.1 df命令 4.2 du命令 4.3/4.4 磁盤分區

df du 磁盤分區 4.1 df命令1、df命令查看磁盤情況命令查看inodes4.2 du命令1、du命令du命令查看目錄的大小4.3/4.4 磁盤分區磁盤分區使用fdisk 命令進行查看重啟後能識別出硬盤三周第四次課 4.1 df命令 4.2 du命令 4.3/4.4 磁盤分區

周第課(2月8日)

spa pat ebo 保存 partition type 工具 4.0 分區命令 4.1 df命令4.2 du命令4.3/4.4 磁盤分區 4.1 df命令df查看文件系統的實際情況#df文件系統 1K-塊 已用 可用 已用% 掛載點/de

周第課(2月8日)

磁盤 watermark nodes size 分享圖片 mark ces image ffffff 三周第四次課(2月8日)4.1df命令4.2du命令4.3/4.4磁盤分區 4.1df命令 用命令man查df的說明文檔 命令df 命令df -h 命令df -i:查看in

Linux學習筆記第周第課(2月8日)

虛擬機 添加磁盤 acer cto process ued fault print rep 4.1 df命令df,report file system disk space usage匯報文件系統磁盤空間使用情況;df命令格式:df [選項]df -a:all 顯示所有文件

周第

df du fdisk 4.1 df命令df -i輸出文件系統的 inode 信息,如果iNode滿了,即使有空間也不能存儲df -h以人類易讀的格式輸出df -a顯示所有文件系統的磁盤使用情況df -h /boot顯示特定文件系統已使用的空間df -T輸出所有已掛載文件系統的類型df -k按