您的位置 首页 知识

tcp和udp的区别(笔记 | 面试官问我:TCP与UDP的区别)

tcp和udp的区别
面试官:你说你熟悉网络基础,也有网络编程的经验,那在选择tcp或udp时是出于什么目的,即 TCP 和 UDP 有什么区别?

(来自网络的趣图)
UDP:用户数据报协议(User Datagram Protocol)。在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中处于第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,即,当报文发送之后,是无法得知其是否安全完整到达。
TCP:传输控制协议(Transmission Control Protocol)。当两台机器(网络设备)进行通信时,需要畅通且保证可靠,需要保证正确收发数据。当你想查看网页或数据文件下载时,希望完整且按顺序查看网页或者上传/下载完整的数据等就需要TCP了。

1、连接性
    TCP是面向连接、UDP是无连接协议。
2、可靠性
    TCP可靠、UDP不可靠。TCP在消息传输过程中丢失会进行重发。
3、有序性
    TCP有序、UDP无序。消息传输到网络另一端,会存在无序,不过TCP会将它进行排序。
4、有界性
    TCP无界、UDP有界。TCP是字节流传输、UDP的数据包是单独的。
5、传输速度
    TCP传输慢,UDP传输快。TCP需要建立连接、保证可靠性和有序性,比较耗时。视频流、广播电视、在线多媒体游戏等选择使用UDP。
6、量级
    TCP是重量级的,UDP是轻量级的。TCP要建立连接、保证可靠性和有序性,就会传输更多的信息,如TCP的包头比较大。
7、拥塞控制
    TCP有流量控制(拥塞控制),UDP没有。主要靠三次握手实现。以及慢开始、拥塞避免、快重传、快恢复。
8、头大小
    TCP具有比UDP更大的头。一个TCP数据包报头的大小是20字节,UDP数据报报头是8个字节。TCP报头中包含序列号,ACK号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口。而UDP报头只包含长度,源端口号,目的端口,和校验和。
TCP:

UDP:

9、用法和应用
    TCP提供可靠交付和有序性的保证,它是最适合需要高可靠并且对传输时间要求不高的应用,如http,ftp。UDP是更适合的应用程序需要快速,高效的传输的应用,如视频直播、游戏。

小结:
TCP是面向连接的、可靠的、有序的、速度慢的协议;UDP是无连接的、不可靠的、无序的、速度快的协议。
TCP开销比UDP大,TCP头部需要20字节,UDP头部只要8个字节。
TCP无界有拥塞控制,UDP有界无拥塞控制。

笔记系列↓↓↓:
笔记 | Java对象探秘
笔记 | JVM内存区域结构:一计两栈一堆一区
笔记 | 面试官问我高并发的问题:并发编程的三大挑战
推荐好文1、互联网Code Review最佳实践分享
2、dubbo面试题!会这些,说明你看懂了dubbo源码
3、Kafka面试题!掌握它才说明你真正懂Kafka
4、Netty 5.0为啥被舍弃?原因竟然是…
5、中台之上——业务架构系列【汇总】
6、必备瑞士军刀IDEA插件,你使用了哪些
7、线上热更新代码只需3步 Arthas实战
8、Eureka源码剖析之七:架构&面试题【总结】
9、互联网工程师应该用这种姿势打印日志
10、加入:互联网基础/架构交流群

-关注搬运工来架构,与优秀的你一同进步-
如果喜欢这篇文章可以点在看哦↘

tcp和udp的区别相关文章