TCP连接三次握手

97 阅读2分钟

TCP的定义和特性

TCP(传输控制协议Transmission Control Protocol):面向连接,在传递数据之前会测试主机的联通性,如果通才会传输真是数据。

TCP协议的特性

  • 工作在传输层
  • 面向连接协议
  • 全双工协议
  • 半关闭
  • 错误检查
  • 将数据打包成段,排序
  • 确认机制
  • 数据恢复,重传
  • 流量控制,滑动窗口:一次传多少

TCP数据段

TCP数据段由TCP头部+上层数据组成。

image.png 源端口号和目标端口号

  1. 客户端程序的端口号是随机产生的
  2. 服务器程序的端口号一般是固定的
  3. 前1024端口被知名程序使用
  4. 端口号的范围0-65535(2^16=65536)从0开始。
  5. 一个端口号只能被一个应用程序使用
  6. 协议的最终体现形式是应用程序

序号 该报文段的序号

确认号 确定对面收到了我的包,并且约定我下一个包的序号(序号+1)

序号为x的包

第一步:A————————>B

确认号x+1

第二步:A<————————B

序号x+1,确认号y+1

第三步:A————————>B

举例:

A电脑发送了一个序号为X的包给B B只有收到A的包后才知道A发的包的序号为X才可以生成X+1确认号,才能告诉对面我收到了你的包,并且规定对面下一个包的序号为X+1。 A收到B的回复报文发现了确认号为X+1知道对面收到了我的包,并且要求我一个包的序号为X+1。

控制位 定义:确定目前两台电脑处于什么阶段(请求连接,建立连接,半断开,断开连接)

  1. URG(紧急位):报文数据是否包含紧急数据
  2. ACK(确认位):确认同意连接和断开连接
  3. PSH(急切位):报文数据是不是需要立即执行
  4. RST(重置位):出现错误,报文数据重新传输
  5. SYN(同步位):请求建立连接
  6. FIN(结束位):断开连接

image.png

窗口大小: 允许对方发送的数据量(一个包的大小)

校验和: 确认包是否完整

选项部分: 决定最大TCP首部的总长度

TCP连接

TCP建立连接的过程称为三次握手

image.png

客户端状态

closed状态:初始状态,表示TCP连接是“关闭着的”或“未打开的”

listen状态:监听状态,等待来自远方TCP端口的连接请求

SYN_SENT状态:表示客户端已发送SYN报文,等待服务端的确认

SYN-RECEIVED 状态:在收到和发送一个连接请求后,等待对方确认

ESTABLISHED状态表示TCP连接已经成功建立,服务端和客户端建立数据连接