socket概念


简介

先介绍一下套接字的使用过程:

面向流的套接字,对于TCP/IP套接字来说,代表TCP协议

面数据包的套接字,对于TCP/IP套接字来说,代表UDP协议

Unix domain socket

Unix domain socket 主要用于同一主机上的进程间通信

UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程

UNIX域套接字与TCP套接字相比较,在同一台主机的传输速度前者是后者的两倍

Internet domain socket

Internet domain socket用于实现不同主机上的进程间通信,大部分情况下我们所说的socket都是指internet domain socket

“IP+端口+协议”的组合就可以唯一标识网络中一台主机上的一个进程
一个完整的Socket的组成应该是由[协议,本地地址,本地端口,远程地址,远程端口] 组成的一个5维数组

  • 流式套接字(SOCK_STREAM)

最常见的套接字,使用TCP协议,提供可靠的、面向连接的通信流。保证数据传输是正确的,并且是顺序的。

  • 数据报套接字(SOCK_DGRAM)

使用UDP协议,提供无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠性

  • 原始套接字

允许对低层协议如IP或ICMP直接访问,主要用于新的网络协议实现的测试等


文章作者: 江湖义气
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 江湖义气 !
  目录