2.2.1 连接是什么意思
- 连接实际上是通信双方交换控制信息,在套接字中记录这些必要信息并准备数据收发的一连串操作,比如客户端将自己的IP地址和端口号告知服务器的过程。
- 执行收据收发操作需要一块用来临时存储收发数据的内存空间,这块空间称为缓冲区,它也是在连接操作的过程中分配的。
2.2.2 负责保存控制信息的头部
- 控制信息大体可分为两类。
- 第一类是客户端和服务器连接时交换的控制信息,这些信息在数据收发、断开连接等整个通信过程中都需要,TCP协议对此进行了定义。主要包括:收发方端口号、发送数据的顺序编号、接收数据的顺序编号ACK、数据偏移量、保留字段、控制位(URG ACK PSH RST SYN FIN)、窗口、检验和、紧急指针、可选字段。
- 另外一类,就是保存在套接字中,用来控制协议栈操作的信息(套接字内存空间中的信息)。
2.2.3 连接操作的实际过程
- 客户端先创建一个包含表示开始数据收发操作的控制信息的头部,头部控制位的SYN比特设置为1,还要设置适当的序号和窗口大小。
- 服务端收到数据后,在套接字写入相应的信息,将状态改为正在连接。然后返回响应,需要设置SYN和ACK。
- 客户端收到响应,如果SYN为1表示连接成功,这时向套接字中写入服务器的IP地址、端口号等信息,然后客户端发送确认收到响应的包,ACK设置为1。当服务器收到这个包后,连接操作才算完成。