當網(wǎng)絡中的兩臺計算機進行通信時,除了確定計算機在網(wǎng)絡中的IP地址外,還需要確定計算機中的一個端口,端口并不是實際的物理設備,它是一個應用程序,這個應用程序來負責兩臺計算機的通信。
一個IP地址標識了一臺主機(服務器),主機可以提供多種服務,如web服務、ftp服務、遠程桌面等。主機的每個服務都會等待客戶端的連接,客戶端如何區(qū)別這些服務呢?這就需要端口來區(qū)分了。
端口被規(guī)定為一個在0~65535之間的整數(shù),這個整數(shù)和提供服務的應用程序關聯(lián)。如web服務一般是80端口,ftp服務一般是21端口、遠程桌面一般是3389端口。
當我們通過客戶端瀏覽器訪問一個網(wǎng)站時,在瀏覽器地址欄中輸入該網(wǎng)站的網(wǎng)址,并不需要輸入80端口號。這是因為web服務默認就是80端口號,當客戶端以http協(xié)議訪問主機時,主機會默認這是訪問web服務。
在同一臺計算機上端口號不能重復,否則,就會產(chǎn)生端口號沖突。程序員或計算機管理員在分配端口號時,需要遵循下面的規(guī)則:
(1)1~1023之間的端口號,是由ICANN來管理的,不能分配給用戶自己的應用程序;
(3)1024~5000一般被TCP/IP程序作為臨時端口號使用;
(4)分配的端口號不能發(fā)生沖突;
(4)應分配數(shù)值大于5000的端口號給用戶開發(fā)的應用程序。
TCP用主機的IP地址加上主機上的端口號作為TCP連接的端點,這種端點就叫做套接字(socket)或插口。套接字用(IP地址:端口號)表示,區(qū)分不同應用程序進程間的網(wǎng)絡通信和連接,套接字主要有3個參數(shù):通信的目的IP地址、使用的傳輸層協(xié)議(TCP或UDP)和使用的端口號。
TCP使用套接字傳輸數(shù)據(jù)
在Java語言中,使用Socket類來創(chuàng)建套接字,使用Socket類在兩臺計算機之間進行通信時,是有主次之分的,一個稱為服務器程序,一個稱為客戶端程序。在服務器端使用ServerSocket類創(chuàng)建套接字,主要是監(jiān)聽指定的端口,等待客戶端的連接;在客戶端使用Socket類創(chuàng)建套接字,用于連接服務器端的套接字。服務器端和客戶端的套接字的IP地址和端口號要一致。
客戶端和服務端通信過程
在服務器端創(chuàng)建ServerSocket對象,并綁定監(jiān)聽端口。調用ServerSocket對象的accept()方法監(jiān)聽客戶端的請求。與客戶端建立連接后,它會返回一個已連接的Socket對象,并通過輸入流讀取客戶端發(fā)送的請求信息,然后通過輸出流向客戶端發(fā)送響應信息,最后關閉socket及相關資源。
在客戶端創(chuàng)建Socket對象,需要指定連接服務器的地址和端口號,和服務器建立連接后,通過輸出流向服務端發(fā)送請求信息,然后通過輸入流獲取服務器的響應信息,最后關閉socket及相關資源。
-
TCP
+關注
關注
8文章
1381瀏覽量
79344 -
端口
+關注
關注
4文章
991瀏覽量
32242 -
套接字
+關注
關注
0文章
5瀏覽量
1891
發(fā)布評論請先 登錄
相關推薦
【MiCOKit試用體驗】慶科MiCO系統(tǒng)篇(5)MiCO 套接字
端點和套接字怎么配置
交換機網(wǎng)絡從Soft_AP到Infrastructure后,套接字始終返回無效
如何通過socket系統(tǒng)調用創(chuàng)建一個套接字
如何將ESP8266與Windows計算機上運行的tcp套接字服務器程序連接?
如何在iMXRT1176上的LwIP中使用TCP套接字?
TCP_IP網(wǎng)絡編程技術基礎.王雷_部分2
TCP_IP網(wǎng)絡編程技術基礎.王雷_部分1
Windows網(wǎng)絡編程的原始套接字詳細說明
![Windows<b class='flag-5'>網(wǎng)絡</b><b class='flag-5'>編程</b>的原始<b class='flag-5'>套接</b><b class='flag-5'>字</b>詳細說明](https://file.elecfans.com/web1/M00/B8/C1/pIYBAF510QOAYkLxAAtoLa7bTpw606.png)
基于AT89C52單片機和LT8030實現(xiàn)套接字規(guī)范的計算機通信設計
![基于AT89C52單片機和LT8030實現(xiàn)<b class='flag-5'>套接</b><b class='flag-5'>字</b>規(guī)范的計算機通信設計](https://file.elecfans.com/web2/M00/03/18/pYYBAGDUSUaAPIqlAACagdodDl8157.png)
Socket套接字的原理說明
![Socket<b class='flag-5'>套接</b><b class='flag-5'>字</b>的原理說明](https://file.elecfans.com/web2/M00/4C/56/pYYBAGKts-eAKn0ZAAD_l5ZPZxg590.png)
評論