一、什么是Socket套接字?
讲套接字之前,我们来看一下网络通信的几种协议:
1)TCP/IP参考模型
主机到网络层:给网络互联层提供一个访问接口,以便在其上传递IP分组。
网络互联层:TCP/IP协议栈的核心,功能使把分组发送目标网络或主机。
传输层:使源端主机和目标端主机上的对等实体可以进行会话。传输层包括 TCP协议和UDP用户数据报协议。
应用层:应用层面向不同的网络应用不同的应用层协议,其中有基于TCP协议的,如FTP、Telnet、HTTP协议。
2)TCP连接
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接。
位码:SYN(建立联机),ACK(确认),PSH(传送),FIN(结束),RST(重置),URG(紧急),SN(顺序号码),AN(确认号码)
三次握手过程:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。握手完成后,两台主机开始传输数据了。
3)HTTP连接
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
在HTTP 1.0中,客户端的