首页 > 代码库 > 赵雅智_java网络编程(5)TCP和udp区别

赵雅智_java网络编程(5)TCP和udp区别

1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;

而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。

2、也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。


知道了TCP和UDP的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP的QQ传输文件慢了,但并不能说QQ的通信是不安全的,

因为程序员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的,

即使是这样,UDP因为在底层协议的封装上没有采用类似TCP的“三次握手”而实现了TCP所无法达到的传输效率。


网络传输过程

        1,找到对方ip

        2,数据发送到指定端口(每个应用程序对应一个端口)

        3,定义通信规则,即协议   TCP/IP

UDP

        1,面向无连接,将数据、源、目的封装(像邮递东西)

        2,数据报大小限制在64k内

        3,不可靠协

        4,速度快

TCP

        1,面向连接,形成传输数据的通道(像打电话)

        2,连接中进行大量数据量传输

        3,可靠协议,三次握手,

        4,必须建立连接,效率低

Socket

        1、Socket就是为网络服务提供的一种机制。

        2、通信两端都有Socket

        3、网络通信其实就是Socket间的通信

        4、数据在两个Socket之间通过IO传输

赵雅智_java网络编程(5)TCP和udp区别