管道的本质是什么,文件吗?同主机上的进程能否使用 socket 通信?此时还会牵涉到传输层和网卡(驱动)吗?

2020-09-27 09:55:11 +08:00
 Newyorkcity
面试被问得我脑袋昏昏
765 次点击
所在节点    问与答
2 条回复
unixeno
2020-09-27 10:19:39 +08:00
管道的本质是一块内存上的 buffer
当然可以用 socket,你用 tcp 或者 udp 就会过一遍相应的协议栈,但是本地环回地址不通过网卡,内核内部就处理消化了
如果你用 domain socket,那就和网络层传输层都没关系了,只是一个内存读写的问题,所以 uds 性能高
codehz
2020-09-27 10:21:16 +08:00
管道就是系统提供的进程间通讯机制(
按 unix 那套就是文件
同主机可以用 socket
不管是 127.0.0.0/8 还是用 unix socket 都不会涉及网卡,但是前者会涉及 OSI 模型里的传输层(至网络层),不过这个问题有点复杂,参考 "Till which layer does the loopback packet goes? - Computer Science Stack Exchange" https://cs.stackexchange.com/questions/47218/till-which-layer-does-the-loopback-packet-goes
限于这里没提供操作系统,所以最后一个问题也有可能是都涉及驱动,有些微内核模型的操作系统会把不同的通讯机制弄成不同的“驱动”来实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/710806

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX