Su的技术博客

  • 首页
  • Java
  • MySQL
  • DDD
  • 事故复盘
  • 架构方案
  • Other
  • 工具
  • 打赏
  • 关于
  1. 首页
  2. Java
  3. 正文
                           

【原创】笔记 | 面试官问我:TCP与UDP的区别

2020-05-06 24点热度 0人点赞 0条评论

面试官:你说你熟悉网络基础,也有网络编程的经验,那在选择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、加入:互联网基础/架构交流群

-关注搬运工来架构,与优秀的你一同进步-

如果喜欢这篇文章可以点在看哦↘


本文仅供学习!所有权归属原作者。侵删!文章来源: 搬运工来架构

标签: 原创
最后更新:2020-05-06

Cocodroid

专注Java后端,分享技术。

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

最新 热点 推荐
最新 热点 推荐
殷浩详解DDD 第四讲:领域层设计规范 既生@Resource,何生@Autowired? Go整洁架构实践 接口优化的常见方案实战总结 QQ音乐高可用架构体系 构建一个布隆过滤器 —— Building a Bloom filter
殷浩详解DDD 第四讲:领域层设计规范Redis为什么这么快?构建一个布隆过滤器 —— Building a Bloom filterQQ音乐高可用架构体系接口优化的常见方案实战总结Go整洁架构实践
笔记 | 5种网络IO模型 笔记 | JVM内存区域结构:一计两栈一堆一区 百度工程师浅谈分布式日志 殷浩详解DDD系列 第一讲 - Domain Primitive 笔记08 | 搜狗面试题:IO多路复用之select、poll、epoll的区别 Eureka源码剖析之七:架构&面试题【总结】

@Autowired (1) @Resource (1) API网关 (1) ddd (6) DP (1) ElasticSearch (1) eureka (7) go (1) HTTP (1) IDEA (1) iOS (1) Java (8) JSR (1) QQ音乐 (1) repository (1) Spring (1) SQL优化 (1) 代理 (1) 依赖注入 (1) 同城双活 (1) 垃圾回收 (1) 定时任务 (1) 容灾 (1) 布隆过滤器 (1) 异地双活 (1) 接口优化 (1) 故障转移 (1) 数据库 (2) 整洁架构 (1) 文件网关 (1) 方案 (2) 服务续约 (1) 注册中心 (7) 流水账 (1) 流量 (1) 第五 (1) 线上案例 (1) 线上问题 (2) 缓存 (1) 缓存击穿 (1) 编译 (3) 网络 (3) 聊聊 (1) 订单 (1) 设计规范 (1) 详解 (1) 连接池 (1) 限流 (1) 领域驱动设计 (4) 高可用 (1)

COPYRIGHT © 2014-2023 verysu.com . ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备15033072号-2