侧边栏壁纸
博主头像
飞鸽FlyGo博主等级

致力于成为一名全栈架构师!

  • 累计撰写 13 篇文章
  • 累计创建 6 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

[5] TCP协议

飞鸽FlyGo
2022-09-11 / 0 评论 / 0 点赞 / 11,660 阅读 / 1,041 字 / 正在检测是否收录...

简要描述

  • 概述
  • TCP的特点
  • TCP协议的工作过程
  • TCP头部结构

一、概述

TCP全名是(Transport Control Protocol),是一个可以提供可靠的、支持全双工连接导向的协议,因此在客户端和服务端之间传输数据的时候,是必须先建立一个连接的。

二、TCP的特点

  • 什么是连接
  • 什么是全双工
  • 如何保证正确性

1、连接

  • 虚拟抽象的概念
  • 能让两个通信的程序间确保彼此都在线
  • 加快响应请求速度
  • 连接也被称为会话(Session)
  • 使通信更稳定安全
  • 消耗更多资源

2、全双工

  • 单工:任何时刻数据只能单向发送
  • 半双工:运行数据在两个方向上传输,在某一时刻,只允许数据在一个方向上传输
  • 全双工:任何时刻都能双向发送数据

3、可靠的

可靠性指数据保证无损传输

  • 使无序的数据恢复原有顺序
  • 多播时每个接收方都获得无损副本

三、TCP协议的工作过程

1、建立连接的过程(三次握手)

  • 客户端发送SYN
  • 服务端准好进行连接
  • 服务端针对客户端的SYN给ACK
  • 服务端发送SYN
  • 客户端准备就绪
  • 客户端发送ACK
流程图 (3).jpg

2、断开连接的过程(四次挥手)

  • 客户端发送断开请求FIN
  • 服务端收到请求,发送ACK
  • 服务端经过一个等待、确定可以关闭连接,发送FIN
  • 客户端收到FIN,处理完自己的事情后发送ACK
流程图 (4).jpg

3、传输数据

  • TCP协议
    • 报文拆分
    • 增加TCP头
    • 数据重组

4、传输数据-报文拆分

  • 应用层数据很大时无法一次性传输完
  • 拆分后可实现并行传输

5、传输数据-顺序保证

6、传输数据-顺序保证

  • TCP序号:发送序号(Seq)、接手序号(Ack)
  • 一个端的发送序号是另一个端的接收序号
  • 源端口:描述发送方机器上的应用
  • 目标端口:描述接受伐服务器上的应用
  • 发送序号(Seq)/接收序号(Ack)

7、TCP握手、数据传输、挥手的完整过程

流程图 (5).jpg

8、TCP头

  • 源端口:描述发送方机器上的应用
  • 目标端口:描述接受伐服务器上的应用
  • 发送序号(Seq)/接收序号(Ack)

9、TCP头-标志位

  • NS、CWR、ECE:TCP扩展协议
  • ECN:显示拥塞控制协议,有助于帮助解决延迟和丢包问题
  • URG:紧急标志位
  • SYN(Synchronize Sequence Numbers):同步序号,也就是建立连接
  • FIN(Finish):终止连接
  • ACK(Achnowledgment):响应
  • PSH(Push):传输数据
  • RST(Reset Connection):重置连接

10、TCP协议头部具体结构

四、TCP协议周边配置

  • 纠错能力:保证数据可靠性
  • 流控能力:协同两边速率,保证可靠性
  • 拥塞控制能力:确定网络的拥堵情况决定传输速度

1、纠错和Checksum

  • TCP拥有一个16bit的Checksum字段
  • Checksum是一个函数把原文映射到一个不可逆的16bit的编码中,这样就可以知道原文传输过程中有没有发生变化

2、流控能力

  • 主要目标:让发送方和接收方协商一个合理的收发速率,让两边都可以稳定的工作
  • 利用滑动窗口

五、总结

  • TCP协议的特点
  • 连接、双工、可靠性
  • TCP协议的工作过程(3次握手/4次挥手)和传输数据的过程
  • TCP头在控制传输过程中的作用
  • 纠错能力、流控能力

关注与赞助

飞鸽FlyGo官网

官方网站:https://www.liangronghui.com

微信公众号

赞助

码字和开源离不开您的支持,感谢您的赞助和支持。

0

评论区