使用连接、终止连接的过程、在数据传输过程中,各数据分组不携带目的地址,而使用连接号(connect ID )。从本质上看,连接是一个管道,收发数据不但顺序一致,而且内容相同。
Socket 编程中,双方进程可以单独创建流式Socket ,再在socket 之间形成连接。一旦数据作为字符流被写入发送者进程,然后接收者通过socket 来读取该数据。面向连接通信能确保数据沿预先建立的连接安全有序地传输。
服务器使用两个Socket :一个接收连接;一个发送/接收数据。见图5-2。
图3-2:流式Socket 通信 2.数据报Socket (SOCK_DGRAM )
数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠、无差错。类似于邮政系统服务。每个分组都携带完整的目的地址,各分组独立传送。无连接服务不能保证分组的先后顺序,不进行分组出错的恢复与重传,不保证传输的可靠性。UDP 协议提供无连接的数据报服务。它使用数据报协议UDP 。
图3-3:无连接数据包socket
3.原始Socket
原始套接字允许对底层协议如IP 或ICMP 直接访问,它功能强大但使用不便主要用于一些协议的开发。
客户1
服务器