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”:”中午一起吃飯”
}