更新時間:2021-12-01 來源:黑馬程序員 瀏覽量:
學(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ī)定一個地址。
TCP/IP協(xié)議包含因特網(wǎng)整個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)行雙向通信的端點,簡單地說就是通信兩方的一種約定。作為一個抽象的概念,簡單理解,Socket就是對TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個調(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請求,而是采用點對點傳輸數(shù)據(jù)方式,是一個輕量級的網(wǎng)絡(luò)通信解決方案。在套接字服務(wù)中,服務(wù)器用監(jiān)聽連接,客戶端用來打開一個到服務(wù)器的連接,服務(wù)器和客戶端都需要一個唯一的IP地址和端口號組合。
下面通過一幅圖來演示Socket的簡單模型,如圖6-3所示。
圖6-3 Socket簡單模型
在圖6-3中,客戶端設(shè)備首先通過瀏覽器訪問服務(wù)器設(shè)備,并且將自己的IP地址和端口號192.16.43.27:500放入瀏覽器的Socket對象中,當(dāng)服務(wù)器軟件需要向客戶端返回數(shù)據(jù)時,首先從Socket對象中取出客戶端的IP地址和端口號,再發(fā)送數(shù)據(jù),由此可以看出,Socket可以理解為一個封裝了IP地址和端口號的接口對象而已。