1.socket是什么
socket又称套接字,网络上的请求就是通过socket来建立连接然后互相传输信息;而网络上的两个程序之间的通信是通过一个双向的通信连接实现数据的交换,即这个连接的任意一端称为一个socket。通常应用程序也是通过socket向网络发请求或者网络应答。
2.应用程序网络通信的基础
网络由下往上分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
a.ip地址(网络层)
上网设备的唯一标识符(即网络上的通信地址,就像身份证上的家庭地址)
b.端口号
用于同一台上网设备中标识不同程序对应进程的逻辑地址;注意:有效端口:0~65535,其中0~1024由系统使用或者保留端口,开发中建议使用1024以上的端口;如:mysql数据库常用的3307等。
c.传输协议(传输层)
传输协议顾名思义就是用什么样的方式进行信息交互,即通信的规则;常见协议:TCP,UDP
TCP(传输控制协议)
建立连接,形成传输数据的通道
在连接中进行大数据传输(数据不受限制)
通过三次握手完成连接,是可靠协议,安全送达
必须建立连接,效率会稍低
TCP连接的三次握手
1.第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
2.第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3.第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
UDP(用户数据报协议)
将数据及源和目的封装成数据包中,不需要建立连接
每个数据报的大小限制在64K之内
因为无需连接,因此是不可靠协议
不需要建立连接,速度快
D.数据以什么格式传输(表示层和应用层)
常用应用层协议有:HTTP,XMPP等
3.socket的应用
代码(应用CocoaAsyncSocket框架):
Dome1(模拟取款机):https://github.com/tangbinbinM/socket-
Dome2(模拟微信正在输入状态):https://github.com/tangbinbinM/socket-2