linux本地进程间socket通信是否经过网卡?

来源:互联网 发布:上古卷轴5天际捏脸数据 编辑:程序博客网 时间:2024/05/20 21:46
转自:https://www.zhihu.com/question/43590414
结论:不走网卡,不走物理设备,但是走虚拟设备,loopback device环回.

最简单的办法,拔掉网线,自己测试一个本地socket通信传输数据,就OK了。

本机的报文的路径是这样的:
应用层-> socket接口 -> 传输层(tcp/udp报文) -> 网络层 -> back to 传输层 -> backto socket接口 -.> 传回应用程序

在网络层,会在路由表查询路由,路由表(软件路由,真正的转发需要依靠硬件路由,这里路由表包括快速转发表和FIB表)初始化时会保存主机路由(host route,or 环回路由), 查询(先匹配mask,再匹配ip,localhost路由在路由表最顶端,最优先查到)后发现不用转发就不用走中断,不用发送给链接层了,不用发送给网络设备(网卡)。像网卡发送接收报文一样,走相同的接收流程,只不过net device是loopback device,最后发送回应用程序。这一套流程当然和转发和接收外网报文一样,都要经过内核协议栈的处理,不同的是本机地址不用挂net device.
原创粉丝点击