zoukankan      html  css  js  c++  java
  • java面试题-tcp和udp

    一、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) 右边沿向左移动,称为窗口收缩。

     

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

  • 相关阅读:
    财务【抛转分录】问题总结
    [底稿抛转]报分录底稿有错误,原理说明
    [底稿抛转]单据、底稿、分录之间的数据关系
    2018年新安装AIO5客户 须知(各种情况处理)
    ERP系统中:生日提醒-农历版
    ERP报错:所在的期间无效,但又无法新增账套期间。
    TWaver3D直线、曲线、曲面的绘制
    TWaver可视化编辑器的前世今生(四)电力 云计算 数据中心
    TWaver可视化编辑器的前世今生(三)Doodle编辑器
    TWaver可视化编辑器的前世今生(二)3D编辑器
  • 原文地址:https://www.cnblogs.com/lm-book/p/11323539.html
Copyright © 2011-2022 走看看