【关于】套接字的进程间通讯
RT,用TCP套接字做进程间通讯,本地IP地址是192.168.1.1。
服务端S1绑定127.0.0.1,服务端S2绑定192.168.1.1。
本地客户端C连接他们,请问C-S1和C-S2的数据交换是在同一层的吗?
[解决办法]
C和S都在一台机器上吧
是吧。
C->S1和C->S2 都使用同一个lo接口通信了。数据都不过到IP层以下。在IP层时,检测到目的地址是127.0.0.1直接送到目的socket的接收缓冲中,否则又会检测是否是本机IP,是的话,然后再直接送到目的socket的接收缓冲中。如果目的IP不是本机IP且不是127.0.0.1,才会向下层数据链数层传送处理。
也就是说本机间的通信是在tcp层时,就直接送到各自目的socket的接收缓冲了。
bind的哪个IP,则connect的目的IP和端口得对应IP
否则就 bind通配地址0.0.0.0
只是在本机上当作进程间通信,,和数据交换是不是在协议栈的同一层有关系吗?
[解决办法]
是同一层,TCP,UDP 协议的那一层。
[解决办法]
实际上都是使用环回地址,数据包没到达数据链路层以下
[解决办法]
是在同一层