當(dāng)網(wǎng)絡(luò)中的兩臺(tái)計(jì)算機(jī)進(jìn)行通信時(shí),除了確定計(jì)算機(jī)在網(wǎng)絡(luò)中的IP地址外,還需要確定計(jì)算機(jī)中的一個(gè)端口,端口并不是實(shí)際的物理設(shè)備,它是一個(gè)應(yīng)用程序,這個(gè)應(yīng)用程序來(lái)負(fù)責(zé)兩臺(tái)計(jì)算機(jī)的通信。
一個(gè)IP地址標(biāo)識(shí)了一臺(tái)主機(jī)(服務(wù)器),主機(jī)可以提供多種服務(wù),如web服務(wù)、ftp服務(wù)、遠(yuǎn)程桌面等。主機(jī)的每個(gè)服務(wù)都會(huì)等待客戶端的連接,客戶端如何區(qū)別這些服務(wù)呢?這就需要端口來(lái)區(qū)分了。
端口被規(guī)定為一個(gè)在0~65535之間的整數(shù),這個(gè)整數(shù)和提供服務(wù)的應(yīng)用程序關(guān)聯(lián)。如web服務(wù)一般是80端口,ftp服務(wù)一般是21端口、遠(yuǎn)程桌面一般是3389端口。
當(dāng)我們通過(guò)客戶端瀏覽器訪問(wèn)一個(gè)網(wǎng)站時(shí),在瀏覽器地址欄中輸入該網(wǎng)站的網(wǎng)址,并不需要輸入80端口號(hào)。這是因?yàn)閣eb服務(wù)默認(rèn)就是80端口號(hào),當(dāng)客戶端以http協(xié)議訪問(wèn)主機(jī)時(shí),主機(jī)會(huì)默認(rèn)這是訪問(wèn)web服務(wù)。
在同一臺(tái)計(jì)算機(jī)上端口號(hào)不能重復(fù),否則,就會(huì)產(chǎn)生端口號(hào)沖突。程序員或計(jì)算機(jī)管理員在分配端口號(hào)時(shí),需要遵循下面的規(guī)則:
(1)1~1023之間的端口號(hào),是由ICANN來(lái)管理的,不能分配給用戶自己的應(yīng)用程序;
(3)1024~5000一般被TCP/IP程序作為臨時(shí)端口號(hào)使用;
(4)分配的端口號(hào)不能發(fā)生沖突;
(4)應(yīng)分配數(shù)值大于5000的端口號(hào)給用戶開(kāi)發(fā)的應(yīng)用程序。
TCP用主機(jī)的IP地址加上主機(jī)上的端口號(hào)作為T(mén)CP連接的端點(diǎn),這種端點(diǎn)就叫做套接字(socket)或插口。套接字用(IP地址:端口號(hào))表示,區(qū)分不同應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接,套接字主要有3個(gè)參數(shù):通信的目的IP地址、使用的傳輸層協(xié)議(TCP或UDP)和使用的端口號(hào)。
TCP使用套接字傳輸數(shù)據(jù)
在Java語(yǔ)言中,使用Socket類(lèi)來(lái)創(chuàng)建套接字,使用Socket類(lèi)在兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信時(shí),是有主次之分的,一個(gè)稱(chēng)為服務(wù)器程序,一個(gè)稱(chēng)為客戶端程序。在服務(wù)器端使用ServerSocket類(lèi)創(chuàng)建套接字,主要是監(jiān)聽(tīng)指定的端口,等待客戶端的連接;在客戶端使用Socket類(lèi)創(chuàng)建套接字,用于連接服務(wù)器端的套接字。服務(wù)器端和客戶端的套接字的IP地址和端口號(hào)要一致。
客戶端和服務(wù)端通信過(guò)程
在服務(wù)器端創(chuàng)建ServerSocket對(duì)象,并綁定監(jiān)聽(tīng)端口。調(diào)用ServerSocket對(duì)象的accept()方法監(jiān)聽(tīng)客戶端的請(qǐng)求。與客戶端建立連接后,它會(huì)返回一個(gè)已連接的Socket對(duì)象,并通過(guò)輸入流讀取客戶端發(fā)送的請(qǐng)求信息,然后通過(guò)輸出流向客戶端發(fā)送響應(yīng)信息,最后關(guān)閉socket及相關(guān)資源。
在客戶端創(chuàng)建Socket對(duì)象,需要指定連接服務(wù)器的地址和端口號(hào),和服務(wù)器建立連接后,通過(guò)輸出流向服務(wù)端發(fā)送請(qǐng)求信息,然后通過(guò)輸入流獲取服務(wù)器的響應(yīng)信息,最后關(guān)閉socket及相關(guān)資源。
-
TCP
+關(guān)注
關(guān)注
8文章
1402瀏覽量
80993 -
端口
+關(guān)注
關(guān)注
4文章
1046瀏覽量
32924 -
套接字
+關(guān)注
關(guān)注
0文章
5
發(fā)布評(píng)論請(qǐng)先 登錄
【MiCOKit試用體驗(yàn)】慶科MiCO系統(tǒng)篇(5)MiCO 套接字
UNIX域套接字
端點(diǎn)和套接字怎么配置
交換機(jī)網(wǎng)絡(luò)從Soft_AP到Infrastructure后,套接字始終返回?zé)o效
如何通過(guò)socket系統(tǒng)調(diào)用創(chuàng)建一個(gè)套接字
如何將ESP8266與Windows計(jì)算機(jī)上運(yùn)行的tcp套接字服務(wù)器程序連接?
如何在iMXRT1176上的LwIP中使用TCP套接字?
TCP_IP網(wǎng)絡(luò)編程技術(shù)基礎(chǔ).王雷_部分2
TCP_IP網(wǎng)絡(luò)編程技術(shù)基礎(chǔ).王雷_部分1
Windows網(wǎng)絡(luò)編程的原始套接字詳細(xì)說(shuō)明

基于AT89C52單片機(jī)和LT8030實(shí)現(xiàn)套接字規(guī)范的計(jì)算機(jī)通信設(shè)計(jì)

Socket套接字的原理說(shuō)明

評(píng)論