Socket
- Socket又稱“套接字”
- 網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接的一端稱為socket
- 應用程序通常通過“套接字”向網絡發(fā)出請求或者應答網絡請求

Socket.png
網絡通信的要素
- 網絡上的請求就是通過Socket來建立連接然后互相通信
- IP地址(網絡上主機設備的唯一標識)
- 端口號(定位程序)
- 用于標示進程的邏輯地址,不通進程的標示
- 有效端口:065535,其中01024是由系統(tǒng)使用或者保留端口,開發(fā)中建議使用1024以上的端口
- 傳輸協(xié)議(用什么樣的方式進行交互)
- 通訊的規(guī)則
- 常見協(xié)議:TCP、UDP
TCP&UDP
TCP(Transmission Control Protocol,傳輸控制協(xié)議)
- 建立連接,形成傳輸數據的通道
- 在連接中進行大數據傳輸(數據大小不做限制)
- 通過三次握手完成連接,是可靠協(xié)議,安全送達
- 必須建立連接,效率會稍低
對于TCP三次握手可以理解為打電話,撥電話(第一次握手),對方接電話(掛斷導致第二次握手失?。?,互相問候(如果單方面,認為第三次握手失?。?。
UDP (User Data Protocol,用戶數據報協(xié)議)
- 將數據及源和目的的封裝成數據包中,不需要建立連接
- 每個數據報的大小限制在64k之內
- 因為無需連接,因此是不可靠協(xié)議
- 不需要建立連接,速度快
對于UDP可以理解為發(fā)短信,不需要知道對方開機、還是關機、還是停機;如果短信次數超過70條直接掛機,無法知道短信什么時候到達。
Socket通信流程

Socket通信流程圖.png
實現Socket服務端接聽
實現socket的監(jiān)聽方法
- 使用C語言實現
- 使用CocoaAsyncSocket第三方框架,內部是對C的封裝
Telnet命令telnet host port/telnet 192.168.10.10 5288
- telnel命令是監(jiān)聽服務器上否個端口對應的服務有沒有開啟
Socket 層上的協(xié)議
- Socket層上的協(xié)議指的數據傳輸的格式
- HTTP協(xié)議(HyperText Transfer Protocol),超文本傳輸協(xié)議)
傳輸格式,假設:這是建設,實際http的格式不是這樣的。http1.1,content-type:multipart/form-data,content-lenth:188,body:username=zhangsan&password=123456 - XMPP協(xié)議,是一款即時通訊協(xié)議(Extensible Messaging and Presence Protocol,可擴展消息處理現場協(xié)議)
是基于XML(Extensible Markup Language,可擴展標示語言)的協(xié)議,它用于IM(Instant Messaging,即時通訊)以及在線現場探測。這個洗衣可能最終允許因特網用戶向因特網上的其他任何人發(fā)送即時消息

傳輸格式.png