TCP 协议


TCP 协议是传输层上一个非常重要的协议, 即: 传输控制协议

1. TCP 协议端格式

在这里插入图片描述

  • 源 / 目的端口号: 表示数据是从哪个进程来, 到哪个进程去
  • 32 位序号 / 32 位确认号: 保证 TCP 可靠传输的一种机制
  • 序号(SN): 用于对字节流进行编号:
    例如: 序号为 301, 表示第一个字节的编号为 301, 如果携带的数据长度为 100 字节, 则下一个报文段的编号就应该为 401
  • 确认号(ASN): 希望收到的下一个报文段的编号
    例如: B 收到 A 发来的一个报文段序号为 501, 携带的数据长度为 200 字节, 则 B 期待下一个收到的报文编号为 701, 所以 B 发送给 A 的确认报文段中确认序号就为 701
  • 4 位首部长度: 表示该 TCP 首部有多少个字节, 通常情况下是 4 个字节. 如果该选项为空, 则 TCP 首部为 20 个字节. 如果该选项不为空且为最大, 则 TCP 首部为 60 个字节 (TCP 最大首部长度就是 60 个字节)
  • 6 位标志位:
    • UGR: 紧急指针是否有效
    • ACK : 确认号是否有效
      ACK 只有两种情况: 0: 不具备应答能力; 1. 具备应答能力
    • PSH: 提醒接收端应用程序立刻从 TCP 缓冲区把数据读走
    • RST: 对方要求重新建立连接, 我们把携带 RST 标识的称为 复位报文段
    • SYN: 请求建立连接, 我们把携带 SYN 标识的称为 同步报文段
    • FIN: 通知对方, 本端要关闭了, 我们称携带 FIN 标识的为 结束报文段
  • 16 位窗口大小:
  • 16 位检验和: 和 UDP 的检验方法相同, 使用 CRC 检验, 但此处的检验, 不光包括 TCP 首部, 也包括 TCP 数据部分
  • 16 位紧急指针: 标识哪部分数据是紧急数据

2. TCP 可靠传输

2.1 什么是可靠性

可靠性是指:

  1. 通过 TCP 发送的数据, 能保证对方一定收到
  2. TCP 只能尽全力保证数据可以正确的发送给对方, 但它并不能完全保证数据一定能发送给对方
    ①. 数据会尽量发送给对方, 即使发送失败了, 应用层也可以知道数据发送失败的情况
    ②. 尽量保证数据会按照发送方的顺序到达接收方
    ③. TCP 会选择合适的数据大小进行发送
    ④. 由于 TCP 会做重传的操作, 所以有时候会出现接收方接收到重复的数据, 但这种情况下, TCP 会进行相应的处理

2.1.1 保证可靠性方法 — 确认应答(ACK)机制

  1. 什么是确认应答(ACK)机制:
    当发送方发送数据之后
    ①. 如果在超时时间(大概一个往返的时间)内, 发送方收到了接收方的应答, 就代表对方收到了数据
    ②. 如果在超时时间到达后, 发送方没有收到接收方的应答, 就代表对方没有收到数据
  2. 确认应答机制 如图所示:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值