套接字
Socket是进程间通信的一种抽象,提供了一套API接口,对网络传输层一套具体的进程提供了抽象接口的调用
在系统场景中系统一般提供三种类型的Socket:也就是
-
- 流式Socket(Stream Socket)基于TCP,要三次握手的那个,可靠的字节流。
- 数据报Socket(Dategram Socket)基于UDP,基于数据报的非可靠数据传输服务
- 原始Socket(Raw Socket)绕过内核协议栈,填充各级协议头直接构造数据包,常规应用不使用。
Socket的连接
更准确来说是,流式Socket连接的相关内容
基本概述:
TCP通信需要先建立虚拟链路(通信双方的一个连接,connection),TCP/IP通讯下,Socket采用四元组(源IP、源端口、目的IP、目的端口)标识(identity)
$$ identity $$
连接状态
//源文件:include/net/tcp_states.h
enum{
TCP_ESTABLISHED = 1;
TCP_SYN_SENT,
TCP_SYN_RECV,
TCP_FIN_WAIT1,
TCP_FIN_WAIT2,
TCP_CLOSE,
TCP_CLOSE_WAIT,
TCP_LAST_ACK,
TCP_LISENCE,
...
};
连接队列
同一时间只能处理一个连接
openEuler提供了两种列缓存连接请求,分别为半连接队列和连接队列,当服务端建立具体的请求时,
第一次的握手,