网络传输笔记(TCP)

以下内容来自个人理解,资料来源是中科院计算所老师讲课

UDP

在这里插入图片描述

TCP

在这里插入图片描述
在这里插入图片描述
(打破脑袋记不住怎么办!!!)

建立连接过程

连接方端口任意
被连接方端口固定
握手三步走:
SYN
ACK
SYN+ACK
在这里插入图片描述

连接任何一方都可以主动关闭连接

发送FIN数据包
表示己方不再发送数据

另一端可以继续发送数据

对方仍需要对接收数据进行确认
TCP是一个全双工传输协议

丢包与重传

未收到ACK表示丢包了,但是这个未收到ACK有一个时间阈值,较大或较小时的影响如下:
较大值:恢复丢包效率低
较小值:导致误重传 (Spurious Retransmission)

快速重传:
如果一个数据包之后的三个都被ACK,那么认为该包丢了,在一个RTT(Round Trip Time)内重传;

!!!拥塞控制

两种拥塞控制的策略:

  1. 端到端的拥塞控制(通过丢包和延迟判断拥塞情况)
    好处:设计简单
    坏处:性能取决于拥塞判断策略
  2. 网络设备的拥塞控制(通过标志位提醒拥塞 (ECN),显式的规定发送速率 (ATM))
    好处:利用率高
    坏处:可扩展性强

详细的拥塞控制过程:

对于网络设备,当遇到丢包需要降低发送速率,还需要定期探测最大发送速率,那么这个增减策略是什么?
一般就是线性增减(和性)或者乘性增减,两两组合共有四种策略;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
快恢复:
在这里插入图片描述
在这里插入图片描述

在我们知道拥塞控制加快重传和快恢复后可以达到稳态,那么初始的时候怎么达到稳态呢?

这时候就是慢启动机制了,慢启动从3或10开始每收到ACK,若窗口大小小于门限阈值,就加 1,否则加1/cwnd,慢启动的速率:log2(target_cwnd/initial_cwnd)个RTT达到稳态

Initialization:
  cwnd <- initial cwnd

if cwnd < ssthresh:
  for each ack:
    cwnd += 1
else:
  for each ack:
    cwnd += 1/cwnd

when encountering loss:
  ssthresh <- cwnd
  cwnd <- cwnd/2

此外快重传的时候为什么要是其后三个被确认才认为丢包?

因为传输中会有部分乱序的情况,用三个会减小误重传的几率。

对于重传机制,快重传适用于什么 ?

一般长流适用快重传,短流适用超时重传,web一般都是短流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值