TCP协议

目录

一、TCP基本特点

二、TCP 的核心特性


一、TCP基本特点

1.有连接

2.可靠传输

3.面向字节流

二、TCP 的核心特性

1.确认应答。

序号和确认序号的含义:

  1. 序号:每个字节都有一个自己的编号【虽然每一个报文里面都有确认序号这四个字节,但是并不是说随便一个报文,这里的序号都有意义,只有ACK的状态为为1的时候,序号才是有意义的】
  2. 确认序号:表示该序号之前的数据都已经确认收到了

2.超时重传 

消息由发送方发送了之后,隔了好长时间都没有收到响应,大概率是丢包了。发送方无法区分是数据报丢了,还是 ack 丢了,此时会触发重传机制。

  1. 发送的请求丢了,此时重传即可
  2. 接收方发送的响应丢了,此时重传意味着接收方会收到相同的数据,TCP会在内部进行数据去重
  1. 超时时间的策略:Linux 超时以500ms为单位进行控制,每次判定超时重发的超时时间间隔都是500ms的整数倍。
  2. 数据报去重,以序号为key进行去重,保证应用层读到的数据不是重复数据

3.连接管理

 a)建立连接,三次挥手

 b)断开连接,四次挥手

(1)为什么要建立连接

  1. 要让通信双方分别验证各自的发送能力和接受能力是否正常
  2. 协商一些参数

(2)建立连接具体过程:

双方各自向对方发送SYN,再各自向对方发送ACK,中间的ACK 和SYN合并在一起了

重要的 TCP 状态

1.LISTEN : 服务器启动完毕,随时可以有客户端建立连接

2.ESTABLISHED : 连接建立成功,随时可以传输消息

断开连接的过程

双方各自向对方发送 FIN,再各自向对方发送ACK,之间的ACK 和 FIN 不一定能合并在一起

时机不同

重要的TCP 状态:

1.CLOSE_WAIT :四次挥手挥了一半了,如果服务器出现大量的CLOSE_WAIT,说明代码有 bug,没有及时关闭

2.TIME_WAIT : 主动断开连接的以访,会进入 TIME_WAIT,哪怕进程已经消亡,TIME_WAIT 状态还是会持续一会防止 出现最后一个ACK丢包的情况,避免无法重传

等待时间:2MSL

三次握手

握手两次行不行?不行,此时主机B无法验证自己的发送能力和对方的接收能力

握手四次行不行?行,但是没必要,中间的 ACK 和 SYN 没必要拆开,合并在一起效率更高

四次挥手

挥手三次行不行?行,有可能的,捎带应答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值