原创 面试被问:怎么用 UDP 实现 TCP?

发布时间:2021-06-24 20:15:02 浏览 1614 来源:猿笔记 作者:悟空聊架构

    其实面试官主要是想让我说出UDP和TCP的原理上的区别:怎么给UDP加些功能实现TCP!看好去很容易就能说出一两个TCP和UDP的区别。不需要大量的数据结构、处理逻辑、包头字段。测试人员报的bug我也不会和她争论什么。谁都可以监听这个端口号往上面发数据,产品经理昨天说手机壳需要根据心情变色,测试人员说这个bug要把关联的两个bug一起修掉,也就是根据网络情况进行拥塞控制,网络情况比较好的内网,UDP常用在实时竞技游戏。TCP和UDP是传输层里面比较重要的两个协议,UDP是面向无连接,在我看来面向就是遵循一定的协议、规范、数据结构等来做一系列事情。


    #主题列表:juejin,github,smartblue,cyanosis,channing-cyan,fancy,hydrogen,condensed-night-purple,greenwillow,v-green,vue-pro,healer-readable

    #投稿主题:

    theme:smartblue

    highlight:

    ##背景

    这个问题是技术总监面试时问我的真题,当时回答的不是很好,我就拉出来总结了一下。

    其实面试官主要是想让我讲一下UDP和TCP在原理上的区别,以及如何给UDP增加一些功能来实现TCP。

    TCP和UDP的一两个区别很容易分辨,但是我应该用女朋友能理解的方式说什么呢?

    女朋友:我不想听讲座!我不懂~

    以上问题我会用白话文回答。

    ##UDP的特点

    **UDP让我想起一个刚毕业工作的菜鸟。**

    -易于沟通

    领导布置的任务直接完成。

    UDP也是如此。我相信网络世界永远是美好的。我寄的包裹很容易投递,接收器也很容易组装。数据结构也很简单,没有大量的数据结构、处理逻辑和头字段。

    相信别人

    对于测试人员举报的bug,我不会和她争论。我一直相信测试者是对的。测试者说的就是我说的。

    UDP也不会建立连接,有一个端口号,任何人都可以监听这个端口号并向它发送数据。您也可以从这个端口号向任何人发送数据。反正我就是发。

    -不能讨价还价

    昨天产品经理说手机壳需要根据心情换色,测试人员说这个bug要和两个相关bug一起修复。那就照他们说的做!

    UDP也是,不知道怎么坚持,怎么让步。也就是说,根据网络条件进行拥塞控制。网络丢包再严重,我还是发~

    ##UDP使用场景

    领导根据我当时刚毕业的菜鸟的情况,安排了三种工作环境让我选择。

    -内部系统,任务简单,模块单一,不需要考虑代码关联影响,即使失败也没关系。

    UDP也是一种资源较少、网络条件较好的内网,或者说是一种对丢包不敏感的应用。

    ——有强大的团队支持,都是中高级的开发人员和测试人员。团队成员之间相处多年,相互信任。有什么问题?喊就好!

    UDP也是一种无需一对一通信即可广播建立连接的应用。

    -新项目需要激情。对于刚毕业的菜鸟来说,主动性强,不会耍花招。他们躲在厕所里玩手机,还付钱拉shi?即使项目不忙,我也会赶紧去做。项目忙,还是这样!

    UDP也主要用于需要快速处理速度、低延迟和能够容忍少量数据包丢失的情况。即使网络情况不好,合同也是~

    针对以上三种场景,UDP常用于实时竞技游戏、物联网、移动通信领域。

    ##TCP的特点?

    -面向连接

    TCP和UDP是传输层的两个重要协议。大多数面试都会问两者的区别。大部分都有两句话。比如TCP是面对面连接,UDP是无连接。

    那么什么是面向连接呢?

    TCP三次握手是我们经常背诵和背诵的东西。三次握手成功后,连接就成功建立了。

    那什么叫做* *面对* *?

    我们经常听到面向对象编程,面向平面编程,面向服务编程。那么到底面对的是什么?

    在我看来,方向是按照一定的协议、规范、数据结构等等去做一系列的事情。

    比如,* *面向连接,* *就是维护客户端和服务器之间的连接,建立一定的数据结构来维护双方的交互状态,使用这样的数据来保证所谓的面向连接的特性。

    知道TCP使用三次握手建立连接,能否让UDP发送三个数据包模拟TCP建立连接?是的,是这样,但如果只是建造,而不是连接,就没多大意义了。

    TCP做什么连接?

    TCP提供了可靠的传递,通过TCP连接传输的数据可以按顺序到达,没有错误、丢失或重复。但UDP继承了IP包的特性,不保证不会丢失或顺序到达。

    面向字节流

    TCP是面向字节的,所谓字节流,就是发送一个无头无尾的流。TCP自己维护流状态。

    UDP是基于IP数据报,一个接一个的发送和接收。

    拥塞控制

    TCP有拥塞控制。如果数据包被丢弃或网络环境不好,它会根据网络情况控制自己的行为,看看是发送得快还是慢。

    UDP没那么聪明。如果你让我寄,我会寄的。反正你让我发了,也没别的~

    -有状态服务

    TCP是一个有状态的服务,可以理解为:我记录了哪些发送了,哪些没有发送,哪些收到了,哪些没有收到。

作者信息

悟空聊架构 [等级:3] 公众号:悟空聊架构
发布了 66 篇专栏 · 获得点赞 1166 · 获得阅读 71113

相关推荐 更多