您的位置:首页 > 理论基础 > 计算机网络

TCP 与 UDP 之间有什么区别?

2014-08-29 00:00 459 查看
面试题目

TCP和UDP之间有什么区别?

解释TCP如何处理可靠交付(解释ACK机制),流量控制 (解释TCP发送器/***窗口)及拥塞控制。

参考解答

TCP(传输控制协议):TCP是一个面向连接的协议。从客户端到服务器可以建立一个连接, 然后数据通过这个连接进行传输。TCP协议具有以下特点:
可靠的。当你沿着一个TCP套接字发送消息,只要连接没有完全中断, 你就有把握它会到达目的地。如果数据包在传输过程中丢失了, 服务器将重新请求丢失的数据包。这意味着服务器将接收到完整而没有损坏的数据。
有序的。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序。 你不必为数据包的到达顺序而担心。
重量级的。当TCP字节流以错误的顺序到达,计算机将发出重新发送请求。 序列中已经发出的部分必须一起放回,这个需要一些工作量。

UDP(用户数据报协议):UDP是无连接的协议。UDP以数据块的形式在网络中发送消息/数据包。 UDP协议的特点如下:
不可靠的。当你发送一个消息,你并不能确保它会到达。它有可能在传输中丢失。
无序的。当你发送出两个消息。你无法确保哪一个会先到达。
轻量的。不会考虑发送消息的顺序,没有连接跟踪,仅仅是发送出去,然后就不管它了。 这也意味着它非常快速,网卡和操作系统只需要做很少的工作来数据包中的数据。



解释TCP如何处理可靠交付(解释ACK机制)和流量控制(解释TCP发送器/***窗口)

对于每个TCP数据包,如果接收者收到了数据包,那么它必须发出确认。 发送方如果没有收到确认,会重新发送数据包。这个机制保证每个数据包都被传送到接收方。 ACK是TCP协议中用于确认收到数据包的数据包。TCP窗口是发送方在得到接收方的确认前, 在特定连接上能够发送的数据量。

例如,一对主机在TCP连接上进行通信,其中TCP窗口大小是64KB。那么, 发送方发送完64KB的数据后就必须等待接收方的确认, 接收方发送确认时可能已经收到了全部数据,也可能只收到了部分数据。 如果接收方发出确认所有的数据都已经接收到,那么发送方就会发送另外64KB的数据。 如果发送方收到的确认中表明接收方只收到了32KB的数据(另外32KB的数据可能还在传输, 或者已经丢失),那么发送方最多只能再发送32KB数据,因为同一时刻不能有超过64KB 的未确认数据。(第二个32KB和此次发送的32KB都未确认)



拥塞控制

TCP使用网络拥塞避免算法进行拥塞控制。有许多不同的算法可以解决这个问题。其中, Tahoe和Reno算法是最有名。为了避免拥塞,TCP使用多方位的拥塞控制策略。 对于每个连接,TCP维护一个拥塞窗口,控制未确认数据包的总大小, 这有点类似于TCP中用于流量控制的滑动窗口。TCP使用一种称为“慢启动” 的机制来增加连接初始化后及超时后的拥塞窗口大小。一开始, 拥塞窗口的大小是最大段大小(MSS)的2倍。尽管初始速率很低,但它增加得很快。 每收到一个确认,拥塞窗口就增加1个MSS。这样,经过一个往返时间(RTT), 拥塞窗口就增加了一倍。当拥塞窗口的大小超过一个阈值,算法就进入一个新的状态, 叫拥塞避免。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: