三次握手建立失敗的幾種情況以及三次握手的理解

在這里插入圖片描述
上面的圖是阻塞式socket進行通信的過程,阻塞的時候是操作系統內核網絡協議棧在工作

調用 connect 函數將激發 TCP 的三次握手過程,而且僅在連接建立成功或出錯時才返回。其中出錯返回可能有以下幾種情況:
1、三次握手無法建立,客戶端發出的 SYN 包沒有任何響應,于是返回 TIMEOUT 錯誤。這可能是對應的服務端 IP 寫錯
2、客戶端收到了 RST(復位)回答,這時候客戶端會立即返回 CONNECTION REFUSED 錯誤。。這可能是客戶端發送連接請求時的請求端口寫錯。
產生 RST 的三個條件是:
目的地為某端口的 SYN 到達,然而該端口上沒有正在監聽的服務器。
TCP 想取消一個已有連接。
TCP 接收到一個根本不存在的連接上的分節。
3、客戶發出的 SYN 包在網絡上引起了"destination unreachable",即目的不可達的錯誤。這可能是客戶端和服務器端路由不通

關于三次握手問題的本質是, 信道不可靠, 但是通信雙發需要就某個問題達成一致. 而要解決這個問題, 無論你在消息中包含什么信息, 三次通信是理論上的最小值. 所以三次握手不是TCP本身的要求, 而是為了滿足"在不可靠信道上可靠地傳輸信息"這一需求所導致的。
客戶端第一次發送握手消息到服務端,
服務端接收到握手消息后把ack和自己的syn一同發送給客戶端,這是第二次握手,
當客戶端接收到服務端發送來的第二次握手消息后,客戶端可以確認“服務端的收發能力OK,客戶端的收發能力OK”,但是服務端只能確認“客戶端的發送OK,服務端的接收OK”,
所以還需要第三次握手,客戶端收到服務端的第二次握手消息后,發起第三次握手消息,服務端收到客戶端發送的第三次握手消息后,就能夠確定“服務端的發送OK,客戶端的接收OK”,
至此,客戶端和服務端都能夠確認自己和對方的收發能力OK,,tcp連接建立完成。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376751.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376751.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376751.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

db_name,instance_name,service_names,db_domain,dbid,oracle_sid等區別與聯系

最近整理了一篇文章:oracle listener 有網友對數據庫是否顯式設置了instance_name和service_names提出疑問。 由此引發出db_name,instance_name,oracle_sid等等這些常見的參數都代表什么意思,怎么取值的,有什么區別? SQL> sele…

檢測版本更新

如果我們要檢測app版本的更新,那么我們必須獲取當前運行app版本的版本信息和appstore 上發布的最新版本的信息。 當前運行版本信息可以通過info.plist文件中的bundle version中獲取: [cpp] view plaincopy NSDictionary *infoDic [[NSBundle mainBundle…

linux 啟動/關閉多個py腳本

后臺運行腳本 需求:很多時候我們會在 linux 服務器上執行 python 腳本,然而腳本程序執行的時間可能比較長,當耗時過長的情況下,我們使用 ssh 遠程登錄到 linux 服務器上容易造成超時自動斷開連接,當用戶注銷時&#x…

在熟練使用2B鉛筆前,請不要打開Axure

在互聯網產品領域,Axure已成為產品經理、產品設計師以及交互設計師的必備工具,從某種程度講,Axure幫助我們建立低保真模型,便于與用戶的需求驗證,也幫助我們構思交互細節,使前端和開發人員更容易理解我們的…

啟用isqlplus

iSQL*Plus是sqlplus基于web方式發布的,要使用它只要在服務器上開啟即可: [oraclelocalhost ~]$ isqlplusctl start perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE (unset), LC_ALL (unset)…

YUI 的模塊信息配置優先級關系梳理

背景 YUI的配置參數較多, 可以在好幾個地方配置一個module的相關信息, 如: //在全局配置, 所以YUI實例共享 YUI_config {modules: {w-autcomplete: {requires: [module1],path: test1.js,}},groups: {modules: {w-autocomplete: …

echarts 怎么知道鼠標點擊的哪根柱子

有個需求,點擊柱子,然后得到該柱子的信息,然后展示這個機房的時序圖。 第一步卡住了,就是不知道如何獲取柱子的序號。后參考:https://blog.csdn.net/zt_fucker/article/details/72461572?utm_sourceblogxgwz1 得到思路…

Oracle經典sql語句總結@sql-plus重點函數串講與sql語句案例@中文排序詳講).doc

1.經典的select sql語句 //注意:包含空值的數學表達式求出的結果為空值 SQL> select salcomm from emp; //連接員工編號與員工姓名這兩個字段 SQL> select empno||ename as "員工編號和員工姓名" from emp; //查詢去掉重復行的員工部門編號 SQL>…

C++模板簡單分析與舉例

C模板簡單分析與舉例 #pragma once #include <iostream> /*/ C 模板 /*/ /* --- 函數模板 --- */ /// 聲明 template <typename T1, typename T2> void TFunc(T1, T2); /// 一般定義 template <typename T1, typename T2> void TFunc(T1, T2) { std::cout &l…

flash builder4.7 for Mac升級AIRSDK詳解

使用flash builder 打包ANE時或者打包ipa時候常常會遇到AIRSDK版本低的問題&#xff0c;然而flash builder4.7默認使用的AIRSDK是3.4而flash builder4.7 中 Flex SDK中默認的AIRSDK是3.1,大家可能有疑問怎么有二個AIRSDK。我的理解是Flex SDK中的AIRSDK是低版本&#xff0c;低版…

echarts formatter鼠標懸停顯示信息

由于echarts中柱狀圖&#xff0c;鼠標放上去默認顯示的是x軸名稱以及y軸值。 而我現在需要再添加一些顯示信息。 下面是操作&#xff1a; 在tooltip對象中補充trigger: “axis”,屬性&#xff0c;然后再設置formatter。 tooltip : {formatter: function (params) {// do some …

codeforces 261 D

題目鏈接&#xff1a; 解題報告&#xff1a;給出一個序列a1,a2,a3.........an&#xff0c;f(i , j ,x) ak 等于x的個數(i < k < j)&#xff0c;令i < j&#xff0c;求有多少對 i 和 j 使得 f(1,i,ai) > f(j,n,aj)。 從左往右掃一遍這個序列&#xff0c;num1[i] 等于…

javascript下漢字和Unicode編碼互轉代碼

近日在為網站做一資料功能&#xff0c;這些顯示在頁面上面的文字數據都是存放在js文件裏面的&#xff0c;由於這些js文件裏面的中文都是經過unicode編碼的&#xff0c;頁面上顯示是沒有問題的&#xff0c;問題是我做的網站是繁體中文&#xff0c;而js文件裏面的中文數據是簡體中…

python 線程異步執行踩坑

有個需求&#xff0c;一個線程在得到n個數據之后&#xff0c;異步地執行一個子線程函數&#xff0c;在子線程函數中完成數據庫的打開、寫入數據、關閉操作。在子線程函數返回前父線程先返回結果。 在此之前&#xff0c;先導入我們需要的模塊&#xff1a; from concurrent.futu…

關于window.history.back()后退問題

Windows下的window.history.back()后退后返回的不僅僅是前一個頁而是前一個頁的狀態。假設一個頁我改動了3次那必須后退3次才干回到前一個頁。并且數據庫中刪除的數據依舊顯示在上面感覺很的不有用。 解決的方法&#xff1a;history.back()后再加一個reload()這樣就能夠回到刷新…

每日英語:Smog Levels in Hong Kong Hit Highs

Hong Kong’s pollution levels hit nearly decade-level highs this week, sending locals scurrying inside and obscuring the city’s skyline behind a blanket of white. scurry&#xff1a;急跑&#xff0c;急趕    In the city’s central business district, road…

轉載 | pymysql.err.InterfaceError: (0, ‘‘)解決辦法

導致這個錯誤的原因是通過pymysql連接MySQL&#xff0c;沒有關閉連接的操作&#xff0c;所以短時間內不會出問題&#xff0c;長時間保持這個連接會出現連接混亂。雖然看著自己的代碼沒錯&#xff0c;還是會報 pymysql.err.InterfaceError: (0, ‘’)錯誤。所以這個連接要么連上…

不使用物理引擎,自己動手做真實物理的模擬投籃游戲

最近打算做一個2D投籃游戲&#xff0c;由于對于BOX2D等物理引擎并不熟悉&#xff0c;加之一開始低估了游戲所需要的碰撞檢測復雜度&#xff0c;認為僅僅涉及4面墻&#xff0c;籃球&#xff0c;籃板&#xff0c;籃筐&#xff0c;籃網的碰撞檢測并不復雜。因此決定自己實現所需要…

GoldenGate DDL雙向復制

繼續上一篇的實驗。 節點說明&#xff1a; dd1(源庫)--->>kf2(目標庫) dd1(目標庫)<<---kf2(源庫) 在配置反向復制過程中&#xff0c;可暫時把源庫和目標庫調換位置&#xff0c;配置基本上雷同。 但在官網上有說明要注意的一個地方&#xff1a; Do ei…

轉載|pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0

原文鏈接&#xff1a;https://www.cnblogs.com/heiao10duan/p/9373237.html 原因&#xff1a; 使用了多線程&#xff0c;多線程共享了同一個數據庫連接&#xff0c;但每個execute前沒有加上互斥鎖 方法&#xff1a; 方法一&#xff1a;每個execute前加上互斥鎖 lock.acquire…