网络程序员iOS技术专题

TCP和UDP的区别

2016-06-11  本文已影响1214人  rxdxxxx

RedRain的简书:http://www.jianshu.com/users/29e03e6ff407/latest_articles

TCP和UDP的区别

TCP/IP中有两个具有代表意义的传输层协议, 它们分别是TCP和UDP.

流就是指不间断的数据结构, 你可以把它想象成排水管中的水流. 当应用程序采用TCP发送消息时, 虽然可以保证发送的顺序, 但还是犹如没有任何间隔的数据流发送给接受端.

TCP为提供可靠性传输, 实行顺序控制重发控制机制. 此外还具有流控制(流量控制),拥塞控制,提高网络利用率等众多功能.

在UDP的情况下, 虽然可以确保发送消息的大小, 却不能保证消息一定会到达, 因此,应用有时会根据自己的需要进行重发处理.

TCP和UDP的区分

可能有人会认为, 鉴于TCP是可靠的传输协议, 那么它就一定优于UDP. 其实不然TCP与UDP的优缺点无法简单地,绝对地去做比较.那么, 对这两种协议应该如何加以区分使用?

TCP 用于在传输层有必要实现可靠性的情况. 由于它是面向连接并具备顺序控制, 重发控制等机制的, 所以它可以为应用提供可靠传输.

而在一方面, UDP主要用于那些对高速传输和实时性有较高要求的通信和广播通信. 我们举个通过IP电话进行通话的例子. 如果使用TCP, 数据在传输途中如果丢失会被重发, 但这样无法流程地传输通话人是声音, 会导致无法进行正常交流. 而采用UDP, 它会不进行重发处理. 从而也就不会有声音大幅度延迟到达的问题. 即使有部分数据丢失, 也只是会影响某一小部分通话,

因此, TCP和UDP应该根据应用的目的按需使用.

套接字 (Socket)

应用在使用TCP或UDP时, 会用到操作系统提供的类库. 这种类库一般被称为API.

使用TCP或UDP通信时, 又会广泛使用到套接字(Socket)的API. 套接字原本是由BSD UNIX开发的, 但是后被移植到了Windows的Winsock以及嵌入式操作系统中.

应用程序利用套接字, 可以设置对端的IP地址, 端口号,并实现数据的发送和接受.

UDP

由于UDP面向无连接, 它可以随时发送数据. 再加上UDP本身的处理既简单由高效, 因此经常用于以下几个方面:

TCP

更多的信息

上一篇下一篇

猜你喜欢

热点阅读