Socket原理及常用的幾種類型


1.Socket是一組編程接口(API)

是對TCP/IP協議的封裝和應用。介於傳輸層和應用層,大致駐留在 OSI 模型的會話層

 

 向應用層提供統一的編程接口。應用層不必了解TCP/IP協議細節。直接通過對Socket接口函數的調用完成數據在IP網絡的傳輸。

基於傳輸層差異,4種類型的Socket:
    (1)基於TCP的Socket:提供給應用層可靠的流式數據服務,使用TCP的Socket應用程序協議:BGP,HTTP,FTP,TELNET等。優點:基於數據傳輸的可靠性。
    (2)基於UDP的Socket:適用於數據傳輸可靠性要求不高的場合。基於UDP的Socket應用程序或協議有:RIP,SNMP,L2TP等。
    (3)基於RawIp的Socket:非連接,不可靠的數據傳輸。特點:能使應用程序直接訪問網絡層。基於RawIp的Socket有ping ,tracert,ospf等。
    (4)基於鏈路層的Socket。為IS-IS協議提供的Socket接口。使IS-IS協議可通過Socket直接訪問鏈路層。非連接,不可靠通信服務。

2.再次解讀Socket是什么?

Socket是應用層與TCP/IP協議族通信的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數據,以符合指定的協議。

 

 先從服務器端說起。服務器端先初始化Socket,然后與端口綁定(bind),

對端口進行監聽(listen),調用accept阻塞,等待客戶端連接。
在這時如果有個客戶端初始化一個Socket,然后連接服務器(connect),
如果連接成功,這時客戶端與服務器端的連接就建立了。
客戶端發送數據請求,服務器端接收請求並處理請求,
然后把回應數據發送給客戶端,客戶端讀取數據,最后關閉連接,一次交互結束。

 

注意:發現有個大佬總結的挺好,先給出鏈接,有興趣的盆友可以看看~

https://blog.csdn.net/kikityan/article/details/91628126?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM