首頁技術(shù)文章正文

什么是Socket?Socket套接字介紹

更新時(shí)間:2021-12-01 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

學(xué)習(xí)Socket之前首先需要了解一下TCP/IP協(xié)議,TCP/IP協(xié)議是TCP和IP協(xié)議的合稱,TCP(Transfer Control Protocol,傳輸控制協(xié)議)是一種穩(wěn)定可靠的傳送方式,TCP負(fù)責(zé)發(fā)現(xiàn)傳輸?shù)膯栴},一有問題就發(fā)出信號,要求重新傳輸,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡貫橹?。而IP是給互聯(lián)網(wǎng)的每一臺聯(lián)網(wǎng)設(shè)備規(guī)定一個(gè)地址。

TCP/IP協(xié)議包含因特網(wǎng)整個(gè)TCP/IP協(xié)議簇。在應(yīng)用層面的包括TFTP、HTTP、SNMP、FTP、SMTP、DNS、Telnet 協(xié)議等。

Socket的英文原義是“孔”或“插座”。在程序方面,可理解為接口對象,在網(wǎng)絡(luò)編程中通常也稱作“套接字”,常用于描述IP地址和端口等。Socket是支持TCP/IP的網(wǎng)絡(luò)通信的基本操作單元,可以看作是不同主機(jī)之間的進(jìn)程進(jìn)行雙向通信的端點(diǎn),簡單地說就是通信兩方的一種約定。作為一個(gè)抽象的概念,簡單理解,Socket就是對TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個(gè)調(diào)用接口(API)。

Socket中包含了進(jìn)行網(wǎng)絡(luò)通信必需的5種信息:連接使用的協(xié)議、客戶端設(shè)備的IP地址、客戶端的端口號、服務(wù)器端的IP地址、服務(wù)器端口。

Socket需要使用套接字地址來開展工作,套接字地址就是IP地址和端口號的組合,套接字服務(wù)與其他網(wǎng)絡(luò)服務(wù)不同,不需要處理網(wǎng)絡(luò)中的GET或POST請求,而是采用點(diǎn)對點(diǎn)傳輸數(shù)據(jù)方式,是一個(gè)輕量級的網(wǎng)絡(luò)通信解決方案。在套接字服務(wù)中,服務(wù)器用監(jiān)聽連接,客戶端用來打開一個(gè)到服務(wù)器的連接,服務(wù)器和客戶端都需要一個(gè)唯一的IP地址和端口號組合。

下面通過一幅圖來演示Socket的簡單模型,如圖6-3所示。

1638348122793_socket模型.jpg

圖6-3 Socket簡單模型

在圖6-3中,客戶端設(shè)備首先通過瀏覽器訪問服務(wù)器設(shè)備,并且將自己的IP地址和端口號192.16.43.27:500放入瀏覽器的Socket對象中,當(dāng)服務(wù)器軟件需要向客戶端返回?cái)?shù)據(jù)時(shí),首先從Socket對象中取出客戶端的IP地址和端口號,再發(fā)送數(shù)據(jù),由此可以看出,Socket可以理解為一個(gè)封裝了IP地址和端口號的接口對象而已。




猜你喜歡:

jquery事件委托的方法介紹

Node.js起源?Node.js有哪些特點(diǎn)?

Node.JS下載與安裝詳細(xì)教程

JS不確定參數(shù)個(gè)數(shù):rest語法

黑馬程序員HTML前端與移動(dòng)開發(fā)培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!