TCP与UDP的区别、应用、编码

说到网络基础就不得不提TCP/IP协议,老生常谈的问题之一:TCP与UDP区别?

TCP

TCP是一种面向有连接的传输层协议。可以保证两端通信主机之间的通信可达。TCP能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况。此外、TCP还能有利用贷款、缓解网络拥堵。然而,为了建立与断开连接,有时需要至少7次的发包收报,导致网络流量浪费。此外,为了提高网络利用率,TCP协议中定义了各种各样的复杂的规范,因此不利于视频会议等场合使用。

UDP

UDP是一种面向无连接的传输层协议。不会关注对端是否真的接受到了传送过去的数据,如果需要检查对端是否收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。

基本区别

特点TCPUDP
连接性面向连接面向非连接
资源消耗
可靠性可靠不可靠
数据单位字节报文
连接对象点到点一对一、一对多、多对一
传输效率
  1. TCP面向连接(通讯首先要建立连接)、UDP面向无连接(不需要建立连接)。
  2. TCP消耗资源多(建立连接、数据传输、维护连接都消耗CPU、内存等硬件资源)、UDP消耗资源少(不用建立和维护连接,没有阻塞机制)。
  3. TCP提供可靠服务(无差错、不丢失、不重复、按顺序)通信信道是双工可靠信道、UDP尽最大努力提供服务(不保证可靠交付)不可靠信道。
  4. TCP面向字节流、UDP面向报文。
  5. TCP连接是点对点的连接、UDP可以是一对一、一对多、多对一。
  6. TCP首部20字节、UDP首部8字节。

应用场景

TCP

  • 由于TCP采用校验和、序列号、确认应答、重发控制、连接管理、窗口控制等机制实现可靠性传输、消耗大量网络和硬件资源,所以对可靠性有严格要求的通信、基本都会采用TCP传输协议。

UDP   

  • 包总量较少的通信(DNS、SNMP等)。
  • 视频、音频等多媒体通信(即时通信)。
  • 现定于LAN等特定网络中的应用通信。
  • 广播通信(广播、多播)。                       

编码实现

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

  1. UDP编程的服务器端一般步骤是: 
  2. 创建一个socket,用函数socket(); 
  3. 设置socket属性,用函数setsockopt();* 可选 
  4. 绑定IP地址、端口等信息到socket上,用函数bind(); 
  5. 循环接收数据,用函数recvfrom(); 
  6. 关闭网络连接; 

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

  1. 创建一个socket,用函数socket(); 
  2. 设置socket属性,用函数setsockopt();* 可选 
  3. 绑定IP地址、端口等信息到socket上,用函数bind();* 可选 
  4. 设置对方的IP地址和端口等属性; 
  5. 发送数据,用函数sendto(); 
  6. 关闭网络连接;

注:本篇文章属于归纳、借鉴和参考了《图解TCP/IP》,和一些网络资料。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值