Socket底層原理

Socket兩個基本概念:客戶方和服務(wù)方。當(dāng)兩個應(yīng)用之間需要采用SOCKET通信時,首先需要在兩個應(yīng)用之間(可能位于同一臺機器,也可能位于不同的機器)建立SOCKET連接,發(fā)起呼叫連接請求的一方為客戶方,接受呼叫連接請求的一方成為服務(wù)方??蛻舴胶头?wù)方是相對的,同一個應(yīng)用可以是客戶方,也可以是服務(wù)方。

我們已經(jīng)知道網(wǎng)絡(luò)中的進(jìn)程是通過 socket 來通信的,那什么是 socket 呢?

首先明確Socket在網(wǎng)絡(luò)模型中哪里:是應(yīng)用層與傳輸層之間的橋梁

image回顧一下網(wǎng)絡(luò)模型:OSI七層網(wǎng)絡(luò)模型:

1.應(yīng)用層.

2.表示層.

3.會話層.

4.傳輸層.

5.網(wǎng)絡(luò)層.

6.數(shù)據(jù)鏈路層.

7.物理層

TCP/IP四層網(wǎng)絡(luò)模型:應(yīng)用層.傳輸層.網(wǎng)絡(luò)層,網(wǎng)絡(luò)接入層

HTTP協(xié)議:屬于應(yīng)用層面向?qū)ο蟮膮f(xié)議(超文本傳輸協(xié)議),常基于TCP連接方式,特點是:

1.支持客戶/服務(wù)端模式

2.簡單快捷靈活

3.客戶端發(fā)送的每次請求都需要服務(wù)器回送響應(yīng),請求結(jié)束后主動釋放連接,俗稱”短連接”

TCP協(xié)議:傳輸控制協(xié)議,提供面向連接.可靠的字節(jié)流服務(wù),提供超時重發(fā),丟棄重復(fù)數(shù)據(jù),檢驗數(shù)據(jù),流量控制等功能。在正式收發(fā)數(shù)據(jù)前,必須建立可靠的連接,也即:三次握手.

第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN (ack=j+1),同時自已也發(fā)送一個SYN 包(syn=k),即SYN+ ACK包,此時服務(wù)器進(jìn)入SYN_RECV狀態(tài);

第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。

UDP協(xié)議:用戶數(shù)據(jù)報協(xié)議,面向非連接,不保證可靠性的數(shù)據(jù)傳輸服務(wù),沒有超時重發(fā)等機制,故而傳輸速度很快.特點:它不與對方建立連接,而是直接就把數(shù)據(jù)包發(fā)送過去,UDP適用于一次只傳送少量數(shù)據(jù)、對可靠性要求不高的應(yīng)用環(huán)境。

Socket:又稱”套接字”,應(yīng)用程序通過”套接字”向網(wǎng)絡(luò)發(fā)送請求或應(yīng)答,它是一個針對TCP和UDP編程的接口,借助它建立TCP/UDP連接。

socket連接就是所謂的長連接,理論上客戶端和服務(wù)器端一旦建立起連接將不會主動斷掉HTTP協(xié)議一Socket連接- -TCP連接關(guān)系:1.HTTP協(xié)議提供了封裝或者顯示數(shù)據(jù)的具體形式;

2.Sockct連接提供了網(wǎng)絡(luò)通信的能力;

3.TCP連接提供如何在網(wǎng)絡(luò)中傳輸;

4.socket是純C語言的,跨平臺;

5.HTTP協(xié)議是基于socket的,底層使用的就是socket;

6.創(chuàng)建Socket連接時,可以指定使用的傳輸層協(xié)議(TCP或UDP),當(dāng)使用TCP協(xié)議進(jìn)行連接時,該Socket連接就是一個TCP連接。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容