网络编程-002-TCP-socket

TCP协议的工作流程

  • 建立连接
    通过三个报文段完成连接的建立, 该过程又称为三次握手
  • 传输数据
    • 数据流分割成适当长度的TCP报文段, 传递给IP层进一步处理后发出
    • 给每个字节编一个序号, 确保不丢包, 接收端按顺序接收包
    • 接收端对已成功收到的字节发回一个确认 (ACK), 如果发送端在往返时延 (RTT) 内未收到确认, 重传数据
  • 关闭连接
    当需要终止一个连接时, 要经过四次挥手

TCP协议的特点

  • 面向连接的传输
  • 端到端的通信
  • 确保传输数据的可靠性, 不出现丢失或乱序
  • 全双工方式传输
  • 采用字节流方式, 即以字节为单位传输序列
  • 紧急数据传送功能

TCP状态表

状态 描述
CLOSED 关闭状态, 没有连接或活动正在进行
LISTEN 监听状态, 服务器正在等待连接进入
SYS RCVD 收到一个连接请求, 尚未确认
SYS SENT 已经发出连接请求, 等待确认
ESTABLISHED 连接建立, 正常数据传输状态
FIN WAIT 1 (主动关闭) 已经发送关闭请求, 等待确认
FIN WAIT 2 (主动关闭) 收到对方关闭确认, 等待对方关闭
TIMED WAIT 完成双向关闭, 等待所有分组死掉
CLOSING 双方同时尝试关闭, 等待对方确认
CLOSE WAIT (被动关闭) 收到对方关闭请求, 已经确认
LAST ACK (被动关闭) 等待最后一个关闭确认, 并等待所有分组死掉

TCP-socket 编程模型

网络编程-002-TCP-socket