TCP 和 UDP 绑定同一端口通信的解释
在印象當(dāng)中我記得是可以的,今日google了相關(guān)資料,
確定以及肯定的:
TCP、UDP可以綁定同一端口來(lái)進(jìn)行通信:
?
??????網(wǎng)絡(luò)中可以被命名和尋址的通信端口,是操作系統(tǒng)可分配的一種資源。?
??????按照OSI七層協(xié)議的描述,傳輸層與網(wǎng)絡(luò)層在功能上的最大區(qū)別是傳輸層提供進(jìn)程通信能力。從這個(gè)意義上講,網(wǎng)絡(luò)通信的最終地址就不僅僅是主機(jī)地址了,還包括可以描述進(jìn)程的某種標(biāo)識(shí)符。為此,TCP/IP協(xié)議提出了協(xié)議端口(protocol???port,簡(jiǎn)稱端口)的概念,用于標(biāo)識(shí)通信的進(jìn)程。?
??????端口是一種抽象的軟件結(jié)構(gòu)(包括一些數(shù)據(jù)結(jié)構(gòu)和I/O緩沖區(qū))。應(yīng)用程序(即進(jìn)程)通過(guò)系統(tǒng)調(diào)用與某端口建立連接(binding)后,傳輸層傳給該端口的數(shù)據(jù)都被相應(yīng)進(jìn)程所接收,相應(yīng)進(jìn)程發(fā)給傳輸層的數(shù)據(jù)都通過(guò)該端口輸出。在TCP/IP協(xié)議的實(shí)現(xiàn)中,端口操作類似于一般的I/O操作,進(jìn)程獲取一個(gè)端口,相當(dāng)于獲取本地唯一的I/O文件,可以用一般的讀寫原語(yǔ)訪問(wèn)之。?
??????類似于文件描述符,每個(gè)端口都擁有一個(gè)叫端口號(hào)(port???number)的整數(shù)型標(biāo)識(shí)符,用于區(qū)別不同端口。由于TCP/IP傳輸層的兩個(gè)協(xié)議TCP和UDP是完全獨(dú)立的兩個(gè)軟件模塊,因此各自的端口號(hào)也相互獨(dú)立,如TCP有一個(gè)255號(hào)端口,UDP也可以有一個(gè)255號(hào)端口,二者并不沖突。?
??????端口號(hào)的分配是一個(gè)重要問(wèn)題。有兩種基本分配方式:第一種叫全局分配,這是一種集中控制方式,由一個(gè)公認(rèn)的中央機(jī)構(gòu)根據(jù)用戶需要進(jìn)行統(tǒng)一分配,并將結(jié)果公布于眾。第二種是本地分配,又稱動(dòng)態(tài)連接,即進(jìn)程需要訪問(wèn)傳輸層服務(wù)時(shí),向本地操作系統(tǒng)提出申請(qǐng),操作系統(tǒng)返回一個(gè)本地唯一的端口號(hào),進(jìn)程再通過(guò)合適的系統(tǒng)調(diào)用將自己與該端口號(hào)聯(lián)系起來(lái)(綁扎)。TCP/IP端口號(hào)的分配中綜合了上述兩種方式。TCP/IP將端口號(hào)分為兩部分,少量的作為保留端口,以全局方式分配給服務(wù)進(jìn)程。因此,每一個(gè)標(biāo)準(zhǔn)服務(wù)器都擁有一個(gè)全局公認(rèn)的端口(即周知口,well-known???port),即使在不同機(jī)器上,其端口號(hào)也相同。剩余的為自由端口,以本地方式進(jìn)行分配。TCP和UDP均規(guī)定,小于256的端口號(hào)才能作保留端口。
?
?
·?再討論一下,一個(gè)服務(wù)器監(jiān)控一個(gè)端口,比如80端口,它為什么可以建立上成千上萬(wàn)的連接?
?
???首先,?一個(gè)TCP連接需要由四元組來(lái)形成,即(src_ip,src_port,dst_ip,dst_port)。當(dāng)一個(gè)連接請(qǐng)求過(guò)來(lái)的時(shí)候,服務(wù)端調(diào)用accept函數(shù),新生成一個(gè)socket,這個(gè)socket所占用的本地端口依然是80端口。由四元組就很容易分析到了,同一個(gè)(src_ip,src_port),它所對(duì)應(yīng)的(dst_ip,dst_port)可以無(wú)窮變化,這樣就可以建立很多個(gè)客戶端的請(qǐng)求了。
總結(jié)
以上是生活随笔為你收集整理的TCP 和 UDP 绑定同一端口通信的解释的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 完成端口(Completion Port
- 下一篇: UDP丢包的原因