socket是什么意思?socket通信原理分析

socket是什么意思?socket通信原理分析socket是什么意思
Socket的中文翻译过来就是“套接字” 。套接字是什么 , 我们先来看看它的英文含义:插座 。
Socket就像一个电话插座 , 负责连通两端的电话 , 进行点对点通信 , 让电话可以进行通信 , 端口就像插座上的孔 , 端口不能同时被其他进程占用 。而我们建立连接就像把插头插在这个插座上 , 创建一个Socket实例开始监听后 , 这个电话插座就时刻监听着消息的传入 , 谁拨通我这个“IP地址和端口” , 我就接通谁 。
实际上 , Socket是在应用层和传输层之间的一个抽象层 , 它把TCP/IP层复杂的操作抽象为几个简单的接口 , 供应用层调用实现进程在网络中的通信 。Socket起源于UNIX , 在Unix一切皆文件的思想下 , 进程间通信就被冠名为文件描述符(file desciptor) , Socket是一种“打开—读/写—关闭”模式的实现 , 服务器和客户端各自维护一个“文件” , 在建立连接打开后 , 可以向文件写入内容供对方读取或者读取对方内容 , 通讯结束时关闭文件 。
另外我们经常说到的Socket所在位置如下图:

socket是什么意思?socket通信原理分析

文章插图
socket是什么意思?socket通信原理分析

文章插图
socket是什么意思?socket通信原理分析

文章插图
socket是什么意思?socket通信原理分析

文章插图
socket是什么意思?socket通信原理分析

文章插图
  • 某个应用进程调用close()主动关闭 , 发送一个FIN;
  • 另一端接收到FIN后被动执行关闭 , 并发送ACK确认;
  • 之后被动执行关闭的应用进程调用close()关闭Socket , 并也发送一个FIN;
  • 接收到这个FIN的一端向另一端ACK确认 。
【socket是什么意思?socket通信原理分析】上面的代码是简单的演示Socket的基本函数使用 , 其实不管有多复杂的网络程序 , 这些基本函数都会用到 。上面的服务端代码只有处理完一个客户端请求才会去处理下一个客户端的请求 , 这样的服务器处理能力很弱 , 而实际中服务器都需要有并发处理能力 , 为了达到并发处理 , 服务器就需要fork一个新的进程或者线程去处理请求 。