Network Socket
概述
参考:
面向连接服务(TCP 协议):是电话系统服务模式的抽象,即每一次完整的数据传输都要经过建立连接,使用连接,终止连接的过程。在数据传输过程中,各数据分组不携带目的地址,而使用连接号(connect ID)。本质上,连接是一个管道,收发数据不但顺序一致,而且内容相同。TCP 协议提供面向连接的虚电路。例如
- 文件传输 FTP
- 远程登录 SSH
- 数字语音
- 等
无连接服务(UDP 协议):是邮政系统服务的抽象,每个分组都携带完整的目的地址,各分组在系统中独立传送。无连接服务不能保证分组的先后顺序,不进行分组出错的恢复与重传,不保证传输的可靠性。UDP 协议提供无连接的数据报服务。例如:
- 电子邮件
- 电子邮件中的挂号信
- 网络数据库查询
- 等
TCP/IP 的 socket 提供下列三种类型套接字。
- 流式套接字(SOCK_STREAM):TCP Socket
- 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制。文件传送协议(FTP)即使用流式套接字。
- 数据报式套接字(SOCK_DGRAM):UDP Socket
- 提供了一个无连接服务(UDP)。数据包以独立包形式被发送,不提供无错保证数据可能丢失或重复,并且接收顺序混乱。网络文件系统(NFS)使用数据报式套接字。
- 原始式套接字(SOCK_RAW) :裸 Socket
- 从应用层直接封装网络层报文,跳过传输层的协议.该接口允许对较低层协议,如 IP、ICMP 直接访问。常用于检验新的协议实现或访问现有服务中配置的新设备。
Socket Domain 套接字域,根据其所有使用的地址进行分类
- AF_INET:Address Family,IPv4
- AF_INET6:同上,IPv6
- AF_UNIX:同一主机上不同进程之间通信时使用
每类套接字至少提供了两种 socket:流,数据报
tcp:传输控制协议,面向连接的协议,通信钱需要建立虚拟链路,结束后拆除链路
udp:User Datagram Protocol,无连接的协议
- 流:可靠的传递,面向连接,无边界
- 数据报:不可靠的传递,有边界,无连接
套接字相关的系统调用
- socket():创建一个套接字
- bind():绑定
- listen():监听
- connect():请求连接建立
- write():发送数据
- read():接收数据
Socket 通信流程
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.