SOCKET : TCP和UDP区别的体现??

TCP的可靠性,UDP的不可靠性,体现在哪里?
看 孙鑫VC++深入详解 TCP和UDP聊天程序,在聊天双方有一边断开时,我能感觉到“TCP的可靠性,UDP的不可靠性”;那如果聊天双方都未断开,双方发送的某数据在传输过程中丢了,我感受不到“TCP的可靠性,UDP的不可靠性”,因为在他的TCP代码中connect、accept之后就开始传数据了,也没有检测数据是否到达对方的代码,不是跟UDP一样?是因为TCP协议帮他做了吗?还有connect+accept我能感受到是面向连接的,那么用了connect+accept就算是用了TCP协议?是否可以这样理解:只要用了connect+accept就是TCP通信了?


我看了篇网文:“TCP和UDP传输的深入浅析,MSN和QQ文件传输速度解析”。其中有段话:
“2. 但是即使上面的条件不成立,msn还是一般比QQ慢的。问题还是在出在前面提到的验证数据可靠性上面,TCP是可靠的,。 UDP是不可靠的,但是用UDP做传输文件这档子事情,肯定要在应用层写一个验证的协议,否则传过来的文件缺胳膊少腿,会被用户骂死的。 说是协议,其实也不难,打个比方吧:

long long ago,贾宝玉在北京,林黛玉在长沙,怎么互诉衷肠呢,派家丁送信!路途遥远,怎么知道信收到没有?打电话问?那时候发明了这个就不用送信了,只能看家丁是否带了回信来了。假如发现一个家丁一个月还没有回,那就多半迷路堵车遭遇山贼或者开小差到扬州花差快活去了,再派一个人送吧!  TCP就是这么做的,UDP在应用层协议一般也需要这么做,但是实现上有时候往往有区别。

上面提到了 验证 数据包是否送到 的事情。TCP有验证的功能,UDP没有。
问题一、 TCP的验证功能,是需要程序员自己写?还是不用写(connect、accept之后尽管传,不用考虑别的,TCP协议自带验证)?

问题二、UDP的验证怎么写? 是:1、发第1个包--->等回应,等到回应--->发第2个包,等不到回应--->再发第1个包..... 还是:2、连续发包,在发包过程中或是发完后,有接到回应,再看哪个包的回应没得到,就重发那个包。 应采取上面1、2那种方式?那等待回应时间是多大呢?



------------------------------------------------------------------------------------------------------


1.TCP的验证功能,是不需要程序员自己写,TCP协议自带验证,UDP的验证应采取上面2那种方式,不需要等待,最后接受方发个接受完全的消息就结束了,UDP节省了发送成功时候的验证,所以比较快。

2. 楼主,我来试着回答一下你的问题:
(1)作为一个传输层的协议,TCP/IP 协议在系统中是封装好了的,不需要自己来实现它的功能。对于TCP和UDP的使用,我们尽管使用系统留给我们的接口即可,所以对于TCP来说,它提供可靠的连接,有自动重传的功能,我们不必自己来写。
(2)UDP协议虽然提供不可靠的连接,但是它的效率是TCP比不了的,所以在那些对可靠性要求不是很高的应用来说,UDP是个好的选择,比如视频和音频的应用可以在它的基础之上写一些应用层的协议。至于重传的怎么写,你可以学习一下RTP协议,我相信对你会有帮助的。

3. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值