运输层笔记--TCP

运输层笔记–TCP

@(TCP/IP)[TCP]

TCP报文段
@TCP报文段

1. TCP服务

  1. 进程到进程的通信
  2. 流交付服务。
    • TCP允许进程以字节流的形式来传递数据(UDP中进程传递用户数据报,已定义好边界),但TCP会把若干字节组成报文段
    • TCP中会存在两个缓存,即发送缓存和接收缓存,每个方向各一个。这些缓存可用来进行流量控制和差错控制
  3. 全双工通信
  4. 复用和分用
  5. 面向连接的服务。两个TCP之间建立虚连接,而不是物理连接。
  6. 可靠的服务

2. TCP特点

  1. 编号系统:TCP是面向字节的,所以首部中的序号和确认号字段所指的都是字节的编号
    • 字节号:TCP把一个连接中要发送的所有数据字节都编号,编号从0~ (2321) 之间的一个随机数开始。
    • 序号:每个报文段的序号就是这个报文段中首字节的编号
    • 确认号:期望接收的下一个字节的编号
  2. 流量控制:TCP能够使用面向字节的流量控制
  3. 差错控制:面向字节
  4. 拥塞控制

3. TCP连接

3.1 连接建立

三次握手:
@连接建立时的三次握手
1. 客户端发送第一个报文段,即SYN报文段。SYN报文段不携带任何数据,但是它要消耗一个序号
2. 服务器发送第二个报文段,即SYN+ACK报文段。SYN和ACK报文段不携带数据,但要消耗一个序号
3. 客户端发送第三个报文段,即ACK报文段。ACK报文段如果不携带数据就不消耗序号

3.2 数据传送

@数据传送

3.3 连接终止

  • 使用三次握手的连接终止
    1. 客户TCP在受到客户进程发来的关闭命令后,发送第一个报文段,这是一个把FIN置1的FIN报文段。如果FIN报文段不携带数据,它只消耗一个序号
    2. 服务器TCP收到这个FIN报文段后,通知进程,并发送第二个报文段,这是一个FIN+ACK报文段。如果FIN+ACK报文段不携带数据,则它只消耗一个序号
    3. 客户TCP发送最后一个报文段,这是一个ACK报文段。不携带数据,不消耗序号
      @使用三次握手的连接终止
  • 使用四次握手的连接终止——半关闭
    连接的一方可以停止发送数据,但仍可以接收数据,典型例子:排序
    @使用四次握手的连接终止

4. 流量控制

TCP中的数据流和流量控制反馈
@TCP中的数据流和流量控制反馈
注意:TCP实现中不提供从接收进程到接收TCP的流量控制反馈。即:接收TCP控制了发送TCP,而发送TCP控制了发送进程

TCP通过强制发送方和接收方不断调整窗口大小,实现流控。

rwnd=

5. 差错控制

  • 校验和
  • 确认
    • 累积确认(ACK)
    • 选择确认(SACK)
  • 重传
    • RTO之后的重传
    • 三个重复的ACK报文段之后的重传
      TCP保证数据必须按序交付到进程

6. 拥塞控制

拥塞窗口(cwnd):取决于网络

=minimum(rwnd,cwnd)

6.1 拥塞策略

  1. 慢开始:指数增大
  2. 拥塞避免:加法增大
  3. 拥塞检测:乘法减小
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值