0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳談TCP網(wǎng)絡(luò)編程的套接字和端口

如意 ? 來源:百家號(hào) ? 作者:米粒教育 ? 2020-07-01 10:09 ? 次閱讀

當(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)用程序來負(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ù)呢?這就需要端口來區(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)我們通過客戶端瀏覽器訪問一個(gè)網(wǎng)站時(shí),在瀏覽器地址欄中輸入該網(wǎng)站的網(wǎng)址,并不需要輸入80端口號(hào)。這是因?yàn)閣eb服務(wù)默認(rèn)就是80端口號(hào),當(dāng)客戶端以http協(xié)議訪問主機(jī)時(shí),主機(jī)會(huì)默認(rè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來管理的,不能分配給用戶自己的應(yīng)用程序;

(3)1024~5000一般被TCP/IP程序作為臨時(shí)端口號(hào)使用;

(4)分配的端口號(hào)不能發(fā)生沖突;

(4)應(yīng)分配數(shù)值大于5000的端口號(hào)給用戶開發(fā)的應(yīng)用程序。

TCP用主機(jī)的IP地址加上主機(jī)上的端口號(hào)作為TCP連接的端點(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網(wǎng)絡(luò)編程的套接字和端口

TCP使用套接字傳輸數(shù)據(jù)

Java語言中,使用Socket類來創(chuàng)建套接字,使用Socket類在兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信時(shí),是有主次之分的,一個(gè)稱為服務(wù)器程序,一個(gè)稱為客戶端程序。在服務(wù)器端使用ServerSocket類創(chuàng)建套接字,主要是監(jiān)聽指定的端口,等待客戶端的連接;在客戶端使用Socket類創(chuàng)建套接字,用于連接服務(wù)器端的套接字。服務(wù)器端和客戶端的套接字的IP地址和端口號(hào)要一致。

詳談TCP網(wǎng)絡(luò)編程的套接字和端口

客戶端和服務(wù)端通信過程

在服務(wù)器端創(chuàng)建ServerSocket對象,并綁定監(jiān)聽端口。調(diào)用ServerSocket對象的accept()方法監(jiān)聽客戶端的請求。與客戶端建立連接后,它會(huì)返回一個(gè)已連接的Socket對象,并通過輸入流讀取客戶端發(fā)送的請求信息,然后通過輸出流向客戶端發(fā)送響應(yīng)信息,最后關(guān)閉socket及相關(guān)資源。

在客戶端創(chuàng)建Socket對象,需要指定連接服務(wù)器的地址和端口號(hào),和服務(wù)器建立連接后,通過輸出流向服務(wù)端發(fā)送請求信息,然后通過輸入流獲取服務(wù)器的響應(yīng)信息,最后關(guān)閉socket及相關(guān)資源。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1324

    瀏覽量

    78756
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    916

    瀏覽量

    31856
  • 套接字
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    1850
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【MiCOKit試用體驗(yàn)】慶科MiCO系統(tǒng)篇(5)MiCO 套接

    示例示例效果一、網(wǎng)絡(luò)套接Socket 套接,是源IP地址和目的IP地址以及源端口號(hào)和目的
    發(fā)表于 10-24 17:05

    UNIX域套接

    UNIX域套接用于在同一臺(tái)計(jì)算機(jī)上運(yùn)行的進(jìn)程之間的通信。雖然因特網(wǎng)域套接可用于同一目的,但UNIX域套接
    發(fā)表于 09-02 11:59

    端點(diǎn)和套接怎么配置

    我有3個(gè)端點(diǎn)2個(gè)散列端點(diǎn)和1個(gè)端點(diǎn)。我想實(shí)現(xiàn)一個(gè)SLaveFIFO接口。是否有一個(gè)消費(fèi)者的P-端口套接足以將數(shù)據(jù)從2個(gè)輸出端點(diǎn)傳輸出去,我是否應(yīng)該創(chuàng)建另一個(gè)消費(fèi)者P-端口
    發(fā)表于 02-12 14:00

    交換機(jī)網(wǎng)絡(luò)從Soft_AP到Infrastructure后,套接始終返回?zé)o效

    與以下代碼的客戶端連接通過這個(gè)實(shí)現(xiàn),TCPPOEN函數(shù)返回一個(gè)有效的套接,但是在進(jìn)入無限循環(huán)之后,我們通過在網(wǎng)頁中配置網(wǎng)絡(luò)來配置網(wǎng)絡(luò)處于基礎(chǔ)結(jié)構(gòu)模式。當(dāng)
    發(fā)表于 04-24 09:57

    如何通過socket系統(tǒng)調(diào)用創(chuàng)建一個(gè)套接

    面試被問到TCP/UDP的bind函數(shù)設(shè)計(jì),所以前來補(bǔ)一下套接部分的內(nèi)容套接:進(jìn)程間通信的方法:可以在同一臺(tái)機(jī)器或者
    發(fā)表于 12-24 06:38

    如何將ESP8266與Windows計(jì)算機(jī)上運(yùn)行的tcp套接服務(wù)器程序連接?

    我正在嘗試將 ESP8266 與在我的 Windows 計(jì)算機(jī)上運(yùn)行的 tcp 套接服務(wù)器程序連接,我開發(fā)了一個(gè) C# 應(yīng)用程序運(yùn)行并列出到 IP 172.16.1.85 端口 65
    發(fā)表于 02-23 07:09

    如何在iMXRT1176上的LwIP中使用TCP套接?

    作為套接類型,使用 ICMP 作為套接協(xié)議。 lwip_socket(AF_INET, SOCK_RAW, IP_PROTO_ICMP); 我想將 SOCK_STREAM 創(chuàng)建
    發(fā)表于 06-02 10:10

    TCP_IP網(wǎng)絡(luò)編程技術(shù)基礎(chǔ).王雷_部分2

    教材相比,本書主要的特點(diǎn)為:在注重闡述tcp/ip網(wǎng)絡(luò)通信原理與套接api編程原理的基礎(chǔ)上,通過對例程的深人剖析,深入淺出地介紹服務(wù)器與客
    發(fā)表于 04-19 09:54 ?2次下載

    TCP_IP網(wǎng)絡(luò)編程技術(shù)基礎(chǔ).王雷_部分1

    教材相比,本書主要的特點(diǎn)為:在注重闡述tcp/ip網(wǎng)絡(luò)通信原理與套接api編程原理的基礎(chǔ)上,通過對例程的深人剖析,深入淺出地介紹服務(wù)器與客
    發(fā)表于 04-19 09:54 ?4次下載

    Windows網(wǎng)絡(luò)編程的原始套接詳細(xì)說明

    利用“原始套接”(Raw Socket),我們可訪問位于基層的傳輸協(xié)議。本章專門講解如何運(yùn)用這種原始套接,來模擬 IP的一些實(shí)用工具,比如 Tr a c e r o u t e和P
    發(fā)表于 03-21 08:00 ?1次下載
    Windows<b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>編程</b>的原始<b class='flag-5'>套接</b><b class='flag-5'>字</b>詳細(xì)說明

    DN93-PCMCIA套接交換

    DN93-PCMCIA套接交換
    發(fā)表于 04-19 18:20 ?14次下載
    DN93-PCMCIA<b class='flag-5'>套接</b><b class='flag-5'>字</b>交換

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

    網(wǎng)絡(luò)設(shè)置中有HTTP、SOCKET等類型。SOCKET是建立在傳輸層協(xié)議(主要是TCP和UDP)上的一種套接規(guī)范,它定義兩臺(tái)計(jì)算機(jī)間進(jìn)行通信的規(guī)范(也是一種
    的頭像 發(fā)表于 06-24 16:56 ?2222次閱讀
    基于AT89C52單片機(jī)和LT8030實(shí)現(xiàn)<b class='flag-5'>套接</b><b class='flag-5'>字</b>規(guī)范的計(jì)算機(jī)通信設(shè)計(jì)

    Socket套接的原理說明

    和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了稱為套接 (Socket)的接口,區(qū)分不同應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接。 生成
    的頭像 發(fā)表于 06-18 19:16 ?1720次閱讀
    Socket<b class='flag-5'>套接</b><b class='flag-5'>字</b>的原理說明

    網(wǎng)絡(luò)系統(tǒng)調(diào)用網(wǎng)絡(luò)套接入口函數(shù)

    網(wǎng)絡(luò)套接入口函數(shù) //所有的網(wǎng)絡(luò)套接系統(tǒng)調(diào)用函數(shù)(socket bind listen co
    的頭像 發(fā)表于 07-24 11:02 ?389次閱讀

    套接socket包含哪些參數(shù)

    套接(Socket)是計(jì)算機(jī)網(wǎng)絡(luò)中最基本的通信抽象,它定義了兩個(gè)進(jìn)程間通信的端點(diǎn)。在TCP/IP協(xié)議棧中,套接
    的頭像 發(fā)表于 08-16 11:02 ?178次閱讀