Java----面试中将用到的网络基础知识(2)

UDP 特点

面向非连接
不维护连接状态,支持同时向多个客户端传送相同的信息
数据包报头只有8个字节,额外开销小
吞吐量受限于数据生成速率,传输速率以及机器性能
尽最大努力交付(不保证可靠)
面向报文,不对报文信息进行合并和拆分

TCP和UDP的区别

(1)TCP面向连接,UDP面向非连接
(2)TCP可靠,UDP不可靠
(3)TCP有序(到达不一定有序,但最后会排序),UDP无序
(4) TCP速度慢,UDP速度快,UDP适合在线网络
(5)量级,TCP报文头是20字节,而UCP是8字节

TCP滑动窗口

RTT:发送数据包和收到对应ACK包所需时间
RTO:重传时间间隔

滑动窗口协议:
滑动窗口协议,是TCP使用的一种流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。
TCP 使用滑动窗口做流量控制与乱序重排
发送方来看数据分为四类
1.得到服务器确认且已经发送的
2.还没得到服务器确认但已经发送的
3.未发送但服务器允许发送的
4.未发送且因为达到了 window 的大小不允许发送的数据
[2-3]就是发送方的滑动窗口
在这里插入图片描述
滑动窗口在被连续确认后才进行滑动
当 ACK 连续被确认,比如32-36连续确认4为后才开始把分类2的数据发送,同时扩大分类3向右的范围
在这里插入图片描述
接收方缓存内三种状态
1.已接收并且已经发送 ACK 回执的数据
2.未接收但可以接收状态 - 接收窗口 滑动方式一致
3.未接收且不能接收的状态 - 达到窗口阈值
ACK 直接由 TCP 回复,默认没有应用延迟,不存在已接收未回复 ACK 的状态
[2]就是接收窗口
在这里插入图片描述

1.无差错情况

在这里插入图片描述

2.出现差错

如果A发送的过程中出现差错,B在接收M1时检测出了差错,就丢弃M1,其他什么都不做(也不会通知A收到有差错的分组)。又或者A传送的过程中分组丢失了,以上这两种情况下,B不会发送任何信息。
既然说它是可靠传输协议,那自然有它可靠的方法:如果发生以上的情况,A只要超过了一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,所以它会重传刚刚的发送过的分组,也就是所谓的超时重传。
超时重传的原理也很简单:发送方发送完一个分组后,就会设置一个超时计时器,如果超时计时器到期之前没有收到接收方发来的确认信息,则会重发刚发送过的分组;如果收到确认信息,则撤销该超时计时器。
在这里插入图片描述

3.确认丢失和确认延迟

如果A发送了M1分组,到达B,B发送了M1确认信息,但由于网络原因,该确认信息丢失。那么这个时候,A在超时重传时间内,没有收到B的确认信息,而且它并不知道是自己的分组有差错、丢失,还是B发生的确认丢失了。因此,A会在超时重传过后,重传M1分组。

接收方B会采取这两个行动:

①B会丢弃M1分组,不向上层交付。(B之前已经收到过M1分组了)

②向A发送确认(因为A重发了,肯定重传时间内没有收到确认信息)
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值