zoukankan      html  css  js  c++  java
  • 常见面试题——TCP和UDP的区别?

    关于TCP和UDP的区别,是一个老生常谈的问题了。在面试的时候很容易被问到,那么两者到底有什么区别呢?首先看我从网上找的一个图。

    很清晰的能够看出,UDP是无连接的,这是什么意思呢?这就是在传送数据的时候,UDP是不需要进行连接的,远方的主机在收到UDP的请求时,不需要经过任何的确认,虽然它不提高可靠的交付,但是在某种情况下,UDP的价值是最大的,比如视频连接,直播,语音等等功能。

    而TCP呢,是一个面向连接的服务,也就是说只有先建立连接,才能传送数据,同样在结束时还要释放连接,同样TCO不提供广播或者多播服务。那么为什么TCP传输时可靠的呢?

    1.应用数据被分割成TCP认味最适合发送的数据块。

    2.TCP给每个包进行了编号,接收方把数据包进行排序,然后讲将有序数据传送给应用层。

    3.校检和:TCP将保持他首部和数据的校检和,这是一个端到端的校检和,目的是为了检测数据在传输过程中的变化,如果校检和出现了差错,TCP将丢弃这个报文段,并不确认收到此报文段。

    4.TCP的接收端会丢弃重复的数据。

    5.流量控制:TCP连接的每一方都有一个固定的大小缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据,当接收方来不及处理发送方的数据时,就能提示发送方降低发送速率,防止包的丢失。TCP使用的流量控制协议时可变大小的华东窗口协议。

    6.拥塞控制:当网络拥塞时,减少数据的发送

    7.ARQ协议:每发完一个分组就停止继续发送,等待对方的确认,在收到确定后在发下一个分组。

    8.超时重传:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能即使确认,就将重发这个报文段。

    TCP在传输数据之前要还会有三次握手时来建立连接,而且在数据传输时,还会有确认,窗口,重传,拥塞这些控制机制,在数据传完之后,还会断开连接来节约资源。这也就增加了很大的资源消耗,所以TCP一般用于远程登陆,发送邮件,文件传输等场景。

  • 相关阅读:
    PHP发送邮件
    SQL删除字段及判断字段是否存在的方法
    密码MySQL的root的密码
    java socket 最简单的例子(server 多线程)
    php编写最简单的webservice
    SQL Server 存储过程与触发器
    手动创建最简单的JSP 文件
    Oracle 卸载步骤
    编写 WebService 程序
    eclipse 常用快捷键
  • 原文地址:https://www.cnblogs.com/ffdsj/p/12375373.html
Copyright © 2011-2022 走看看