TCP协议

概述

  1. .TCP是一个可以提供可靠的,支持全双工,连接导向的协议,因此再客户端和服务端之间传输数据的时候,必须先建立一个连接

TCP的特点

  • 什么是连接
    • 连接是一个虚拟,抽象的概念
    • 能让两个通信的程序间确保彼此都在线
    • 加快响应速度
    • 连接也被称为会话
    • 拥有连接一般都是使通信更稳定,安全,但是会消耗更多资源
  • 全双工
    • 单工:任何时刻数据只能单向发送
    • 半双工:允许数据在两个方向上传输 ,在某一时刻只允许数据在一个方向上传输
    • 全双工: 任何时刻都能双向发送数据
  • 可靠性
    • 可靠性是指数据保证无损传输
    • 发送方将数据有序发送,但是接收方接收数据可能是无序的,所以接收方要有一种算法保证使无需的数据恢复到原有顺序
    • 多播:发送方将数据同时发送给多个接收方
      • 多播时可靠性就要每个接收方都获得无损副本
      • 多播中有一个强可靠性:就是有一个接收方接收到了无损副本,那么其他接收方都必须接收到无损副本,否则要么所有接收方都要拒接这个消息

TCP协议的工作过程

  • 建立连接的过程(三次握手)在这里插入图片描述

  • 断开连接的过程(四次挥手)在这里插入图片描述

  • 传输数据

    • 报文拆分:将应用层数据拆分成一个个TCP段
      • 为什么拆分:
        • 应用层数据很大时无法一次性传输完
        • 拆分后可实现并行传输
    • 顺序保证
      • 数据传输时顺序发出,乱序到达
        • 对TCP段进行标序号,接收后根据序号进行排序
        • 如果TCP段特别多的时候该如何进行排序呢?
          • 时间窗口:每次排序只固定在某一时间段内的数据,发送方给接收方一个时间窗口,在这个时间窗口内发送数据,接收方接收这个时间段的数据并进行排序,如果接收的数据不是这个时间段内的数据,那么接收方可能会抛弃整个时间窗口的数据
      • TCP序号:
        • 发送序号(Seq),接收序号(Ack)
        • 一个端的发送序号是另一个端的接收序号
          • a发送Seq=10,Ack=100给b,那么b发送Seq=100,Ack=10给a在这里插入图片描述

TCP头部结构

  • TCP头
    • 介绍
      • TCP报文段:
        • TCP头部
        • TCP段数据
      • 源端口:描述发送方机器上的应用
      • 目标端口: 描述接收方服务器上的应用
      • 发送序号(Seq)/接收序号(Ack):每个序号32位字节
    • TCP头-标志位
      • 大概又9个标志位:如SYN,ACK,FIN这些属于标志位
      • NS,CWR,ECN标志位: 属于TCP扩展协议
        • ECN:显示拥塞控制协议,有助于帮助解决延迟和丢包问题
        • URG:紧急标志位(这个数据紧急处理)
        • SYN:同步序号,也就是在建立连接
        • FIN:终止连接
        • ACK:响应
        • PSH: 传送数据
        • RST: 重置连接

TCP协议周边设置

  • 纠错能力
    • 作用:保证数据可靠性
      • (Tcp通过流控能力,帮助两边协同速率提高可靠性)
    • TCP拥有一个16bit的Checksum字段
      • Checksum是一个函数,把原文映射到一个不可逆的16bit的编码中,接收方同样用这个Checksum函数就可以计算原文的编码,计算完之后比较两个编码是否一样,这样就知道原文传输过程中有没有发生变化,如果变化了,接收方就会丢掉这个封包
    • 流控能力
      • 主要目标:
        • 让发送方和接收方协商一个合理的速率,让两边稳定工作
      • 流控能力主要利用滑动窗口
        • 例如发送方有一个一万字节的窗口,发送方需要填满这个窗口,而接收方会给一个返回ack,如果发送方没有接收返回,那么发送方就不会发送更多数据了,一直等到你的返回
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值