前言
计算机为计算而生,计算需要有输入和输出,计算机的输入输出抽象为I/O,UNIX的计算机处理IO是通过文件的抽象。计算机不同进程之间也有输入输出,也就是通信,因此这个通信也是通过文件的抽象文件描述符来进行。
在同一台计算机,进程间是通过以上方式通信的,如果是不同的计算机呢?
一、什么是Socket(中文中称为套接字)
首先Socket是一种操作系统提供的通信机制。不同计算机之间进行通信的一个抽象。
在操作系统中,通常会为应用程序提供一组应用程序接口(API)。这被称为套接字接口,应用程序可以通过套接字接口来试用网络套接字(网络套接字是电脑网络中进程间数据流的端点)以实现数据交换。
Socket工作于TCP/IP协议中应用层和传输层之间的一个抽象。如下图所示:
二、服务器通信
Socket保证了不同计算机之间的通信,也就是网络通信,对于B/S 或C/S架构。通信模型是客户端(或前端)之间的通信。两个端都建立一个socket对象,然后通过socket对象对数据进行传输。通常服务端处于无限循环状态,等待客户端连接。
三、Socket通信中TCP协议的三次握手