Dav*_*ock 13 sockets tcp localhost processing-efficiency interprocess
在某些环境(如Java)中,使用TCP/IP套接字使用"localhost"地址(IPv4中为127.0.0.1或IPv6中为:: 1)在同一主机上的进程之间传递消息是很自然的.(因为Java倾向于不在其API中公开其他IPC机制).
显然,通过管道传递消息或使用共享内存的IPC,这可能比IPC慢得多.
另一方面,如果TCP/IP网络堆栈意识到连接的两端都在环回接口上,那么它可能能够进行一些优化,这样效率可能与使用管道没有太大差别.
但是,常见的操作系统(Windows,Linux)是否在其TCP/IP堆栈中实现了这样的优化?
小智 8
是.当收到数据包/数据到环回地址(127.xxx)时,TCP/IP的IP层使用环回路由将数据包路由到自身.
Looback路线
网络目的地|| 网络掩码|| 网关|| 接口|| 公
127.0.0.0 |||||||||||||||||||||| 255.0.0.0 || 127.0.0.1 || 127.0.0.1 || 1
在将其路由到itsef后,在TCP/UDP层借助协议控制块(每个连接数据结构),将识别相应的套接字及其所有者进程以传递分组/数据.
底线,将避免数据链路层和物理层(OSI模型)的所有任务.
取决于操作系统和所使用的配置。如果您要求默认行为,答案是肯定的。
这就是为什么您无法使用wireshark等工具来嗅探本地环回场景的原因。
[其他用户编辑]:其实这是可以的,你必须选择Loopback接口(使用Wireshark 3.4测试)
| 归档时间: |
|
| 查看次数: |
8421 次 |
| 最近记录: |