TCP和UDP的区别

November 22, 2011

计算机网络

上周在一家外企面试,问了我一个关于 socket 的问题,最后让我自己实现一套 socket 连接,把本地通讯录的信息上传到服务器。花了些时间把客户端和服务器端的都写完,今天过去给他们演示了一下。面试的过程中,一个考官,一个在美国通过电话会议面试的考官问了我一个问题,你这个demo使用的是 TCP 还是 UDP。一下子懵了。不过那个考官倒是很好,说你可以当场 search 一下。于是我就 Google 了一下,瞄了一眼,赶紧给人家答案。回过头来整理一下。

TCP,(Transmission Control Protocol,传输控制协议)是面向连接的可靠的传输。TCP 在数据传输之前,需要保证数据发送方和接受方之间建立一个可靠的连接。也就是以前学过的三次握手。当一个可靠的连接建立之后,才开始数据传输。每一个数据包从发送方发生到接收方的时候,接收方会反馈一个信息给发送方。接收方会根据接收到的数据包的完整性来答复发送方,发送方通过这个答复来确定数据包是否正确的发送到接收方,并选择是否需要重新发送。大概的过程是这样的一个过程,TCP的特点主要是在可靠这个词上。

UDP,(User Data Protocol,用户数据报协议)是面向非连接的不可靠的传输协议。就是发送方不需要在与接收方建立连接,就直接发送数据。也不确保各个数据包到达接收方的顺序。所以一般也没有重发数据包这个机制。

一般的应用的话,TCP 会使用在类似于文件,消息传输上。我发送一个文档给别人,就需要确保这个文档是完整的。而 UDP 一般用在视频或电话会议这种场合,偶尔说话或者画面中断或者不清晰的时候,并不需要另一方重新发送数据。

--- EOF ---

添加新评论