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