Linux网络编程——TCP协议详解(二)

可靠性传输

TCP协议的头部结构

头部大小:20字节<=头部结构<=60字节
TCP头部结构

名称含义
16位源端口号发送程序的端口号
16位目的端口号接收程序的端口号
32位序号TCP报文段的编号,第一个编号由系统随机生成,后续的编号为前一个编号加上本报文段所携带的数据的第一个字节在整个字节流中的偏移量
32位确认号回馈数据时使用,为收到的报文段的序号值加上携带数据的长度再加1
4位头部长度标识了头部的大小
URG紧急标记位,为1时与16位紧急指针配合使用发送紧急数据
ACK确认标记,为1时32确认号才会发挥作用
PSH提示位,为1时告诉接收方将要发送大量数据,尽快清空接收缓冲区
RST复位报文段,通信出现问题重新建立连接
SYN同步报文段,建立连接时设置为1
FIN断开报文段,断开连接时设置为1
16位窗口大小接收通告窗口,由接收方填充,告诉发送方剩余缓冲区大小
16位校验和由发送端填充,校验头部部分和数据部分,保证数据的正确性
16位紧急指针标记紧急数据的位置
保证数据在网络中的可靠性传输
  1. 保证数据能够到达对端:应答确认机制、超时重传机制、滑动窗口机制、拥塞控制机制
  2. 保证数据不重复,不乱序:32位序号
  3. 保证数据不失真:16位校验和
应答确认机制&超时重传机制
  • 应答确认机制
    在这里插入图片描述
  • 超时重传机制
    在这里插入图片描述
  • 关于上述两种机制的一些问题
  1. 当发送端一直收不到确认,那么重传几次后就会终止传送并报错
  2. 当接收端每收到一个报文段就发送一个确认报文段,会大大的降低网络传输效率
    连续确认机制:当收到连续的报文段后,对最后一个报文段进行确认,就间接的对前面的报文段进行了确认
滑动窗口机制

作用:保证发送方发送数据的速率与接受方接收数据的速率相匹配

窗口
  • TCP头部结构中16位的窗口大小(接收通告窗口):由接收方填充,来通告发送方当前接收方的数据缓冲区中还能够容纳的数据的大小,决定了发送方能够发送的数据的窗口大小
  • 接收通告窗口会随着接收方的应用程序的数据处理动态变化
滑动
  • 发送方首先根据接收通告窗口决定本端能够发送的数据窗口,这个窗口的位置会随着收到接收方的确认报文段不断的向后移动,并且窗口大小也会随着接受通告窗口的值,大小不断发生变化
    在这里插入图片描述
拥塞控制机制

作用:控制发送方发送数据的速率与当前网络环境相匹配

  • 滑动窗口和拥塞控制都是为了减少数据在网络传输过程的丢包率,发送方的发送窗口为min(滑动窗口,拥塞控制)
四种算法

在这里插入图片描述

  1. 慢启动:刚开始向网络中发送数据,从1开始以指数方式增长( x_^2),达到慢启动门限初始值(16)时停止
  2. 拥塞避免:达到慢启动门限后以线性方式(+1)增长
  3. 快速重传:收到3个重复确认后(网络拥堵)启动快速重传
  4. 快速恢复:网络拥堵后,将慢启动门限的数据量设为当前数据量的一半,在进入拥塞避免阶段
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值