TCP与UDP 详细介绍及区别

来源:互联网 发布:小米数据恢复 编辑:程序博客网 时间:2024/05/18 23:56

在tcp/ip中能够实现传输层功能的、具有代表性的协议是TCP/UDP
*****************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:不具有可靠性的数据报协议,细微处理它会交给上层的应用去完成。在UDP情况下,可确保发送信息的大小,却无法保证一定能收到(属于那种不管三七二十一,直接全部接受,收不收到那就不确定了)
*****************************************************************************
其实UDP/TCP 并没有谁比谁好,只是看相对使用情况!
tcp在传输层有必要实现可靠的情况,它可以提供可靠传输;
udp用于高速传输和实时性有较高要求的通信或广播通信。
例如我们通过ip电话通信,如果使用tcp数据丢失了会被重发,但却无法流畅传输通话,导致无法正常交流。而采用UDP
它不会进行重发,但即使有丢失,也只影响一小部分,因此应该根据应用目的按需使用。