Socket面試題整理


Socket是什么?

socket是應用層與傳輸層的一個抽象,將復雜的TCP/IP協議隱藏在Socket接口之后,只對應用層暴露簡單的接口

socket是一種特殊的文件,它也有文件描述符,進程可以打開一個socket,並且像處理文件一樣對它進行read()和write()操作,而不必關心數據是怎么在網絡上傳輸的

socket是一個tcp連接的兩端

Socket如何唯一標識一個進程?

socket基於tcp協議實現,網絡層的ip地址唯一標識一台主機,而傳輸層的協議+端口號可以唯一標識綁定到這個端口的進程

通信雙方如何進行端口綁定?

通常服務端啟動時會綁定一個端口提供服務,而客戶端在發起連接請求時會被隨機分配一個端口號

Socket屬於網絡的哪一層?

Socket不算是一個協議,它是應用層與傳輸層間的一個抽象層。它把TCP/IP層復雜的操作抽象為幾個簡單的接口供應用層調用,以實現進程在網絡中通信

Socket是全雙工的嗎?

基於TCP協議,是全雙工的

HTTP協議是全雙工的嗎?

HTTP 協議設計的初衷本身就是請求/響應模式,這是規范決定的。不過在技術上是可以利用下層的 TCP 來進行全雙工通信的。

Socket與WebSocket的區別

Socket是應用層與傳輸層的一個抽象,將復雜的TCP/IP協議隱藏在Socket接口之后,只對用戶暴露簡單的接口

而WebScoket是應用層協議,它也是基於TCP實現,同時借助了HTTP協議建立連接

WebSocket連接過程:

  1. 服務端與客戶端建立TCP連接(三次握手)、建立HTTP連接
  2. 客戶端(瀏覽器)向服務端發送一個請求頭包含
    Upgrade: websocket
    Connection: Upgrade
    
    的HTTP請求,申請升級到Websocket連接
  3. 服務端回應的響應頭:
    HTTP/1.1 101 Switching Protocals
    Connection: Upgrade
    Upgrade: websocket
    
    同意升級協議,至此雙方將基於WebSocket協議通信

參考資料

https://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html

http://c.biancheng.net/view/2123.html


免責聲明!

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



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