套接字上联应用进程,下联网络协议栈,是应用程序经过网络协议进行通讯的接口,是应用程序与网络协议根进行交互的接口
编程
注:要经过互联网进行通讯,至少须要一对套接字,其中一个运行于客户端,咱们称之为 Client Socket
,另外一个运行于服务器端,咱们称之为 Server Socket
api
1.服务器监听服务器
所谓服务器监听,是指服务器端套接字并不定位具体的客户端套接字,而是处于等待链接的状态,实时监控网络状态 。网络
2.客户端请求socket
所谓客户端请求,是指由客户端的套接字提出链接请求,要链接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要链接的服务器的套接字,指出服务器端套接字的地址和端口号,而后就向服务器端接字提出链接请求 。tcp
3.链接确认线程
所谓链接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的链接请求,就会响应客户端套接字的请求,创建一个新的线程,并把服务器端套接字的描述 发送给客户端。一旦客户端确认了此描述,链接就创建好了。而服务器端套接字继续处于监听状态,接收其余客户端套接字的链接请求 。code
1.流式套接字(SOCK_STREAM)blog
流式套接字用于提供面向链接、可靠的数据传输服务。该服务将保证数据可以实现无差错、无重复送,并按顺序接收。流套接字之因此可以实现可靠的数据服务,缘由在于其使用了传输控制协议,即 TCP(The Transmission Control Protocol)协议
。接口
2.数据报套接字(SOCK_DGRAM)
数据报套接字提供一种无链接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程当中丢失或出现数据重复,且没法保证顺序地接收到数据。数据报套接字使用 UDP( User DatagramProtocol)协议
进行数据的传输。因为数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失状况,须要在程序中作相应的处理。
根据套接字的不一样类型,能够将套接字调用分为面向链接服务和无链接服务 。
面向链接服务的主要特色以下:
(1)数据传输过程必须通过创建链接、维护链接和释放链接3个阶段;
(2)在传输过程当中,各分组不须要携带目的主机的地址;
(3)可靠性好,但因为协议复杂,通讯效率不高 。
面向无链接服务的主要特色以下:
(1)不须要链接的各个阶段;
(2)每一个分组都携带完整的目的主机地址,在系统中独立传送;
(3)因为没有顺序控制,因此接收方的分组可能出现乱序、重复和丢失现象;
(4)通讯效率高,但可靠性不能确保 。