黑马程序员技术交流社区

标题: 网络数据的两种发送形式 [打印本页]

作者: 李娟    时间: 2011-12-20 14:06
标题: 网络数据的两种发送形式
本帖最后由 李娟 于 2011-12-22 09:12 编辑

TCP是以流的方式发送数据的,而UDP是通过字节数组方式发送,但为什么是UDP发送效率高呢?
作者: 冯瑞君老师    时间: 2011-12-20 14:10
因为UDP包发送出去后,就不管了,是否出错,是否发送给对方了都不管了。而TCP有确认机制,对发送出去的数据有许多确认的判断,所以udp效率高点。
作者: 李娟    时间: 2011-12-20 14:12
f64412300 发表于 2011-12-20 14:10
因为UDP包发送出去后,就不管了,是否出错,是否发送给对方了都不管了。而TCP有确认机制,对发送出去的数据 ...

谢谢,回答我很满意:)
作者: 海中的游弋草    时间: 2011-12-20 14:26
发送模式不一样,Tcp是流模式,UDP是数据报模式,TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证,TCP是面向连接的,有比较高的可靠性,一些要求比较高的服务一般使用这个协议,所以它整体上速度比较慢,而UDP是面向无连接的通信协议,该协议使得数据传输的速度得到了大幅度提高。因为它不考虑接受端将一某种方式接受,它只负责进行发送。所以效率要的高
作者: 李娟    时间: 2011-12-20 14:28
海中的游弋草 发表于 2011-12-20 14:26
发送模式不一样,Tcp是流模式,UDP是数据报模式,TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不 ...

这是按照基本属性进行的回答,我也很满意,谢谢:)
作者: 刘健    时间: 2011-12-20 21:55
因为TCP传输之前还要先建立连接,USP是不需要的
作者: 陈帅雷    时间: 2011-12-21 18:43
UDP数据包发送出去之后,就不再管是否丢失,是否出错,是否发送给对方了。也就是说他只管发送。而TCP有确认机制,对发送出去的数据有许多确认的判断,这当然是需要时间来处理的,虽然时间对我们来讲很快,但对网络中,大量数据延时是必然的了。所以UDP发送的数据效率要高,尤其是对现在网络传送介质较之以前有大量提高的前提下,出错的机会也减少了不少
作者: 韩军博    时间: 2011-12-21 23:06
其实建议楼主认真学习一下计算机网络这门课程。对此就会深刻理解。
网络一般都是五层:应用层(最高层)--》运输层--》网络层--》数据链路层--》物理层(最底层)。
首先TCP,和UDP都是运输层的协议,都是将应用层的数据在运输层加一个TCP或是UDP的头部,然后在网络层加一个IP数据报的头部变为IP数据报,再在数据链路层加上头部和尾部,封装成帧,以帧的形式在网络间传递,等到了目的主机,然后在将这些头部一层层的拆解,从底层的物理层传送到应用层的相应的进程。
其中在网络层以下的都是做的尽最大努力交付,而运输层的TCP提供了差错检测和一系列的重传机制,保证传输是可靠的,即数据是完整和正确的,所以这就会浪费主机的内存和CPU,当然效率会低。TCP仅仅用在一对一的通信。
而UDP则是没有提供很多重传机制等来保证数据的准确性和完整性,如果检测数据出错了,仅仅是丢弃掉,多用在视频会议,或是实时的视频等对信息要求不是很严厉的场合。
楼主用到的TCP相关的类和UDP相关的类和网络中的协议是不太相同的,不要混淆。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2