首页 > 编程知识 正文

以太网通讯协议,websocket

时间:2023-05-03 14:11:49 阅读:17451 作者:96

1. AF_INET域套接字通信过程

典型TCP/IP层模型的通信过程。

发送端、接收端依赖IP :端口进行识别。 也就是说,在将本地套接字绑定到相应的IP端口并发送数据时,可以指定对方的IP端口,然后通过互联网从该IP端口最终找到接收方; 接收到数据后,可以从数据包中获取源IP端口。

发送端通过系统调用send ()向操作系统内核缓冲器发送原始数据。 内核缓冲器从上面开始依次经过TCP层、IP层、链路层的代码,附加分别对应的报头信息,通过网卡向网络发送一个数据包。 通过网络路由到接收方的网卡。 网卡通过系统中断将分组通知给接收方的操作系统,并在发送方编码的反向上解码。 即依次经过链路层、IP层、TCP层进行去头、检查等,最终将原始数据报告给接收方的过程。

AF_UNIX域套接字通信过程的典型本地IPC依赖于路径名来标识发送方和接收方,如管道。 即,在发送数据时,指定接收方绑定的路径名,操作系统可以根据该路径名直接找到相应的接收方,将原始数据直接复制到接收方内核缓冲器中,并向接收方进程报告进行处理。 同样的接收端可以从接收的分组中取得发送端的路径名,并通过该路径名发送数据。

3 .由同一点操作系统提供的接口socket ()、bind ()、connect ()、accept ()、send ()、recv ) )和用于检测复用事件的select () 在发送和接收数据的过程中,上层APP应用无法感知下层的差异。

4 .差异1建立从套接字传递的地址域和bind ) )的地址结构略有不同。

socket ()分别传递不同的域AF_INET和AF_UNIX

bind ) )的地址结构分别是sockaddr_un (指定IP端口)和sockaddr_un (指定路径名)

2 AF_INET通过多个协议层的编解码器,消耗系统cpu,并且数据传输需要通过网卡,受到网卡带宽的限制。 当AF_UNIX数据到达内核缓冲器时,内核根据指定的路径名找到与接收套接字对应的内核缓冲器,直接复制数据,并在不经过协议层的情况下进行编解码,从而节约系统cpu,并且

3 AF_UNIX的传输速率远大于AF_INET

3 AF_INET不仅可以用于本机进程间通信,还可以用于不同设备之间的通信。 这是为了在不同设备之间进行网络互联并传输数据而产生的。 AF_UNIX只能用于本地进程之间的通信。

5 .由于系统cpu消耗较少,并不限于网卡的带宽,并且高效的传输速率,因此使用场景AF_UNIX本地通信优先考虑AF_UNIX域。

不用说,AF_INET用于机器之间的通信。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。