TCP/IP和网络编程面试常见问题2

接上一篇《TCP/IP和网络编程面试常见问题1》
篇幅太长,视觉疲劳了,重开一局。

时间仓促,还未细看。如有错误,欢迎指正。

(1)TCP有三种基本机制来控制报文段的发送

第一种机制是TCP维持一个变量,它等于最大报文段长度MSS,只要发送缓存从发送进程得到的数据达到MSS字节时,就组装成—个TCP报文段,然后发送出去。

第二种机制是发送端的应用进程指明要求发送报文段,即TCP支持的推送(push)操作。

第三种机制是发送端的一个计时器时间到了,这时就把当前已有的缓存数据装入报文段发送出去。

(2)TCP拥塞控制
若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况叫做拥塞。所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性过程,设计所有主机,所有的路由器。而流量控制是个端到端的问题。

四种拥塞控制的算法:慢开始、拥塞避免、快重传、快恢复

慢开始和拥塞避免(以下cwnd的大小单位都是报文段)

发送方维持一个拥塞窗口cwnd, 发送方让发送窗口 等于 拥塞窗口和 接收方 接收窗口的最小值。
  发送方控制拥塞窗口的原则是:只要没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。
  慢开始 : 开始发送数据时,先探测一下,有小到大逐渐增大发送窗口。cwnd = 1, 然后每经过一个传输轮次就翻倍
  拥塞避免 : 让cwnd缓慢增大, 每经过一个传输轮次就+1
  慢开始门限ssthresh : 只要发送方判断网络出现拥塞(根据就是没有按时收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一般,然后把cwnd重新设定为1
  cwnd < ssthresh, 使用慢开始算法
  cwnd > ssthresh, 使用拥塞避免算法
  cwnd = ssthresh, 随意

快重传和快恢复

快重传 : 接收方及时发送确认, 而发送方只要一连收到三个重复确认, 马上重传而不等待重传计时器。(需要明确的是确认指的是确认收到的有序的最大分节序号)由于尽早重传未被确认的报文段,整的网络的吞吐量提高20%

快恢复 : 当发送方一连收到三个重复确认时, ssthresh减半, cwnd设为ssthresh,然后执行拥塞避免算法。

问题1:什么是拥塞?

在通信子网出现过多数据包的情况,使得网络的性能下降,甚至不能正常工作,这种现象就称为拥塞。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值