码迷,mamicode.com
首页 > 编程语言 > 详细

java面试题-tcp和udp

时间:2019-08-08 21:21:40      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:ash   读取   变化   优点   动态   red   窗口   最小   没有   

一、tcp和udp区别

 UDPTCP
是否连接 无连接 面向连接
是否可靠 不可靠传输,不使用流量控制和拥塞控制 可靠传输,使用流量控制和拥塞控制
连接对象个数 支持一对一,一对多,多对一和多对多交互通信 只能是一对一通信
传输方式 面向报文 面向字节流
首部开销 首部开销小,仅8字节 首部最小20字节,最大60字节
适用场景 适用于实时应用(IP电话、视频会议、直播等) 适用于要求可靠传输的应用,例如文件传输

 

二、tcp安全可靠的实现基础

1、停止等待协议:是tcp传输可靠的重要途经,意思就是再发送一个分组之后,必须等待对方确认之后才能发送下一个分组,优点是简单,缺点是信道利用率太低,一次只能发送一个消息,信道大部分事件都是空闲的。

2、超时重传三种情况:

(1)、分组丢失:发送方已经发送分组,接收方没有收到;

(2)、确认丢失:接收方收到分组,发送确认分组,但确认分组丢失;

(3)、确认延时:确认分组没有丢失,由于传输太慢,发送方在规定时间内没有收到接收方发的确认分组;

3.下面两个协议就是解决信道效率太低和增大吞吐量,以及流量控制:

1)连续ARQ协议:它是指发送方维护着一个窗口,这个窗口中不止有一个分组,而是有好几个分组。窗口的大小是由接收方返回的win值决定的。所以窗口大小 是动态变化的。只要在窗口中的分组都可以被发送,这就使得TCP一次不是只发送一个分组了。从而大大提高了信道利用率。并且它采用累积确认的方式,对于按序到达的最后一个分组进行确认。

2)滑动窗口协议:因为窗口不断往前走。该协议允许发送方在停止并等待确认前发送多个数据分组。不需要每发送一个就分组就停下来等待确认。所以可以加速数据的传输,还可以控制流量。

3)累积确认:如果发送方发送了5个分组,接收端只收到了1 2 4 5 ,没有收到3,那么我的确认信息会是说明我期望下一个收到的组是第三个,此时发送方会将3 4 5都重发一遍。

技术图片

比如上面的例子,应该是右边发送数据给左边。左边进行确认。窗口往右移动。

接收方通告的窗口称为提出的窗口(offered window):上面的4 – 9

说明接收方已经收到了3字节的数据,且通告窗口大小为6.

当接收方确认数据后,这个滑动窗口不断的向右移动。下面用三个术语来描述窗口左右边沿的运动:

1)  称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生在数据被发送和确认时。

2)  当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据,并释放了TCP的接收缓存时。(就是接收方读取了缓冲区里面的数据的时候)

3) 右边沿向左移动,称为窗口收缩。

 技术图片

如果左边沿到达右边沿,则称其为一个零窗口。此时发送方不能发送任何数据。

java面试题-tcp和udp

标签:ash   读取   变化   优点   动态   red   窗口   最小   没有   

原文地址:https://www.cnblogs.com/lm-book/p/11323539.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!