找人做企业网站 注意什么,wordpress设置阅读更多,编程软件下载安装,全网品牌营销1. AF_INET域socket通信过程 典型的TCP/IP四层模型的通信过程。 发送方、接收方依赖IP:Port来标识#xff0c;即将本地的socket绑定到对应的IP端口上#xff0c;发送数据时#xff0c;指定对方的IP端口#xff0c;经过Internet#xff0c;可以根据此IP端口最终找到接收方…1. AF_INET域socket通信过程 典型的TCP/IP四层模型的通信过程。 发送方、接收方依赖IP:Port来标识即将本地的socket绑定到对应的IP端口上发送数据时指定对方的IP端口经过Internet可以根据此IP端口最终找到接收方接收数据时可以从数据包中获取到发送方的IP端口。 发送方通过系统调用send()将原始数据发送到操作系统内核缓冲区中。内核缓冲区从上到下依次经过TCP层、IP层、链路层的编码分别添加对应的头部信息经过网卡将一个数据包发送到网络中。经过网络路由到接收方的网卡。网卡通过系统中断将数据包通知到接收方的操作系统再沿着发送方编码的反方向进行解码即依次经过链路层、IP层、TCP层去除头部、检查校验等最终将原始数据上报到接收方进程。 2. AF_UNIX域socket通信过程 典型的本地IPC类似于管道依赖路径名标识发送方和接收方。即发送数据时指定接收方绑定的路径名操作系统根据该路径名可以直接找到对应的接收方并将原始数据直接拷贝到接收方的内核缓冲区中并上报给接收方进程进行处理。同样的接收方可以从收到的数据包中获取到发送方的路径名并通过此路径名向其发送数据。 3. 相同点 操作系统提供的接口socket(),bind(),connect(),accept(),send(),recv()以及用来对其进行多路复用事件检测的select(),poll(),epoll()都是完全相同的。收发数据的过程中上层应用感知不到底层的差别。 4. 不同点 1 建立socket传递的地址域及bind()的地址结构稍有区别 socket() 分别传递不同的域AF_INET和AF_UNIX bind()的地址结构分别为sockaddr_in制定IP端口和sockaddr_un指定路径名 2 AF_INET需经过多个协议层的编解码消耗系统cpu并且数据传输需要经过网卡受到网卡带宽的限制。AF_UNIX数据到达内核缓冲区后由内核根据指定路径名找到接收方socket对应的内核缓冲区直接将数据拷贝过去不经过协议层编解码节省系统cpu并且不经过网卡因此不受网卡带宽的限制。 3 AF_UNIX的传输速率远远大于AF_INET 3 AF_INET不仅可以用作本机的跨进程通信同样的可以用于不同机器之间的通信其就是为了在不同机器之间进行网络互联传递数据而生。而AF_UNIX则只能用于本机内进程之间的通信。 5. 使用场景 AF_UNIX由于其对系统cpu的较少消耗不受限于网卡带宽及高效的传递速率本机通信则首选AF_UNIX域。 不用多说AF_INET则用于跨机器之间的通信。 http://blog.csdn.net/sandware/article/details/40923491