TCP的定义和特性
TCP(传输控制协议Transmission Control Protocol):面向连接,在传递数据之前会测试主机的联通性,如果通才会传输真是数据。
TCP协议的特性
- 工作在传输层
- 面向连接协议
- 全双工协议
- 半关闭
- 错误检查
- 将数据打包成段,排序
- 确认机制
- 数据恢复,重传
- 流量控制,滑动窗口:一次传多少
TCP数据段
TCP数据段由TCP头部+上层数据组成。
源端口号和目标端口号
- 客户端程序的端口号是随机产生的
- 服务器程序的端口号一般是固定的
- 前1024端口被知名程序使用
- 端口号的范围0-65535(2^16=65536)从0开始。
- 一个端口号只能被一个应用程序使用
- 协议的最终体现形式是应用程序
序号 该报文段的序号
确认号 确定对面收到了我的包,并且约定我下一个包的序号(序号+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。
控制位 定义:确定目前两台电脑处于什么阶段(请求连接,建立连接,半断开,断开连接)
- URG(紧急位):报文数据是否包含紧急数据
- ACK(确认位):确认同意连接和断开连接
- PSH(急切位):报文数据是不是需要立即执行
- RST(重置位):出现错误,报文数据重新传输
- SYN(同步位):请求建立连接
- FIN(结束位):断开连接
窗口大小: 允许对方发送的数据量(一个包的大小)
校验和: 确认包是否完整
选项部分: 决定最大TCP首部的总长度
TCP连接
TCP建立连接的过程称为三次握手
客户端状态
closed状态:初始状态,表示TCP连接是“关闭着的”或“未打开的”
listen状态:监听状态,等待来自远方TCP端口的连接请求
SYN_SENT状态:表示客户端已发送SYN报文,等待服务端的确认
SYN-RECEIVED 状态:在收到和发送一个连接请求后,等待对方确认
ESTABLISHED状态表示TCP连接已经成功建立,服务端和客户端建立数据连接