c语言socket原理,Socket底层原理
Socket兩個基本概念:客戶方和服務方。當兩個應用之間需要采用SOCKET通信時,首先需要在兩個應用之間(可能位于同一臺機器,也可能位于不同的機器)建立SOCKET連接,發起呼叫連接請求的一方為客戶方,接受呼叫連接請求的一方成為服務方。客戶方和服務方是相對的,同一個應用可以是客戶方,也可以是服務方。
我們已經知道網絡中的進程是通過 socket 來通信的,那什么是 socket 呢?
首先明確Socket在網絡模型中哪里:是應用層與傳輸層之間的橋梁
image回顧一下網絡模型:OSI七層網絡模型:
1.應用層.
2.表示層.
3.會話層.
4.傳輸層.
5.網絡層.
6.數據鏈路層.
7.物理層
TCP/IP四層網絡模型:應用層.傳輸層.網絡層,網絡接入層
HTTP協議:屬于應用層面向對象的協議(超文本傳輸協議),常基于TCP連接方式,特點是:
1.支持客戶/服務端模式
2.簡單快捷靈活
3.客戶端發送的每次請求都需要服務器回送響應,請求結束后主動釋放連接,俗稱”短連接”
TCP協議:傳輸控制協議,提供面向連接.可靠的字節流服務,提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能。在正式收發數據前,必須建立可靠的連接,也即:三次握手.
第一次握手:客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN (ack=j+1),同時自已也發送一個SYN 包(syn=k),即SYN+ ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
UDP協議:用戶數據報協議,面向非連接,不保證可靠性的數據傳輸服務,沒有超時重發等機制,故而傳輸速度很快.特點:它不與對方建立連接,而是直接就把數據包發送過去,UDP適用于一次只傳送少量數據、對可靠性要求不高的應用環境。
Socket:又稱”套接字”,應用程序通過”套接字”向網絡發送請求或應答,它是一個針對TCP和UDP編程的接口,借助它建立TCP/UDP連接。
socket連接就是所謂的長連接,理論上客戶端和服務器端一旦建立起連接將不會主動斷掉HTTP協議一Socket連接- -TCP連接關系:1.HTTP協議提供了封裝或者顯示數據的具體形式;
2.Sockct連接提供了網絡通信的能力;
3.TCP連接提供如何在網絡中傳輸;
4.socket是純C語言的,跨平臺;
5.HTTP協議是基于socket的,底層使用的就是socket;
6.創建Socket連接時,可以指定使用的傳輸層協議(TCP或UDP),當使用TCP協議進行連接時,該Socket連接就是一個TCP連接。
總結
以上是生活随笔為你收集整理的c语言socket原理,Socket底层原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言程序构造数据类型问题,C语言程序设
- 下一篇: c语言符合运算符的运算顺序,二 如何学习