TCP服务端的默认函数调用顺序

1

进入等待连接请求状态

1

服务器端套接字作为门卫受理连接请求,等候室就是 连接请求队列
1

受理客户端请求

1

服务器端通过调用 accept 接受连接请求,并创建一个 对等的socket 用来与客户端通信(面向连接的套接字是一一对应的),服务端套接字继续受理连接请求
1

TCP客户端的默认函数调用

1

请求连接

1

1

这里所说的 接受连接请求,并不意味着服务端调用 accept,而是 服务端把连接请求记录到等待队列

客户端的IP地址和端口号 在调用 connect 时自动分配

1

基于TCP的服务端/客户端函数调用关系

1

1

TCP原理

TCP套接字的IO缓冲

1

1

TCP内部工作原理1:与对方套接字的连接

三次握手

1

套接字是以全双工方式工作的,它可以双向传递数据

  1. 主机A向主机B发送一个数据同步消息(SYN),表示请求连接
  2. 主机B向主机A发送一个ACK确认和一个SYN同步消息
  3. 主机A向主机B发送一个ACK确认

第一步,用来确认主机A的发送能力(SYN)

第二步,用来确认主机B的发送能力(SYN)和接收能力(ACK)

第三步,用来确认主机A的接收能力(ACK)

经过三次握手,我们就能够确认通信双方是否具备正常的发送/接收能力

TCP内部工作原理2:与对方主机的数据交换

1

1

通过ACK的信息来确定是否正常

1

发生错误时,会有 重传机制

TCP内部工作原理3:断开与套接字的连接

四次挥手

TCP套接字断开连接时,通信双方可能还会有数据在缓冲区中准备传送,所以不能直接断掉,需要进行一定的协商

1

TCP套接字都有各自的IO缓冲区,也就是说都有自己的读端和写端

  1. 主机A向主机B发送FIN消息,表示没有数据要发送,准备断开连接

  2. 主机B向主机A发送ACK消息,表示同意断开连接

  3. 主机B向主机A发送FIN消息,表示没有数据要发送,准备断开连接

  4. 主机A向主机B发送ACK消息,然后双方连接正式关闭

第一步,主机A关闭自己的写端

第二步,主机B在读完缓冲区中的数据后,关闭自己的读端

第三步,主机B关闭自己的写端

第四步,主机A在读完缓冲区中的数据后,关闭自己的读端

经过四次挥手,服务端和客户端的套接字的IO端均关闭,双方正式断开连接

 posted on 2025-06-17 15:39  Dylaris  阅读(80)  评论(0)    收藏  举报