网站建设提案,做网站不如做公众号,成都创新互联网站建设,外包公司网站一、简单介绍
Socket#xff0c;又称套接字#xff0c;是Linux跨进程通信#xff08;IPC#xff0c;Inter Process Communication#xff09;方式的一种。相比于其他IPC方式#xff0c;Socket牛逼在于可做到同一台主机内跨进程通信#xff0c;不同主机间的跨进程通信。…一、简单介绍
Socket又称套接字是Linux跨进程通信IPCInter Process Communication方式的一种。相比于其他IPC方式Socket牛逼在于可做到同一台主机内跨进程通信不同主机间的跨进程通信。根据通信域的不同可以划分成2种Unix domain socket 和 Internet domain socket。 二、Internet domain socket
Socket核心参数IP端口协议 确定唯一主机的唯一的进程以及通信的协议
信息从发送端Socket到接收端Socket由内核处理。 1、参数5
发送端Socket [tcp发送端IP发送端port接收端IP接收端port]
接收端Socket [tcp接收端IP接收端port发送端IP发送端port]
2、分类3
Socket根据通信协议的不同还可以分为3种流式套接字(SOCK_STREAM)数据报套接字(SOCK_DGRAM)及原始套接字。
流式套接字(SOCK_STREAM)最常见的套接字使用TCP协议提供可靠的、面向连接的通信流。保证数据传输是正确的并且是顺序的。应用于Telnet远程连接、WWW服务等。数据报套接字(SOCK_DGRAM)使用UDP协议提供无连接的服务数据通过相互独立的报文进行传输是无序的并且不保证可靠性。使用UDP的应用程序要有自己的对数据进行确认的协议。原始套接字允许对低层协议如IP或ICMP直接访问主要用于新的网络协议实现的测试等。原始套接字主要用于一些协议的开发可以进行比较底层的操作。它功能强大但是没有上面介绍的两种套接字使用方便一般的程序也涉及不到原始套接字。
3、套接字工作流程
流式套接字服务器首先启动通过调用socket()建立一个套接字然后调用bind()将该套接字和本地网络地址联系在一起再调用listen()使套接字做好侦听的准备并规定它的请求队列的长度之后就调用accept()来接收连接。客户端在建立套接字后就可调用connect()和服务器三次握手建立连接。连接一旦建立客户机和服务器之间就可以通过调用read()和write()来发送和接收数据。最后待数据传送结束后双方调用close()关闭套接字。 TCP角度看待 三、Unix domain socket
只是将应用层数据从一个进程拷贝到另一个进程。也可以用网络域实现IP为127.0.0.1即可
UNIX domain socket 是全双工的linux也支持。