首页 > 其他分享 >UDP比TCP快的原理

UDP比TCP快的原理

时间:2024-03-16 11:12:36浏览次数:23  
标签:UDP 主机 TCP 发送 原理 接收 数据

1.工作位置:

在OSI七层模型中,TCP和UDP工作在传输层,使源端主机和目标主机上提供端到端的会话,也就是常说的端口号,因为ip协议可能分组经过不同的路由路径传输,因此主机的ip层不保证顺序,也不保证一定收到,因此在传输层就需要做到一些事情:

  • 提供端到端的数据传递
  • 顺序保证
  • 可靠性保证

2.TCP与UDP的区别

  • 为什么TCP需要连接?

TCP协议需要保证数据传输可靠,那通过连接(三次握手)这个过程确定,双方都可以收发数据。如果连接都连接不上,那么就可以确定双方的通信不可达,建立连接失败,没办法可靠的传输。

  • 为什么UDP不需要连接?

UDP只提供端到端的数据传递,不做可靠性校验,因此不需要连接去确认。

  • UDP广播机制

广播UDP与单播UDP的区别就是IP地址不同,广播使用广播地址255.255.255.255,将消息发送到在同一广播网络上的每个主机。值得强调的是:本地广播信息是不会被路由器转发。当然这是十分容易理解的,因为如果路由器转发了广播信息,那么势必会引起网络瘫痪。这也是为什么IP协议的设计者故意没有定义互联网范围的广播机制。

  • 数据传输格式

UDP使用数据报的方式传递数据,TCP使用数据流的方式传递数据,所谓数据报,数据流,其实是一种承载数据的方式。这其实与这两个协议本身的传输机制有关,tcp提供可靠的传输机制,也就是说只要是被发送的数据都会被接收方接收到,并且双方也知道被正确接收了,这就有一种现象:一段比较大的数据被分段传送出去,对于接收方而言,就像一股水流一样不断地并且一滴不漏的被接收(这个过程中有确认机制,更加形象地类似水流)。而udp不负责可靠传输,他只知道尽最大的努力把数据发送出去,并不关心数据是否被接收方实际接收,对于接收方而言,他接收数据的情形是:来一个我接受一个,并不关心中间是否有丢失的数据报,就像飞机空投物资一样,并不是投一包东西,然后地面确认一下,再投第二包东西(这种方式在无形中使得物资之间有了一种默契),而是多架飞机一起往下投物资,没有顺序可言,哪个先下来我先接那个,并且投下的物资是否在半空被老鹰叼走了地面并不关心(这种方式下,不同物资之间似乎相互独立,从传输层理解的话就是每个udp报文独立存在,他们的联系是发生在他的高层应用层)。再结合到数据的发送和接收上,对于接收端而言并无顺序可言,数据报之间没有约定的连接格式,每个udp数据报之间就像独立的个体一样。因此数据报是直接打包,直接发送,而数据流有可能分包发送,然后顺序到达。从这里可以看出来,数据报适合小的数据,数据流可以进行大文件传输。

  • TCP可靠性保证:

1)三次握手,四次分手,保证连接,断开连接正常。

2)流量控制——滑动窗口

TCP滑动窗口技术通过动态改变窗口大小来实现对端到端设备之间的数据传输进行流量控制。

如图所示,主机A和服务器A之间通过滑动窗口来实现流量控制。为方便理解,此例中只考虑主机A发送数据给服务器A时,接收端服务器A通过滑动窗口进行的流量控制。主机A向服务器发送4个长度为1024字节的数据段,其中主机A的窗口大小为4096个字节。服务器A收到第3个数据段后,缓存区满,第4个数据段被丢弃。服务器以ACK3073响应,窗口大小调整为3072,表明服务器的缓冲区只能处理3072个字节的数据段。于是主机A改变其发送速率,发送窗口大小为3072的数据段。这样子,主机A下次发送的数据段的窗口大小都是3072。

3)拥塞控制

当一个网络面对的负载超过了它了处理能力时,拥塞就会发生。若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。

慢开始:当cwnd < ssthresh时,让cwnd从1开始指数增加拥塞窗口的值

拥塞避免:当cwnd > ssthresh时, 通过线性增长cwnd的值,降低拥塞的概率

快重传:在丢包发生的情况下,接收端重复发送上一次接受的重复确认,发送方收到了累计3个连续的报文段的重复确认,立即重传之后的报文段

快恢复:收到3个重复确认,不启动慢开始,执行快恢复

 

  • 首部开销(UDP报头,大小为8字节,TCP为固定头20字节,以及选项最多可达40字节)

总结

1.当代网络远距离采用光纤传输,给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性(基于TCP/IP协议开发出来是在1973年,而真正的大面积应用是在1983年。现状的网络状况以及有了很大的改善)。

2.TCP为了可靠性保证,增加了3次握手4次挥手,复杂的拥塞控制,以及流量控制,让网络传输的延迟进一步增加。

3.采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,有包就发,能够把丢包产生的延迟降到最低,尽量减少网络延迟。

4.基于滑动窗口,接收方因为需要对保证顺序,因此前面的包没到,不会继续去处理后续的包。

5.TCP头部的大小,进一步增加了,传输的数据量。

标签:UDP,主机,TCP,发送,原理,接收,数据
From: https://www.cnblogs.com/beatle-go/p/18075175

相关文章

  • 梯度下降算法原理 用python实现
    1.介绍我们常常说阶梯要慢慢下,但是我们的计算机不这样认为,因为他们是人类智慧的结晶,我们已经知道了最优解,在某些方面,所以我们要找到最速梯度,这样梯度下降就被广泛运用。梯度下降(gradientdescent)在机器学习中应用十分的广泛,不论是在线性回归还是Logistic回归中,它的主要目......
  • 面试官:说说反射的底层实现原理?
    反射是Java面试中必问的面试题,但只有很少人能真正的理解“反射”并讲明白反射,更别说能说清楚它的底层实现原理了。所以本文就通过大白话的方式来系统的讲解一下反射,希望大家看完之后能真正的理解并掌握“反射”这项技术。1.什么是反射?反射在程序运行期间动态获取类和操纵类的......
  • 网络流建模之拆点,原理详解,OJ练习
    一、网络流建模之拆点1.1问题引入现有工厂s,仓库t,中转站若干,s到中转站有若干道路,中转站到仓库有道路若干,工厂要向仓库运输一定的货物,每条道路都有最大运输量限制,问最大运货量。1.2转化为网络流问题显然上述问题我们可以轻松的建模转化为网络流问题该流网络的最大流就......
  • 【计算机网络】传输层——传输层概念&UDP协议
    传输层概述主要学TCP和UDP协议,为应用层提供通信服务,使用网络层的服务只有主机才有的层次(路由器到网络层就没了)传输层功能1.提供进程与进程之间的通信2.复用和分用3.传输层对收到的报文进行差错检测。4.传输层的两种协议。TCPUDP差异面向连接的传输控制协议T......
  • 【OpenGL原理】顶点着色器、片元着色器、几何着色器
    一、说明        我们除了对GLSL语言本身的理解,对真正的宏观管线认知是越早越好的事情。理解着色器的能力,以及使用局限性能够迫使我们修正设计思路。也许我们胸中有无限多的想象,一旦面对着色器的无能为力,精妙想向也就灰飞叶湮灭。有时需要引进其它的环节,但又不能确定......
  • 腔体滤波器原理解析
    从几十MHZ的低频段到几十GHZ的高频段都可以正常工作。因此,在无线通讯系统工作的频率范围内,就可以使用很多不同种类的滤波器。并且随着现在越来越复杂的电磁环境,则需要性能要求更高的微波滤波器。因此,对于-一个性能优越的滤波器的设计,就需要在设计时更加关心如何降低有用信号在......
  • SQL底层执行原理
    SQL底层执行原理#4.1SELECT语句的完整结构/*#sql92语法:SELECT....,....,....(存在聚合函数)FROM...,....,....WHERE多表的连接条件AND不包含聚合函数的过滤条件GROUPBY...,....HAVING包含聚合函数的过滤条件ORDERBY....,...(ASC/DESC)LIMIT...,....#sql99语法:SE......
  • 3月15号-应用层与TCP
    昨天的TCP过于简化,TCP有着多种应用,控制数据流出速率保证网络速率平衡(这跟慢启动方法有关),支持传输和重传,建立到两个计算机之间的直接联系。应用层的话则是更加日常的网页,应用程序,是针对用户最前线的地方。本身在作出网络请求时需要遵守协议(约定的数据传输规则),如http协议,请求和回复......
  • TCP,SSL以及HTTPS的连接建立过程详解
    可以参考B站的一个视频,把TLS/SSL的连接建立过程降解的非常透彻。配合这篇博客食用更佳。一遍不懂请多看几遍,很有用!1说明1.1对称加密的和非对称加密在数字加密算法中,通过可划分为对称加密和非对称加密。什么是对称加密?在对称加密算法中,加密和解密使用的是同一把钥匙,即:使......
  • 数据仓库原理(二)
    目录四、数据仓库的概念模型(一)多维数据模型(二)维度与粒度五、数据仓库的逻辑模型(一)多维模型(二)星形模型(三)雪花模型六、数据仓库的物理模型(一)位图索引模型(二)广义索引模型(三)连接索引模型(四)RAID存储结构 四、数据仓库的概念模型  概念数据模型(ConceptualDataMo......