域socket(domain socket)和ipsocket(TCP/IP socket)区别

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了域socket(domain socket)和ipsocket(TCP/IP socket)区别相关的知识,希望对你有一定的参考价值。

引言

前篇文章谈到 mysql 中 localhost 和 127.0.0.1 连接的区别,其实质分别对应的就是 Unix domain socket 和 TCP/IP socket。 下面再来看看这两者之间的区别。

UNIX Domain Socket 与 TCP/IP Socket 对比

socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。
虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),
但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。
UNIX域套接字与TCP套接字相比较,在同一台主机的传输速度前者是后者的两倍。
这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的。
UNIX Domain Socket也提供面向流和面向数据包两种API接口,类似于TCP和UDP,但是面向消息的UNIX Domain Socket也是可靠的,消息既不会丢失也不会顺序错乱。

参考文章:Unix domain socket 和 TCP/IP socket 的区别

以上是关于域socket(domain socket)和ipsocket(TCP/IP socket)区别的主要内容,如果未能解决你的问题,请参考以下文章

Unix域套接字-Unix Domain Socket(转)

#yyds干货盘点#网络协议之:socket协议详解之Unix domain Socket

Socket编程的基本函数

socket.io 不断尝试在错误的地址上使用轮询

UNIX Domain Socket(UDS)是什么?同一台主机间进程间通信

Linux编程socket编程