TCP与UDP的区别

1.TCP使用窗口机制进行流量控制,那什么是窗口呢?

连接建立时,各端都会建立缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端,接收方发送的确认信息中包含了自己的剩余缓冲区的尺寸。我们把剩余的缓冲区空间的数量叫做窗口.

2.TCP流量控制过程(滑动窗口)

TCP与UDP的区别

3.TCP与UDP的区别

tcp是面向连接的。何为面向连接呢?首先我们要从物理层了解。可以说计算机网络的迅猛发展,是离不开‘信道复用技术’的。在‘信道复用技术’没有出现之前,单条线路在单位时间内只能供一台计算机使用。比如我和A聊天的时候,就不能和B聊天,如果想和B聊天,就得再接一条网线,世界这么大,这么多人,得接多少网线?如果这样的话,我们难以想象世界会是什么样子。于是‘信道复用技术’出现了,他能将若干个彼此独立的信号,合并为一个可在同一信道上同时传输的复合信号,并在接收端实现信号分离,互不干扰。分为:1、频分复用    2、时分复用    3、波分复用    4、码分复用    5、空分复用    6、统计复用    7、极化波复用

不同的信道复用技术,使用不同的复用技术,目的就是创建“虚拟信道”。一个tcp连接其实就是在物理线路上创建一条‘虚拟信道’,这条‘虚拟信道’创建之后,在tcp协议发出fin之前(两个终端都会向对方发出fin包),是不会释放注销的,所以我们说tcp协议是面向连接的。

udp在传输数据的时候,也会创建‘虚拟信道’,否则是无法传输数据的,但是在传完数据之后,这个‘虚拟信道’会被立即注销,所以我们说udp不是面向连接的.

4.tcp与udp为何会共存?

1. 大家要知道,一种物理线路,单位时间内,能够创建的“虚拟信道”是有限的!

2. 使用TCP协议传输数据,当数据从A端传到B端后,B端会发送一个确认包(ACK包)给A端,告知A端数据我已收到!UDP协议就没有这种确认机制!这就是为什么说TCP协议可靠,UDP协议不可靠. 

3.

有些应用,对数据传输可靠性要求非常高,例如大家浏览网页,通过网页注册帐号、转帐等服务,这是不容许出错的,使用TCP协议能把出错的可能性降到最低(当然,网络自身很糟糕,TCP协议也没办法)。但是,提供这种可靠服务,会加大网络带宽的开销,因为“虚拟信道”是持续存在的,同时网络中还会出现大量的ACK和FIN包!  

  因此,鱼和熊掌不可兼得,需根据实际情况选择传输协议.TCP协议提供了可靠的数据传输,但是其拥塞控制、数据校验、重传机制的网络开销很大,不适合实时通信,所以选择开销很小的UDP协议来传输数据。   

UDP 协议是无连接的数据传输协议并且无重传机制,会发生丢包、收到重复包、乱序等情况。而对于数据精确性要求不高的状态数据以及视频数据,丢包的影响不大。因为会不断收到新的包,丢失的个别包会有新的包来覆盖,所以只需在远程控制系统的通信部分自行处理乱序及重复包的问题,而对于丢包的问题一般不作处理。    但对于命令包这种需要精确收发的数据, 可在程序的开发中加入丢包重发和超时丢弃的处理。 当然,如果开发的是对于实时性要求不高的事件型控制命令的传输,不希望发生指令的丢失也可以直接采用TCP协议。TCP的重传机制正好适合这种情况。   

 

非面向连接的传输协议在数据传输之前不建立连接,而是在每个中间节点对非面向连接的包和数据包进行路由。没有点到点的连接,非面向连接的协议,如UDP,是不可靠的连接。当一个UDP数据包在网络中移动时,发送过程并不知道它是否到达了目的地,除非应用层已经确认了它已到达的事实。非面向连接的协议也不能探测重复的和乱序的包。标准的专业术语用“不可靠”来描述UDP。在现代网络中,UDP并不易于导致传输失败,但是你也不能肯定地说它是可靠的


TCP和UDP都是传输层的协议!