色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

要是沒有一端進行監(jiān)聽是否可以建立起TCP連接呢?

冬至子 ? 來源:Linux碼農(nóng) ? 作者:Linux碼農(nóng) ? 2022-11-16 17:42 ? 次閱讀

在 TCP 網(wǎng)絡(luò)通信過程中,我們都是先有 server 端調(diào)用 listen 監(jiān)聽某個端口號,然后 client 向 server 發(fā)起連接請求,最終建立起連接。

那么,要是沒有一端進行監(jiān)聽,是否可以建立起 TCP 連接呢?

對于 TCP 來講,一條鏈路的建立是通過三次握手來完成,而三次握手的過程是由內(nèi)核完成的,顯然三次握手應(yīng)用程序是無法干擾的。

因此我們可能會想到使用原始套接字來接收 IP 報文,通過應(yīng)用層來構(gòu)造三次握手報文來完成三次握手的過程,但是該方法是行不通的,因為原始套接字在收到對端的回應(yīng)報文 syn+ack 報文時,系統(tǒng)會自動給對端回應(yīng) RST 報文中斷連接。 該現(xiàn)象原來的文章分析過,本文不在分析。若要實現(xiàn)套接字的三次握手成功,需要解決系統(tǒng)自動回應(yīng) RST 報文,比如通過 iptable 過濾掉 RST 報文。

在TCP的三次握手中,client 收到對端回應(yīng)的 syn+ack 報文后,之所以能找到對應(yīng)的套接口,是因為在 connect 時根據(jù)端口號把套接字加入到 tcp_hashinfo.ehash 的 hash 表中。而原始套接字會自動回復(fù) RST 報文,就是沒有在 hash 表中加入套接字,導(dǎo)致找不到套接字。

因此我們可以得到,只要避免找不到套接字就可以完成鏈路的建立。所以,兩端同時打開套接字也可完成鏈路的建立,并不需要其中一端進行 listen。

同時連接

測試步驟就是2臺機器各自綁定一個本地地址和端口號,然后同時向?qū)Χ私壎ǖ亩丝诎l(fā)送connect 請求,具體例子不再貼出。

在同時連接中,兩端同時發(fā)送 SYN 報文而進入 SYN_SENT 狀態(tài);當(dāng)每一端收到 SYN 后狀態(tài)變?yōu)?SYN_RCVD, 發(fā)送 SYN 并對收到的 SYN 進行確認(rèn);當(dāng)雙方都收到對端的 SYN 及相應(yīng)的 ACK, 狀態(tài)變遷為 ESTABLISHED。狀態(tài)變遷過程如下:

圖片

以上是兩端互相 connect 完成鏈路的建立,若要去掉兩端,我們也可以實現(xiàn)connect 本端綁定的IP和端口號。

使用 nc 測試一個 自己連接自己的 TCP 連接

# nc 10.115.20.30 1234 -p 1234

# netstat -anp | grep 1234
tcp    0    0  10.115.20.30:1234  10.115.20.30:1234  ESTABLISHED 2050/nc

上述可以看到源端口號等于目的端口號,并且也完成鏈路的建立。

# strace nc 10.115.20.30 1234 -p 1234
execve("/usr/bin/nc", ["nc", "10.115.20.30", "1234", "-p", " 1234"], [/* 31 vars */]) = 0
brk(NULL)                               = 0x23d4000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f213f394000

...

munmap(0x7f213f393000, 4096)            = 0
open("/usr/share/ncat/ca-bundle.crt", O_RDONLY) = -1 ENOENT (No such file or directory)
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(3, {sa_family=AF_INET, sin_port=htons(1234), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
//bind后直接就是connect,并沒有進行listen
connect(3, {sa_family=AF_INET, sin_port=htons(1234), sin_addr=inet_addr("10.115.20.30")}, 16) = -1 EINPROGRESS (Operation now in progress)
select(4, [3], [3], [3], {10, 0})       = 1 (out [3], left {9, 999998})
getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
select(4, [0 3], [], [], NULL

從跟蹤結(jié)果來看,自己連接自己(公用同一個socket)完成了鏈路的建立。

自己連接自己只是同時連接中的一個特例。

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SYN
    SYN
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    8204
  • RST
    RST
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    7403
  • TCP通信
    +關(guān)注

    關(guān)注

    0

    文章

    146

    瀏覽量

    4243
收藏 人收藏

    評論

    相關(guān)推薦

    如何標(biāo)識TCP連接

    tcp應(yīng)用中,server事先在某個固定端口監(jiān)聽,client主動發(fā)起連接,經(jīng)過三路握手后建立tcp
    的頭像 發(fā)表于 10-10 10:33 ?2994次閱讀

    進行開環(huán)分析時,Aol(開環(huán)增益)曲線與1/β(噪聲增益)曲線的交點頻率如何用等式建立起來?

    如上圖電路所示,在進行開環(huán)分析時,Aol(開環(huán)增益)曲線與1/β(噪聲增益)曲線的交點頻率如何用等式建立起來?
    發(fā)表于 08-15 08:17

    關(guān)于LabVIEW的TCP偵聽VI的遠(yuǎn)程地址解析

    1、TCP偵聽.VI 的遠(yuǎn)程地址解析為真時 TCP連接時 會發(fā)送以下命令 共會有三次 連接建立起
    發(fā)表于 09-28 19:54

    C語言和ASM語言是怎么建立起來的聯(lián)系?

    = &Vout;在中斷程序中,有下面的說明; publish Terminal Pointers for access from the C environment.def_ADCDRV_1ch_Rlt:n:C語言和ASM語言是怎么建立起來的聯(lián)系?
    發(fā)表于 06-09 14:51

    BUCK電路的輸出電壓過程是如何建立起來的

    BUCK電路的輸出電壓過程是如何建立起來的?DCDC降壓芯片有哪些功能?
    發(fā)表于 10-14 15:09

    怎樣通過將兩臺筆記本電腦建立起串口連接

    本文通過將兩臺筆記本電腦,借助u***轉(zhuǎn)rs232 模塊和杜邦線,建立起串口連接。然后用串口助手等工具軟件將臺筆記本上的個大文件傳輸?shù)搅硗?b class='flag-5'>一
    發(fā)表于 12-21 06:33

    CH32V307里的TCP協(xié)議棧可以同時創(chuàng)建TCP監(jiān)聽TCP連接嗎?

    CH32V307里的TCP協(xié)議棧可以同時創(chuàng)建TCP監(jiān)聽TCP連接嗎?
    發(fā)表于 09-29 09:54

    CH395作為TCP客戶連接電腦TCP服務(wù)的時間很長怎么解決?

    CH395作為TCP客戶,電腦作為TCP服務(wù),第連接時很快就能
    發(fā)表于 10-14 06:09

    大神告訴你TCP建立連接為什么是三次握手

    所謂三次握手(Three-Way Handshake)即建立TCP連接,是指建立TCP
    的頭像 發(fā)表于 04-16 11:43 ?1w次閱讀
    大神告訴你<b class='flag-5'>TCP</b><b class='flag-5'>建立</b><b class='flag-5'>連接</b>為什么是三次握手

    如何使用TCP連接HTTP詳細(xì)資料說明

    到可能運行在世界任何地方的服務(wù)器應(yīng)用程序。連接建立起來了,在客戶 和服務(wù)器的計算機之間交換的報文就永遠(yuǎn)不會丟失、受損或失序。
    的頭像 發(fā)表于 04-06 14:05 ?4189次閱讀
    如何使用<b class='flag-5'>TCP</b><b class='flag-5'>連接</b>HTTP詳細(xì)資料說明

    新華三與海信合作建立起道守護數(shù)據(jù)和應(yīng)用安全的“生命線

    為此,海信在轉(zhuǎn)型路上選擇與紫光股份旗下新華三合作。通過細(xì)致的調(diào)研、深厚的知識儲備和全生命周期的服務(wù)能力,新華三攜手海信構(gòu)建起了個更加高效可靠的容災(zāi)體系,打贏了場業(yè)務(wù)連續(xù)性“保衛(wèi)戰(zhàn)”,建立起
    的頭像 發(fā)表于 06-23 10:13 ?1412次閱讀

    沒有accept,能建立TCP連接嗎?

    服務(wù)代碼,對socket執(zhí)行bind方法可以綁定監(jiān)聽端口,然后執(zhí)行l(wèi)isten方法后,就會進入監(jiān)聽(LISTEN)狀態(tài)。內(nèi)核會為每個處于
    的頭像 發(fā)表于 08-05 10:37 ?830次閱讀

    ESP8266模組的TCP編程

    TCP 編程分為客戶和服務(wù)器兩個部分,其中服務(wù)器首先建立起 socket,然后與本地端口進行
    的頭像 發(fā)表于 04-24 11:02 ?1145次閱讀
    ESP8266模組的<b class='flag-5'>TCP</b>編程

    TCP連接建立與中止

    常重要的 。 TCP 連接建立可以簡單地稱為三次握手,而連接的中止則可以稱為四次揮手。
    的頭像 發(fā)表于 10-08 16:52 ?755次閱讀

    TCP連接建立中的異常

    ? ? 建連接時SYN超時問題 如果 server 因為某種情況沒有收到 client 回來的 ACK,那么,這個連接處還處于個未
    的頭像 發(fā)表于 10-08 17:01 ?810次閱讀
    主站蜘蛛池模板: 久久久久久久免费| 伦理在线影院伦理电影| 疯狂小护士| 国产成人免费高清在线观看| 成年人视频在线免费播放| 成年人国产视频| 国产成人精品久久一区二区三区| 国产精品久久大陆| 国语自产视频在线不卡| 九色PORNY蝌蚪视频首页| 久久亚洲精品无码A片大香大香| 麻豆天美国产一区在线播放| 欧美 国产 日产 韩国 在线| 日本无码人妻精品一区二区视频| 受坐在攻腿上H道具PLAY| 亚洲精品久久午夜麻豆| 在线观看免费小视频| av天堂网2017avtt| 纲手裸乳被爆白浆| 国自产拍 高清精品| 狂野欧美性猛XXXX乱大交| 秋霞电影网伦大理电影在线观看 | 19不插片免费视频| thermo脱色摇床安卓下载| 国产精品无码无卡毛片不卡视| 九九热视频 这里有精品| 暖暖日本免费播放| 网址在线观看你懂我意思吧免费的| 亚洲人成7777| ae58老司机福利| 国产女合集小岁9三部| 快播h动漫网| 涩涩在线观看免费视频| 亚洲三级视频| tube69hdxxxx日本| 国产午夜高潮熟女精品AV| 久久精品观看影院2828| 日本无码人妻丰满熟妇5G影院| 亚洲精品久久久午夜福利电影网| 97在线视频免费观看97| 国产精品资源网站在线观看|