妈耶哭瞎
仔细复习了几天的C++还有游戏架构、游戏引擎等知识
今天突然接到了某面试,前面都答出来了
结果问了好多计算机网络的题目,暴风哭泣QAQ
我上班不怎么遇到都快忘光了

不要放弃,再来恶补一下网络方面的知识!!!!!

我先把问题写了,等研究透了再把答案写上去,不能坑别个啊QAQ

1.TCP和UDP的区别?

(1)TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
(2)TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
(3)UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
(4)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
(5)TCP对系统资源要求较多,UDP对系统资源要求较少。

2.如何保证UDP的可靠,可靠的UDP(RUDP)?

这个靠我自己研发一个可靠的UDP有点难为我了,先记一下RUDP相关的方法和技术吧:

2.1重传

重传有多种方法,这里介绍三种:定时重传,请求重传FEC选择重传
(1)定时重传
这个最简单,就是发送方发送一个数据包之后一段时间内(RTO)不收到该数据包的ACK消息,那么就重传这个数据包。
该方法存在的问题:
①对方收到了数据包,但是ACK发送途中丢失了 ②ACK在途中,但是发送端的时间已经超过了一个RTO
适合的场景:
如果你的场景是一个对延迟敏感但对流量成本要求不高的场景,就可以将RTO的计算设计比较小,这样能尽最大可能保证你的延时足够小。例如:实时操作类网游、教育领域的书写同步,是典型的用expense换latency和Quality的场景,适合用于小带宽低延迟传输。对于对带宽消耗很大的网络,则推荐使用请求重传。

(2)请求重传
请求重传就是接收端在发送ACK的时候携带自己丢失报文的信息反馈,发送端接收到ACK信息时根据丢包反馈进行报文重传。比如接收到了1号和4号包,然后判断出应该接收不到2、3号了,那么返回的ACK就要告诉发送端2、3没接到。
如何判断?
接收端在通信的过程中要评估网络的jitter time,也就是rtt_var(RTT方差值),当发现丢包的时候记录一个时刻t1,当t1 + rtt_var < curr_t(当前时刻),我们就认为它丢失了,这个时候后续的ACK就需要携带这个丢包信息并更新丢包时刻t2,后续持续扫描丢包队列,如果他t2 + RTO

适合的场景:

这种方式是由丢包请求引起的重发,如果网络很不好,接收端会不断发起重传请求,造成发送端不停的重传,引起网络风暴,通信质量会下降,所以我们在发送端设计一个拥塞控制模块来限流,这个后面我们重点分析。除了网络风暴以外,整个请求重传机制也依赖于jitter time和RTO这个两个时间参数,评估和调整这两个参数和对应的传输场景也息息相关。请求重传这种方式比定时重传方式的延迟会大,一般适合于带宽较大的传输场景,例如:视频、文件传输、数据同步等。

(3)FEC选择重传

FEC(Forward Error Correction)是一种前向纠错技术的意思,一般是通过XOR类似的算法来实现,也有多层的EC算法和raptor涌泉码技术,其实是一个解方程的过程。一般情景是这样的:发送方先发送了包1和包2,然后发送了一个FEC包。此时接收方发现包2没得了,就使用包1和FEC包计算出了包2,这样就不用请求重传。要是FEC包也救不了,那就只好再请求重传了。

3.在某个支付流程中,用户有可能因为网络不好连点两次,如何分辨确实是网络不好,还是故意连点两次?

这个我还没想好客户端主要可以做什么,如果是我,就禁止两次间距过短的支付操作好了。。。。但是这么回答肯定得不到面试官的青睐的。

先看看这篇文章好了,服务器为主的:
弱网络下的游戏服务器设计:
https://blog.csdn.net/Xingaaaxing/article/details/50829794

4.窗口与拥塞控制?

妈耶我需要好好补一下计算机网络的知识了QAQ相关推荐

  1. 来说一下!线雕的副作用和危害有哪些?妈耶

    来说一下!线雕的副作用和危害有哪些?妈耶 人体面部肌肤内的组织好比建筑物中的"钢筋",而研一精科素则好比"水泥",当"钢筋"因衰老而坍塌,无 ...

  2. 狂补呼叫中心相关知识,将收集的资料贴于此

    狂补呼叫中心相关知识,将收集的资料贴于此: H.323的协议体系 根据1998年H.323第二版,H.323制定了无QoS(服务质量)保证的分组网络 PBN(packet Based Networks ...

  3. 超详细的计算机网络基础知识总结 第四章:网络层

    本文基于:王道计算机考研-计算机网络 ☺其他文章: 超详细的计算机网络基础知识 第一章:概述 超详细的计算机网络基础知识 第二章:物理层 超详细的计算机网络基础知识 第三章:数据链路层 超详细的计算机 ...

  4. 计算机网络中网络拓扑,计算机网络基础知识:不同的网络拓扑结构对网络的影响...

    导语:中公小编今天带大家了解计算机网络拓扑结构的相关知识,并认识不同的网络拓扑结构对网络影响有哪些.通过思考题与解答的形式,希望考生可以开拓思维,一起思考.加强对计算机网络基础知识的认识与记忆. 思考 ...

  5. 最容易理解的计算机网络 基础知识概论(下)

    文章目录 1.计算机网络的分类 1.1按照传输介质分类 1.2按照网络的使用者进行分类 1.3按照网络的规模和作用范围进行分类. 2.计算机网络的性能指标 2.1 带宽 2.2 时延 2.2.1网络时 ...

  6. 计算机网络核心知识(上)

    前言 计算机网络核心知识系列博客分为上.中.下部分,此篇为(上). 博客的内容是计算机网络的核心知识,但也仅仅限于求得"管中窥一豹之形体",也就是说这是入门级别的博客,若想深入的话 ...

  7. 简述计算机通信网络的技术指标,计算机网络基础知识之数据通信中的主要技术指标...

    $2.1.2 数据通信中的主要技术指标 数据通信的任务是传输数据信息,希望达到传输速度快.出错率低.信息量大.可靠性高,并且既经济又便于使用维护.这些要求可以用下列技术指标加以描述. 1.数据传输速率 ...

  8. 会计考计算机哪些知识,2017会计从业考试《会计电算化》考点之计算机网络基本知识...

    2017会计从业考试<会计电算化>考点之计算机网络基本知识 计算机网络是以硬件资源.软件资源和信息资源共享以及信息传递为目的,在统一的网络协议控制下,将地理位置分散的许多独立的计算机系统连 ...

  9. 计算机网络基础知识 帮助学习网络管理的初学者快速了解网络管理的初步结构知识...

    网络分层: OSI七层协议:物理层.数据链路层.网络层.运输层.会话层.表示层.应用层 五层协议:物理层.数据链路层.网络层.运输层.应用层 HTTP四层协议:网络接口层.网际层.运输层.应用层 层 ...

最新文章

  1. linux上最好用的sh --zsh
  2. springboot后台怎么获取前端传过来的excel_开源商城系统包含后台管理和手机端
  3. REM,你这磨人的小妖精!
  4. wcf系列5天速成——第二天 binding的使用(2)(转载)
  5. MyBatis 3 – Spring集成教程
  6. 2018年软考网络规划设计师考试通过经验分享
  7. ios main函数之前的操作_添加函数在ARM在进入main函数之前
  8. 爽到爆!阿里腾讯都在用的API管理神器,API文档、测试、Mock全搞定
  9. CocosCreator中TiledMap简单使用
  10. android mac地址 服务器,如何更改或增添android手机的mac地址?
  11. c语言中断程序运行,C语言实现 软中断 程序小结
  12. SQL如何本地数据库连接服务器的数据库
  13. ps海报合成教程_怎样合成创意环保海报图片的PS教程
  14. Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  15. Java 读取jpeg图片 Unsupported Image Type 异常
  16. 行政组织理论-阶段测评4
  17. 无源RFID固定资产管理解决方案
  18. 美团因拖欠骑手工资被约谈;传苹果6月6日举办全球开发者大会;Linux 5.18开始启动停止支持ReiserFS|极客头条
  19. java游戏回转贝贝龙2下载,崩坏3:暴雨将至最后的剧情,为何贝贝龙拼死保护琪亚娜...
  20. 值得珍藏的免费观影网站

热门文章

  1. java计算机毕业设计OA办公系统设计与实现(附源码、数据库)
  2. Stanford公开课《Programming Methodology》里面的Karel机器人的配置方法
  3. OTA推荐之用户体系
  4. UE4 只狼抓钩学习(下)
  5. 钉钉小程序 AntV-f2 图表无法横向滚动
  6. 培养孩子的100条建议
  7. CV5200自组网远程WiFi模组,无人机无线图传应用,高清低时延方案
  8. java 聊天机器人_如何编写简单的聊天机器人AI?
  9. Kendryte K210 官方标准SDK gc0328 摄像头驱动移植
  10. mkdir: 无法创建目录kk: 只读文件系统