国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

4.18 TCP 和 UDP 可以使用同一個端口嗎?

這篇具有很好參考價值的文章主要介紹了4.18 TCP 和 UDP 可以使用同一個端口嗎?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

TCP 和 UDP 可以同時綁定相同的端口嗎?

多個 TCP 服務(wù)進(jìn)程可以綁定同一個端口嗎?

重啟 TCP 服務(wù)進(jìn)程時,為什么會有“Address in use”的報錯信息?

重啟 TCP 服務(wù)進(jìn)程時,如何避免“Address in use”的報錯信息?

客戶端的端口可以重復(fù)使用嗎?

多個客戶端可以 bind 同一個端口嗎?

客戶端 TCP 連接 TIME_WAIT 狀態(tài)過多,會導(dǎo)致端口資源耗盡而無法建立新的連接嗎?

如何解決客戶端 TCP 連接 TIME_WAIT 過多,導(dǎo)致無法與同一個服務(wù)器建立連接的問題?


因為「監(jiān)聽」這個動作是在 TCP 服務(wù)端網(wǎng)絡(luò)編程中才具有的,而 UDP 服務(wù)端網(wǎng)絡(luò)編程中是沒有「監(jiān)聽」這個動作的。

TCP 和 UDP 服務(wù)端網(wǎng)絡(luò)相似的一個地方,就是會調(diào)用 bind 綁定端口。4.18 TCP 和 UDP 可以使用同一個端口嗎?,小林coding 計算機(jī)網(wǎng)絡(luò),tcp/ip,udp,php

4.18 TCP 和 UDP 可以使用同一個端口嗎?,小林coding 計算機(jī)網(wǎng)絡(luò),tcp/ip,udp,php

TCP 和 UDP 可以同時綁定相同的端口嗎?

在數(shù)據(jù)鏈路層中,通過 MAC 地址來尋找局域網(wǎng)中的主機(jī)。在網(wǎng)際層中,通過 IP 地址來尋找網(wǎng)絡(luò)中互連的主機(jī)或路由器。在傳輸層中,需要通過端口進(jìn)行尋址,來識別同一計算機(jī)中同時通信的不同應(yīng)用程序。

傳輸層的「端口號」的作用,是為了區(qū)分同一個主機(jī)上不同應(yīng)用程序的數(shù)據(jù)包。

傳輸層有兩個傳輸協(xié)議分別是 TCP 和 UDP,在內(nèi)核中是兩個完全獨(dú)立的軟件模塊。4.18 TCP 和 UDP 可以使用同一個端口嗎?,小林coding 計算機(jī)網(wǎng)絡(luò),tcp/ip,udp,php

多個 TCP 服務(wù)進(jìn)程可以綁定同一個端口嗎?

如果兩個 TCP 服務(wù)進(jìn)程同時綁定的 IP 地址和端口都相同,那么執(zhí)行 bind() 時候就會出錯,錯誤是“Address already in use”。

如果想多個進(jìn)程綁定相同的 IP 地址和端口,也是有辦法的,就是對 socket 設(shè)置 SO_REUSEPORT

重啟 TCP 服務(wù)進(jìn)程時,為什么會有“Address in use”的報錯信息?

當(dāng) TCP 服務(wù)進(jìn)程重啟時,服務(wù)端會出現(xiàn) TIME_WAIT 狀態(tài)的連接,TIME_WAIT 狀態(tài)的連接使用的 IP+PORT 仍然被認(rèn)為是一個有效的 IP+PORT 組合,相同機(jī)器上不能夠在該 IP+PORT 組合上進(jìn)行綁定,那么執(zhí)行 bind() 函數(shù)的時候,就會返回了 Address already in use 的錯誤。

而等 TIME_WAIT 狀態(tài)的連接結(jié)束后,重啟 TCP 服務(wù)進(jìn)程就能成功。

重啟 TCP 服務(wù)進(jìn)程時,如何避免“Address in use”的報錯信息?

對 socket 設(shè)置 SO_REUSEADDR 屬性

客戶端的端口可以重復(fù)使用嗎?

客戶端在執(zhí)行 connect 函數(shù)的時候,會在內(nèi)核里隨機(jī)選擇一個端口,然后向服務(wù)端發(fā)起 SYN 報文,然后與服務(wù)端進(jìn)行三次握手。

客戶端的端口選擇的發(fā)生在 connect 函數(shù),內(nèi)核在選擇端口的時候,會從?net.ipv4.ip_local_port_range?這個內(nèi)核參數(shù)指定的范圍來選取一個端口作為客戶端端口。

可用端口號 61000 - 32768 = 28232 個

TCP 連接是由四元組(源IP地址,源端口,目的IP地址,目的端口)唯一確認(rèn)的,那么只要四元組中其中一個元素發(fā)生了變化,那么就表示不同的 TCP 連接的。所以如果客戶端已使用端口 64992 與服務(wù)端 A 建立了連接,那么客戶端要與服務(wù)端 B 建立連接,還是可以使用端口 64992 的,因為內(nèi)核是通過四元祖信息來定位一個 TCP 連接的,并不會因為客戶端的端口號相同,而導(dǎo)致連接沖突的問題。

多個客戶端可以 bind 同一個端口嗎?

一般而言,客戶端不建議使用 bind 函數(shù),bind 函數(shù)雖然常用于服務(wù)端網(wǎng)絡(luò)編程中,但是它也是用于客戶端的。

客戶端是在調(diào)用 connect 函數(shù)的時候,由內(nèi)核隨機(jī)選取一個端口作為連接的端口。

要看多個客戶端綁定的 IP + PORT 是否都相同,如果都是相同的,那么在執(zhí)行 bind() 時候就會出錯,錯誤是“Address already in use”。

客戶端 TCP 連接 TIME_WAIT 狀態(tài)過多,會導(dǎo)致端口資源耗盡而無法建立新的連接嗎?

客戶端是否都是與同一個服務(wù)器(目標(biāo)地址和目標(biāo)端口一樣)建立連接,如果同一個服務(wù)器(目標(biāo)地址和目標(biāo)端口一樣)建立連接,那么如果客戶端 TIME_WAIT 狀態(tài)的連接過多,當(dāng)端口資源被耗盡,就無法與這個服務(wù)器再建立連接了。因為只要客戶端連接的服務(wù)器不同,端口資源可以重復(fù)使用的

如何解決客戶端 TCP 連接 TIME_WAIT 過多,導(dǎo)致無法與同一個服務(wù)器建立連接的問題?

打開?net.ipv4.tcp_tw_reuse?這個內(nèi)核參數(shù),

因為開啟了這個內(nèi)核參數(shù)后,客戶端調(diào)用 connect 函數(shù)時,如果選擇到的端口,已經(jīng)被相同四元組的連接占用的時候,就會判斷該連接是否處于 TIME_WAIT 狀態(tài),如果該連接處于 TIME_WAIT 狀態(tài)并且 TIME_WAIT 狀態(tài)持續(xù)的時間超過了 1 秒,那么就會重用這個連接,然后就可以正常使用該端口了。文章來源地址http://www.zghlxwxcb.cn/news/detail-681122.html

到了這里,關(guān)于4.18 TCP 和 UDP 可以使用同一個端口嗎?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包