面试官:你说你熟悉网络基础,也有网络编程的经验,那在选择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有界无拥塞控制。
笔记系列↓↓↓:
笔记 | 面试官问我高并发的问题:并发编程的三大挑战
3、Kafka面试题!掌握它才说明你真正懂Kafka
4、Netty 5.0为啥被舍弃?原因竟然是...
5、中台之上——业务架构系列【汇总】
-关注搬运工来架构,与优秀的你一同进步-
如果喜欢这篇文章可以点在看哦↘
本文仅供学习!所有权归属原作者。侵删!文章来源: 搬运工来架构
文章评论