首页 > 代码库 > tcp与udp的区别

tcp与udp的区别

tcp与udp基本区别

1、基于连接和无连接

2、tcp要求系统资源较多,udp较少

3、udp程序结构较简单

4、流模式(tcp)与数据报模式(udp)

5、tcp保证数据正确性,udp可能丢包

6、tcp保证数据顺序,udp不保证

udp应用场景

1、面向数据报方式

2、网络数据大多为短消息

3、拥有大量的client

4、对数据安全无特殊要求

5、网络负担非常重,但对响应速度要求高

 

具体编程时的区别

1、socket()的参数不同

2、udp server不需要调用listen和accept

3、udp收发数据用sendto/recvfrom函数

4、tcp:地址信息在connect/accept时确定

5、udp:在sendto/recvfrom函数中每次均需指定地址信息

6、udp:shutdown函数无效

 

编程区别

  通常在说到网络编程时默认是指tcp编程,即用socket函数创建一个socket用于tcp通讯,函数参数我们通常填为SOCKET_STREAM。即socket(PF_INET,SOCK_STREAM,0),这表示建立一个socket用于流式网络通讯。

  SOCKET_STREAM这种的特点是面向连接的,即每次收发数据之前必须通过connect建立连接,也是双向的,即任何一方都可以收发数据,协议本身提供了一些保障机制保证它是可靠的、有序的,即每个包按照发送的顺序到达接收方。

  而SOCKET_DGRAM这种是User Datagram Protoco协议的网络通讯,它是无连接的,不可靠的,因为通讯双方发送数据后不知道对方是否已经收到数据,对否正常收到数据。任何一方建立一个socket以后就可以用sendto发送数据,也可以用recvfrom接受数据,根本不关心对方是否存在,是否发送了数据。它的特点是通讯速度比较快。大家都知道tcp是要经过三次握手的,而udp没有。

基于上述的不同,udp和tcp编程步骤也有些不同,如下:

tcp:

tcp编程的服务器端一般步骤是:

  1、创建一个socket,用函数socket();

  2、设置socket属性,用函数setsockopt();* 可选

  3、绑定ip地址、端口等信息到socket上,用函数bind();

  4、开启监听,用函数listen();

  5、接受客户端上来的连接,用函数accept();

  6、收发数据,用函数send()和recv()或者read()和write();

  7、关闭网络连接;

  8、关闭监听;

tcp编程的客户端一般步骤是:

  1、创建一个socket,用函数socket();

  2、设置socket属性,用函数setsockopt();* 可选

  3、绑定ip地址、端口等信息到socket上,用函数bind();

  4、设置要连接的对方的ip地址和端口等属性;

  5、连接服务器,用函数connect();

  6、收发数据,用函数send()和recv()或者read()和write();

  7、关闭网络连接;

udp:

与之对应的udp编程步骤要简单许多,分别如下:

  udp编程的服务器端一般步骤是:

  1、创建一个socket,用函数socket();

  2、设置socket属性,用函数setsockopt();* 可选

  3、绑定ip地址、端口等信息到socket上,用函数bind();

  4、循环接受数据,用函数recvfrom();

  5、关闭网络连接;

udp编程的客户端一般步骤是:

  1、创建一个socket,用函数socket();

  2、设置socket属性,用函数setsockopt();* 可选

  3、绑定ip地址、端口等信息到socket上,用函数bind();

  4、设置对方的ip地址和端口等属性;

  5、发送数据用sendto();

  6、关闭网络连接;

 

tcp和udp是OSI模型中的运输层中的协议。tcp提供可靠的通信传输,而udp则常被用于让广播和细节控制交给应用的通信传输。

 

udp补充:

tcp补充:

tcp与udp区别总结:

1、tcp面向连接;udp是无连接的,即发送数据之前不需要建立连接

2、tcp提供可靠的服务。也就是说,通过tcp连接传送的数据无差错、不丢失、不重复且按序到达;udp尽最大努力交付即不保证可靠交付。

3、tcp面向字节流,实际上是tcp把数据看成一连串无结构的字节流;udp是面向报文的,udp没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如ip电话,实时视频会议等)

4、每一条tcp连接只能是点到点的;udp支持一对一,一对多,多对一和多对多的交互通信

5、tcp首部开销20字节;udp的首部开销小,只有8字节

6、tcp的逻辑通信信道是全双工的可靠信道;udp则是不可靠信道

tcp与udp的区别