UDP/TCP

TCP和UDP的区别
1. TCP
1.1 特点
1.2 性能
1.3 应用场景
1.4 步骤
2. UDP
2.1 特点
2.2 性能
2.3 应用场景
2.4 步骤
3. 具体
3.1 TCP
3.2 UDP
4. 区别
5. 补充
1. TCP
TCP 的全称是Transmission Control Protocol ,传输控制协议。其首部字节为20~60字节

1.1 特点
面向连接
传输是可靠的,保证了数据的正确性和数据顺序
以字节流的形式进行传输,实际上是TCP把数据看成一连串无结构的字节流;
1.2 性能
传输效率慢
需要的资源多
1.3 应用场景
要求文件传输可靠(如文件传输、邮件传输)

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

创建一个socket,用函数socket();
设置socket属性,用函数setsockopt(); * 可选
绑定IP地址、端口等信息到socket上,用函数bind();
开启监听,用函数listen();
接收客户端上来的连接,用函数accept();
收发数据,用函数send()和recv(),或者read()和write();
关闭网络连接;
关闭监听;
TCP编程的客户端一般步骤是:

创建一个socket,用函数socket();
设置socket属性,用函数setsockopt();* 可选
绑定IP地址、端口等信息到socket上,用函数bind();* 可选
设置要连接的对方的IP地址和端口等属性;
连接服务器,用函数connect();
收发数据,用函数send()和recv(),或者read()和write();
关闭网络连接;
2. UDP
UDP 的全称是 User Datagram Protocol,用户数据报协议。由8个字节(即4个字段)组成

2.1 特点
面向无连接
传输不可靠,可能会出现丢包、UDP不能保证数据的发送顺序
以数据报文段的形式进行传输,UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用)

2.2 性能
传输效率快
需要的资源比较少
2.3 应用场景
面向数据报方式
网络数据大多为短消息
拥有大量Client
对数据安全性无特殊要求
网络负担非常重,但对响应速度要求高
要求通讯速度快(如域名转换);或者是即时通讯(语音、视频、直播等)
2.4 步骤
UDP编程的服务器端一般步骤是:

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

创建一个socket,用函数socket();
设置socket属性,用函数setsockopt();* 可选
绑定IP地址、端口等信息到socket上,用函数bind();* 可选
设置对方的IP地址和端口等属性;
发送数据,用函数sendto();
关闭网络连接;
3. 具体
3.1 TCP
TCP是面向连接的服务。在传输数据之前必须先建立连接,数据传送介绍后需要释放连接。
TCP不提供广播或多播服务。
由于TCP要提供可靠的、面向连接的传输服务(TCP的可靠性提现在TCP在进行传递数据之前,会有三次握手来建立量额吉,而且在数据传递时,有确认、窗口、重传、拥塞控制等机制,在数据传递完后,还会端口连接用来节约系统资源),这些难以避免的操作增加了许多开销,如确认、流量控制、计时器以及连接管理等。
这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。
TCP一般用于文件传输、发送和接收邮件、远程登录等场景。
3.2 UDP
UDP在传送数据之前不需要先建立连接,远程主机在收到UDP报文以后,不需要给出任何确认。
虽然UDP不提供可靠的交付,但在某些情况下UDP确实是一种最有效的工作方式(一般用于即时通讯),比如语音、视频、直播等。
4. 区别
TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

TCP要求的系统资源较多,UDP较少

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

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

每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

TCP首部开销20字节;UDP的首部开销小,只有8个字节

TCP的逻辑通信信道是全双工的可靠信道;UDP则是不可靠信道

5. 补充
UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。
此外,UDP如果在传输途中出现了丢包,UDP也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。如果需要这些细节控制,那么不得不交给由采用UDP的应用程序去处理。换句话说,UDP将部分控制转移到应用程序去处理,自己却只提供作为传输层协议的最基本功能。UDP有点类似于用户说什么听什么的机制,但是需要用户充分考虑好上层协议类型并制作相应的应用程序。
TCP充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。
此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。
TCP和UDP是OSI模型中的运输层中的协议。
TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。
参考:https://www.cnblogs.com/williamjie/p/9390164.html
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_42688149/article/details/117129946

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值