是传输控制协议,是一个可靠的面向连接的协议。它允许网络间两台主机之间无差错的信息传输。
UDP
是用户数据报协议,它采用无连接的方式传输数据,也就是说发送端不关心发送的数据是否到达目标主机,数据是否出错等。收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。
这两个协议针对不同网路环境实现数据传输,各有优缺点。面向连接的TCP协议效率较低,但可靠性高,适合于网络链路不好或可靠性要求高的环境;UDP面向非连接,不可靠,但因为不用传送许多与数据本身无关的信息,所以效率较高,常用一些实时业务,也用于一些对差错不敏感的应用,例如QQ,在线观看视频就是采用UDP的协议!
TCP传输协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义,UDP是Internet协议集支持一个无连接的传输协议,为应用程序提供了一种无需建立连接,就可以发送封装的IP数据包的方法。
TCP的许多特性都与TCP是面向连接的这个基本特性有关,因此要对TCP的连接有更清楚的了解,每一条TCP连接唯一地被通信两端的两个端点所确定,所谓的端点就是套接字(或插口)。
套接字的表示方法:在点分十进制的IP地址后面写上端口号,例如IP地址是192345,端口号是80,那么套接字就是(192345:80)。
TCP与UDP的区别:
1、TCP基于连接,而UDP基于无连接的。
2、对系统资源的要求:TCP较多(TCP有20个字节信息包),UDP少(UDP信息包只有8个字节)。
3、UDP程序结构较简单。
4、TCP是字节流模式,而UDP是数据报文模式。
5、TCP保证数据正确性,安全可靠,并且保证数据顺序,而UDP可能丢包,而且UDP不保证数据顺序。
以上内容参考 百度百科-UDP协议
TCP 和 UDP 有以下区别:
TCP 面向连接(如打电话要先拨号建立连接)提供可靠的服务,UDP 是无连接的,即发送数据之前不需要建立连接,UDP 尽最大努力交付,即不保证可靠交付。
UDP 具有较好的实时性,工作效率比 TCP 高,适用于对高速传输和实时性有较高的通信或广播通信。
每一条 TCP 连接只能是一对一的,UDP 支持一对一,一对多,多对一和多对多的交互通信。
UDP 分组首部开销小,TCP 首部开销 20 字节,UDP 的首部开销小,只有 8 个字节。
TCP 面向字节流,实际上是 TCP 把数据看成一连串无结构的字节流,UDP 是面向报文的一次交付一个完整的报文,报文不可分割,报文是 UDP 数据报处理的最小单位。
UDP 适合一次性传输较小数据的网络应用,如 DNS,SNMP 等。
tcp和udp的的特点
传输控制协议(TCP):TCP(传输控制协议)定义了两台计算机之间进行可靠的传输而交换的数据和确认信息的格式,以及计算机为了确保数据的正确到达而采取的措施。
协议规定了TCP软件怎样识别给定计算机上的多个目的进程如何对分组重复这类差错进行恢复。协议还规定了两台计算机如何初始化一个TCP数据流传输以及如何结束这一传输。TCP最大的特点就是提供的是面向连接、可靠的字节流服务。
用户数据报协议(UDP):UDP(用户数据报协议)是一个简单的面向数据报的传输层协议。提供的是非面向连接的、不可靠的数据流传输。UDP不提供可靠性,也不提供报文到达确认、排序以及流量控制等功能。
它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。因此报文可能会丢失、重复以及乱序等。但由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
UDP的优点:快,比TCP稍安全
UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击……
UDP的缺点:
不可靠,不稳定
因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。
关于UDP的百度百科介绍:
>TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,在 OSI模型中,它完成第四层传输层所指定的功能。\x0d\UDP:是User Datagram Protocol的简称,用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。\x0d\TCP和UDP传输就类似于我们的手机通电话和手机发短信,一种必需连通了,才能够通话,相对来说比较可靠,传输速度比较快,另一种可以在关机状态(无连接)发送信息,相对来说,可靠性比较差,传输速度较慢。具体的差别如下:\x0d\TCP协议面向连接,UDP协议面向非连接 \x0d\ TCP协议传输速度慢,UDP协议传输速度快 \x0d\ TCP协议保证数据顺序,UDP协议不保证 \x0d\ TCP协议保证数据正确性,UDP协议可能丢包 \x0d\ TCP协议对系统资源要求多,UDP协议要求少\x0d\不管是基于TCP还是基于UDP的网络通讯编程,都要区分服务器端和客户端,下面以TCP为例,实现客户端和服务器端通讯的实现步骤:\x0d\TCP服务器端的编写步骤:\x0d\1 首先,你需要创建一个用于通讯的套接口,一般使用socket调用来实现。这等于你有了一个用于通讯的电话:) \x0d\ 2 然后,你需要给你的套接口设定端口,相当于,你有了电话号码。这一步 一般通过设置网络套接口地址和调用bind函数来实现。 \x0d\ 3 调用listen函数使你的套接口成为一个监听套接字。 以上三个步骤是TCP服务器的常用步骤。 \x0d\ 4 调用accept函数来启动你的套接字,这时你的程序就可以等待客户端的连接了。 \x0d\ 5 处理客户端的连接请求。 \x0d\ 6 终止连接。\x0d\TCP编程的客户端一般步骤是:\x0d\1、创建一个socket,用函数socket();\x0d\ 2、设置socket属性,用函数setsockopt(); 可选\x0d\ 3、绑定IP地址、端口等信息到socket上,用函数bind(); 可选 \x0d\ 4、设置要连接的对方的IP地址和端口等属性;\x0d\ 5、连接服务器,用函数connect()(相当于拨号); \x0d\ 6、收发数据,用函数send()和recv(),或者read()和write()(相当于通话);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)