Socket:是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元。它是網(wǎng)絡(luò)通信過程中个唧,端點(diǎn)的抽象表示渠退,包含進(jìn)行網(wǎng)絡(luò)通信必須的五種信息:連接使用的協(xié)議忙迁,本地主機(jī)的IP地址,本地進(jìn)程的協(xié)議端口碎乃,遠(yuǎn)地主機(jī)的IP地址姊扔,遠(yuǎn)地進(jìn)程的協(xié)議端口。
應(yīng)用層通過傳輸層進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候梅誓,TCP會遇到同時(shí)為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問題恰梢。為了區(qū)別不同的應(yīng)用程序和連接,不同計(jì)算機(jī)操作系統(tǒng)為進(jìn)程與TCP梗掰、IP協(xié)議交互提供了套接字接口删豺,應(yīng)用層和傳輸層通過socket接口,區(qū)分來自不同應(yīng)用程序進(jìn)程或網(wǎng)絡(luò)連接的通信愧怜,實(shí)現(xiàn)數(shù)據(jù)傳輸并發(fā)服務(wù)
建立Socket連接:
至少需要一對套接字呀页,其中一個(gè)運(yùn)行在客戶端,稱為ClientSocket拥坛,另一個(gè)運(yùn)行在服務(wù)器蓬蝶,稱為ServerSocket,
套接字之間的連接過程分為三個(gè)步驟:服務(wù)器監(jiān)聽猜惋、客戶端請求丸氛、連接確認(rèn)
服務(wù)器監(jiān)聽:服務(wù)器端套接字并不定位具體的客戶端套接字,而是出于等待連接的狀態(tài)著摔,實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)缓窜,等待客戶端的連接請求
客戶端請求:指的是客戶端的套接字提出連接請求,要連接的目標(biāo)是服務(wù)器端的套接字,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字禾锤,支出服務(wù)器套接字的地址和端口號私股,然后向服務(wù)器端套接字提出連接請求
連接確認(rèn):當(dāng)服務(wù)器端套接字監(jiān)聽或者說收到客戶端套接字的鏈接請求時(shí),就響應(yīng)客戶端套接字的請求恩掷,簡建立一個(gè)新的線程倡鲸,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述黄娘,雙方正式建立連接峭状。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接受其他客戶端套接字的請求
http協(xié)議底層使用的就是socket
Socket連接與TCP連接:
創(chuàng)建Socket連接時(shí)逼争,可以指定使用的傳輸層協(xié)議优床,Socket可以支持不同的傳輸層協(xié)議(TCP或UDP),當(dāng)使用TCP協(xié)議進(jìn)行連接時(shí)誓焦,該Socket連接就是一個(gè)TCP連接羔巢。
Socket:網(wǎng)絡(luò)上兩個(gè)程序通過一個(gè) 雙向通信連接 實(shí)現(xiàn)數(shù)據(jù)的交換,這個(gè)連接的一端成為一個(gè)socket
應(yīng)用程序通過socket向網(wǎng)絡(luò)發(fā)出請求和響應(yīng)請求