Socket通訊

Socket

  • Socket又稱"套接字”
  • 網(wǎng)絡(luò)上的兩個程序通過一個雙向的通信連接實現(xiàn)數(shù)據(jù)的交換,這個連接的一端稱為一個socket。
  • 應(yīng)用程序通常通過"套接字"向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求


    Socket通訊過程.png

網(wǎng)絡(luò)通信的要素

  • 網(wǎng)絡(luò)上的請求就是通過Socket來建立連接然后互相通信
  • IP地址(網(wǎng)絡(luò)上主機設(shè)備的唯一標識)
  • 端口號(定位程序)
    • 用于標示進程的邏輯地址,不同進程的標示
    • 有效端口:065535,其中01024由系統(tǒng)使用或者保留端口,開發(fā)中建議使用1024以上的端口
  • 傳輸協(xié)議(用什么樣的方式進行交互)
    • 通訊的規(guī)則
    • 常見協(xié)議:TCP、UDP

傳輸協(xié)議:TCP&UDP

  • TCP(傳輸控制協(xié)議)

    • 建立連接,形成傳輸數(shù)據(jù)的通道
    • 在連接中進行大數(shù)據(jù)傳輸(數(shù)據(jù)不受限制)
    • 通過三次握手完成連接,是可靠協(xié)議,安全送達
    • 必須建立連接,效率會稍低
  • UDP(用戶數(shù)據(jù)報協(xié)議)

    • 將數(shù)據(jù)及源和目的封裝成數(shù)據(jù)包中,不需要建立連接
    • 每個數(shù)據(jù)報的大小限制在64K之內(nèi)
    • 因為無需連接,因此是不可靠協(xié)議
    • 不需要建立連接,速度快

Socket通信流程圖

Socket通信流程圖.png

補充:
1.HTTP底層就是通過socket建立連接通信管道,實現(xiàn)數(shù)據(jù)傳輸
2.HTTP是一個TCP的傳輸協(xié)議(方式),它是一個可靠,安全的協(xié)議


實現(xiàn)socket的監(jiān)聽方法

(1)使用C語言實現(xiàn),
(2)使用CocoaAsyncSocket第三方框,內(nèi)部是對C的封裝

  • Telnet命令telnet host port/telnet 192.168.10.10 5288
    • 1.telnet命令是連接服務(wù)器上的某個端口對應(yīng)的服務(wù)

Socket層上的協(xié)議

  • Socket層上的協(xié)議指的數(shù)據(jù)傳輸?shù)母袷?/p>

  • HTTP協(xié)議
    傳輸格式:假設(shè):這是假設(shè),實際http的格式不是這樣的。
    http1.1,content-type:multipart/form-data,content-length:188,body:username=zhangsan&password=123456

  • XMPP協(xié)議,是一款即時通訊協(xié)議

    • 可擴展消息處理現(xiàn)場協(xié)議)是基于可擴展標記語言(XML)的協(xié)議,它用于即時消息(IM)以及在線現(xiàn)場探測。這個協(xié)議可能最終允許因特網(wǎng)用戶向因特網(wǎng)上的其他任何人發(fā)送即時消息
  • 傳輸格式:

<from>zhangsan<from>
<to>lisi<to>
<body>一起吃晚上</body>

  • 自定義即時通訊協(xié)議,json格式

{
“from”:”zhangsan”,
”to”:”lisi”,
”body”:”中午一起吃飯”
}


最后編輯于
?著作權(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)容