1. 几个关键点
常用连接协议TCP、UDP的特点:
TCP:可靠的,全双工(同一时刻,允许数据在两个方向上同时传输)通信协议。
- 完成一次连接需要进行3次握手:客户端发起请求(SYN) —— 服务器收到客户端请求(SYN)并返回确认(ACK) —— 客户端收到服务器确认(ACK)并发送确认的确认(ACK) —— 服务器收到客户端确认(ACK),建立连接。
- 完成一次断开需要进行4次握手:主动关闭方发送(FIN) —— 接收方发送回复(ACK) && 接收方发送(FIN) —— 主动关闭放发送回复(ACK) —— 接收方收到回复(ACK),关闭连接。
一个完整的请求流程:
- 当服务器bind一个套接字的时候,一般服务器是一个多宿(简单理解为多个IP地址,一般bind一个端口,一个外网IP一个内网IP,例如xxx.xxx.xxx.xxx:21和192.168.1.100:21)的绑定。会生成一个套接字对,对应4节数据(本机地址:本机端口,对端地址:对端端口),初始绑定时,内容相当于( * :21;* : * ),*是通配符。
- 客户端连接成功之后,客户端也会生成一个套接字对,例如(192.168.1.110:1500;192.168.1.100:21)这里的本地端口,客户端会开启一个空闲端口。
- 服务器不管是否会开启新线程去处理连接,当客户端连接后,之前的套接字对会绑定客户端的I