查看: 5034|回复: 10
收起左侧

TCP/UDP协议详解

[复制链接]
bfyakumo
发表于 2009-9-24 19:36:53 | 显示全部楼层 |阅读模式
在了解TCP和UDP之前,我们需要来了解俩个概念,面向连接的服务和无连接的服务,应用面向连接的服务时,客户和服务器在进行数据发送前,彼此向对方发送控制分组,这就是所谓的握手过程,使得客户和服务器都做好分组交换准备。这个准备是很松散的,面向连接服务与很多其他的服务捆绑在一起,包括可靠的数据传输,流量控制和拥塞控制等,依赖连接以正确的顺序无错地传递所有数据。还要使用确认和重传机制实现来可靠性。而无连接服务侧是没有握手过程的,当一方想发送数据时就直接了当地发送,因为没有握手过程也就没有什么流量控制和拥塞控制,这样数据可能传输得更快,但是,由于也没有确认过程,源端就不知道那些分组到达了目的端。因此可能在传输过程中丢失数据,不适合用在一些文件的传输,可以用在因特网电话,视频会议什么的。

TCP(传输控制协议)和UDP(拥护数据报协议)是传输层的俩个传输协议,它们俩个的最大区别就是是否面向连接。

TCP包括了面向连接和可靠数据传输服务,在客户端和服务器端进行通信前,要先交换传输层控制信息,为双方的通信做好准备。在这个握手阶段后,我们就可以认为在这俩个进程间存在一个TCP连接,且是一个全双工的连接,在消息发送完后,应用程序会告诉TCP拆除这个连接。可靠的传输服务为了保障彼此通信能无差错地顺序传递所有数据。 当其中任何一个应用程序把一个字节流传如套接字时,它可以指望TCP把同样的字节流传递到对方的套接字,中间不回丢失和重传。TCP是因特网的一种公益服务,其目的是能调节数据传输过程中的一些问题,因此还要包含一个拥塞机制。TCP拥塞机制在网络变得拥塞时阻止发送进程。确切地说,TCP拥塞控制试图把每个TCP连接限定在它所公平共享的网络带宽上。对于有最小带宽需求限制的实时音频或视频应用来说,阻止其带宽那就让它们不能正常工作,此外,我们能想象一下,在网络电话通话时,偶尔的不连续是可以容忍的,可见实时应用可以容忍丢失少部分数据,不需要完全可靠服务。

说了这么多,TCP能提供的好的服务,再看一下其缺点吧,首先,TCP不保证最小传输率,通俗点说,TCP不允许发送进程以想要的速率发送数据,受到TCP拥塞控制的调节,发送进程有可能被迫以一个较低的平均速率发送。其次,TCP不提供任何延时保障,具体点说,发送进程把数据传入自己的TCP套接字后,这个数据将最终到达其接受套接字,但是中间所经历的时间就不能保证了 ,花几秒或则几分钟都不一定。

UDP是一个非面向连接的轻量级传输协议,具有一个最简单的服务模型。UDP是无连接的,因此两个进程彼此通信之前没有握手过程。UDP提供不可靠的数据传输服务,也就是说当一个进程往自己套接字发送一个消息时,UDP不能保障这个消息回最终到达接受套接字。另外,就确实到达接收套节字的消息而言,他们的到达顺序也可能不是有序的。 UDP不含拥塞控制机制,因此发送进程能够以任意速率往UDP套接字发送数据,尽管不能保证所有数据都到达接收套接字,但是会有相当比列的数据到达。实时应用程序的开发人员往往选择在UDP上运行他们的应用。与TCP类似,UDP也不提供任何延迟保证。 说了这么多,我们可以通过下表来体会一下上面说的真正含义。

应 用 应用层协议 用来支撑的传输协议
电子邮件 SMTP(RFC82) TCP
远程终端访问 Telenet TCP
WEB HTTP TCP
文件传送 FTP TCP
远程文件服务器 NFS TCP或UDP
流多媒体 专属 UDP或TCP
因特网电话 专属 一般为UDP

在表中我们看到,电子邮件,远程终端访问,WEB和文件传送都使用TCP协议,这些应用选择TCP的主要原因是在于TCP提供了可靠的数据传输服务,能够保证所有数据最终到达其目的地。我们还看到,因特网电话一般运行在UDP协议上面,一个因特网电话应用的俩端都得以某个最小速率跨越网络发送数据;另外,因特网电话可以容忍数据丢失,从这个俩个条件来看,都适合UDP,不需要可靠的TCP传输服务。 总的来说,TCP能保证传递全部数据,而UDP不能,且他们都不提供延迟保证。他们不提供延迟保证,并不意味着时间敏感的应用不能运行在现在的因特网上,而是应用是通过一些其他的方法来保证这些需要。

评分

参与人数 1经验 +6 收起 理由
月光下的忍者 + 6 感谢转帖分享

查看全部评分

320
发表于 2009-9-24 20:54:51 | 显示全部楼层
哦 ,谢谢楼主!! 我猜想 平时玩游戏, 电脑与服务器之间 是不是 TCP 协议??
bfyakumo
 楼主| 发表于 2009-9-24 20:54:53 | 显示全部楼层
看到很多防火墙拦截都是这两个 查了下 自学中。。。
bfyakumo
 楼主| 发表于 2009-9-24 20:56:21 | 显示全部楼层
玩游戏应该是tcp

如果数据包有误差 很难顺利游戏
用卡巴吃卡饭
发表于 2009-9-25 21:29:22 | 显示全部楼层
和大家都很好学
guohouzuo
发表于 2009-9-25 21:48:26 | 显示全部楼层
谢谢分享

前两天,网络通讯考试,有一道题

“上网收发邮件需要使用什么协议?”
A.TCP
B.UDP
C.TCP & UDP

同学说a,我说c,因为webmail,比如hotmail,要用到dns(udp的),所以都要用到吧。
分数还没出来,如果老师盘判这个错了的话~我倒是有个想法,我会跟判分老师说,因为题中没说是什么邮件,hotmail还是163, 是用邮件客户端还是用网页收发邮件,所以我选c还是有道理的。

就是突然想起来了~呵呵
223311
发表于 2009-9-25 23:14:44 | 显示全部楼层
虽然还有点晕,但毕竟了解了一点。
meishizhao
发表于 2009-9-25 23:29:20 | 显示全部楼层
TCP 和 UDP 是网络层上的网络数据的传送
面像和非面像

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
mofeisi71
发表于 2009-9-26 10:05:13 | 显示全部楼层
前来复习.
9634888
发表于 2009-9-26 15:08:10 | 显示全部楼层
进来看看,学习一下。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-5-17 20:21 , Processed in 0.375923 second(s), 19 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表