面试计算机网络八股文五问五答第二期

面试计算机网络八股文五问五答第二期

作者:程序员小白条,个人博客

相信看了本文后,对你的面试是有一定帮助的!

⭐点赞⭐收藏⭐不迷路!⭐

1.OSI七层协议?

2. TCP和UDP传输协议的区别?

  1. TCP是可靠的传输协议,你知道它怎么实现的一些拥塞控制,或者说对于数据发送量的合理限制?

TCP(传输控制协议)通过拥塞控制和流量控制来实现可靠的数据传输。其中,拥塞控制是TCP用来控制网络拥塞和避免网络超载的机制,而流量控制是用来控制数据发送方与接收方之间的数据流量的机制。

拥塞控制主要通过以下几个算法来实现:

  1. 慢启动(Slow Start):在建立连接时,TCP发送方初始将拥塞窗口设置为一个较小的值,然后每收到一个确认,拥塞窗口指数式增加,以适应网络的容量。
  2. 拥塞避免(Congestion Avoidance):一旦拥塞窗口达到一个阈值(拥塞窗口大小的一半),TCP发送方就采用线性增加的方式增加拥塞窗口,以更稳定地发送数据。
  3. 快速重传(Fast Retransmit):如果TCP发送方连续接受到3个重复的确认(ACK),即表明网络中有一段丢失的数据,TCP发送方将立即重传这些数据,而不必等待超时。
  4. 快速恢复(Fast Recovery):在进行快速重传后,TCP发送方将拥塞窗口减半,并且进入快速恢复状态。在此状态下,每收到一个确认,拥塞窗口仍然线性增加,但增加的速度较慢。

对于数据发送量的合理限制,TCP使用了流量控制机制来确保接收方能够跟上发送方的发送速度。流量控制通过使用滑动窗口(Sliding Window)来限制发送方的数据发送量,确保不会使接收方无法处理大量数据。

滑动窗口的大小由接收方动态调整。每次接收方收到一定数量的数据后,会向发送方发送一个确认,确认中包含了接收方的可用窗口大小。发送方根据接收方返回的可用窗口大小来动态调整发送的数据量,以保持发送方和接收方的数据传输速度的平衡。

通过拥塞控制和流量控制的机制,TCP能够根据网络的状况和接收方的处理能力来合理地限制数据发送量,同时保证网络的稳定和可靠性。

img

3. 拥塞控制、超时重传的具体原理?

拥塞控制:

拥塞控制的目的是避免网络中的拥塞,保证网络的稳定性。TCP使用拥塞窗口(Congestion Window)来控制发送方的数据发送速率。

慢启动:当TCP建立连接时,发送方将初始拥塞窗口设置为一个比较小的值(一般为一个报文段的大小),然后随着收到的确认报文的增加,指数级地增加拥塞窗口的大小。这样做的目的是保守地探测当前网络的容量,避免一开始就发送大量数据造成网络拥塞。

拥塞避免:一旦拥塞窗口达到一个阈值(拥塞窗口大小的一半),TCP发送方采用线性增加的方式增加拥塞窗口,以更稳定地发送数据。即拥塞窗口的增加速率由指数增长变成线性增长,减缓拥塞窗口增长的速度。

快速重传:当接收方收到的重复确认(ACK)达到一定数量时,表示发送的数据部分被丢失,TCP发送方会立即重传对应的丢失部分数据,而不必等待超时。

快速恢复:在进行快速重传后,TCP发送方将拥塞窗口减半,并进入快速恢复状态。在这个状态下,拥塞窗口仍然线性增加,但增加速度降低。

超时重传:

当数据发送后,TCP发送方会启动一个定时器,等待接收方发送确认报文。如果在定时器时间内没有收到确认,则认为数据丢失,TCP发送方会立即重传该数据。

超时时间的选择是有一定策略的,一般会根据网络环境动态调整。如果确认报文的返回时间很短,则认为网络较好,可以采用较短的超时时间。反之,若返回时间较长,则认为网络拥塞或延迟较高,需要设置较长的超时时间。

超时重传主要用于检测丢失的数据,并尽快重新发送以保证数据的可靠传输。但超时重传容易造成网络拥塞,因此拥塞控制机制与超时重传机制相互配合,对网络拥塞进行控制与避免。

4.Http 2.0 相比 1.0做了哪些更新?

  1. 二进制传输:HTTP/2.0 使用二进制格式来传输数据,而 HTTP/1.1 使用文本格式。二进制格式更加紧凑和高效,减少了传输的开销,使数据传输更快。
  2. 多路复用(Multiplexing):HTTP/2.0 允许多个请求和响应同时在单个连接上传输,而不需要像 HTTP/1.1 那样在多个连接上传输。这提高了性能,减少了延迟,特别对于加载网页中的多个资源文件非常有益。
  3. 头部压缩:HTTP/2.0 使用 HPACK 算法对 HTTP 头部进行压缩,减小了头部信息的传输开销。在 HTTP/1.1 中,每次请求和响应都会包含重复的头部信息,而 HTTP/2.0 可以显著减小这种冗余。
  4. 服务器推送(Server Push):HTTP/2.0 允许服务器主动向客户端推送资源,而不需要客户端显式请求。这有助于加速页面加载,减少了客户端发起请求的次数。
  5. 优化流量控制:HTTP/2.0 提供了更好的流量控制机制,允许客户端和服务器更好地管理数据流量,避免了拥塞。
  6. 安全性:虽然 HTTP/2.0 不要求使用加密,但现实中,几乎所有的 HTTP/2.0 连接都使用了加密,通常使用 TLS/SSL,以提高安全性和隐私。
  7. 适应性:HTTP/2.0 可以更好地适应不稳定的网络条件,如高延迟或丢包率高的情况,提供更好的性能。

5.TCP 有哪些字段?

传输控制协议(Transmission Control Protocol,TCP)是一种传输层协议。TCP使数据包从源到目的地的传输更加顺畅。它是一种面向连接的端到端协议。每个数据包由TCP包裹在一个报头中,该报头由10个强制字段共20个字节和一个0到40 字节的可选数据字段组成

​ 1.源端口号(Source Port):16bits,该字段标识发送方应用程序的端口号。

​ 2.目标端口号(Destination Port):16bits,该字段标识接收方应用程序的端口号。

​ 3.序列号(Sequence Number):32bits,在连接建立(三次握手)后,该字段包含一个32位随机初始序列号/起始数据位,随后增加传输的字节数。

​ 4.确认应答号(Acknowledgement Number):32bits,接收方使用这个32位参数来请求下一个TCP段。它是下一个预测的TCP段的序列号。

​ 5.报头长度(Header Length):4bits,该字段表示TCP报头的大小,但是是按比例缩小的版本。

​ 6.保留位(Reserved):6bits,该字段的位设置为零。这些位保留供以后使用。

​ 7.标志位(Flags bits):6bits,一组六个字段,每个字段长一位。TCP标志用于指示TCP会话期间的特定状态,可用于故障排除或控制特定连接的处理方式。每个标志位值为1,表示特定标志为”设置”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么要用向量检索

之前写过一篇文章,是我个人到目前阶段的认知,所做的判断。我个人是做万亿级数据的搜索优化工作的。一直在关注任何和搜索相关的内容。 下一代搜索引擎会什么?-CSDN博客 这篇文章再来讲讲为什么要使用向量搜索。 在阅读这篇文章之前呢&#xf…

【网络安全】网络设备可能面临哪些攻击?

网络设备通常是网络基础设施的核心,并控制着整个网络的通信和安全,同样面临着各种各样的攻击威胁。 对网络设备的攻击一旦成功,并进行暴力破坏,将会导致网络服务不可用,且可以对网络流量进行控制,利用被攻陷…

【JavaEE】线程池

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…

springcloud分布式事务

文章目录 一.为什么引入分布式事务?二.理论基础1.CAP定理2.BASE理论 三.Seata1.微服务集成Seata2.XA模式(掌握)3.AT模式(重点)4.TCC模式(重点)5.Saga模式(了解) 四.四种模式对比五.Seata高可用 一.为什么引入分布式事务? 事务的ACID原则 在大型的微服务项目中,每一个微服务都…

案例课4——智齿客服

1.公司介绍 智齿科技,一体化客户联络中心解决方案提供商。提供基于「客户联络中心」场景的一体化解决方案,包括公域私域、营销服务、软件BPO的三维一体化。 智齿科技不断整合前沿的人工智能及大数据技术,已构建形成呼叫中心、机器人「在线语音…

主机访问Android模拟器网络服务方法

0x00 背景 因为公司的一个手机app的开发需求,要尝试链接手机开启的web服务。于是在Android Studio的Android模拟器上尝试连接,发现谷歌给模拟器做了网络限制,不能直接连接。当然这个限制似乎从很久以前就存在了。一直没有注意到。 0x01 And…

分销电商结算设计

概述 分销电商中涉及支付与结算;支付职责是收钱,结算则是出钱给各利益方; 结算核心围绕业务模式涉及哪些费用,以及这些费用什么时候通过什么出资渠道,由谁给到收方利益方; 结算要素组成费用项结算周期出…

区块链的可拓展性研究【03】扩容整理

为什么扩容:在layer1上,交易速度慢,燃料价格高 扩容的目的:在保证去中心化和安全性的前提下,提升交易速度,更快确定交易,提升交易吞吐量(提升每秒交易量) 目前方案有&…

详解进程管理(银行家算法、死锁详解)

处理机是计算机系统的核心资源。操作系统的功能之一就是处理机管理。随着计算机的迅速发展,处理机管理显得更为重要,这主要由于计算机的速度越来越快,处理机的充分利用有利于系统效率的大大提高;处理机管理是整个操作系统的重心所…

前后端联调神器《OpenAPI-Codegen》

在后端开发完接口之后,前端如果再去写一遍接口来联调的话,会很浪费时间,这个时候使用OpenAPI接口文档来生成Axios接口代码的话,会大大提高我们的开发效率。 Axios引入 Axios是一个基于Promise的HTTP客户端,用于浏览器…

Go压测工具

前言 在做Go的性能分析调研的时候也使用到了一些压测方面的工具,go本身也给我们提供了BenchMark性能测试用例,可以很好的去测试我们的单个程序性能,比如测试某个函数,另外还有第三方包go-wrk也可以帮助我们做http接口的性能压测&…

C# 任务并行类库Parallel调用示例

写在前面 Task Parallel Library 是微软.NET框架基础类库(BCL)中的一个,主要目的是为了简化并行编程,可以实现在不同的处理器上并行处理不同任务,以提升运行效率。Parallel常用的方法有For/ForEach/Invoke三个静态方法…

Element-UI定制化Tree 树形控件

1.复制 说明&#xff1a;复制Tree树形控件。 <script> export default {data() {return {data: [{label: 一级 1,children: [{label: 二级 1-1,children: [{label: 三级 1-1-1}]}]}, {label: 一级 2,children: [{label: 二级 2-1,children: [{label: 三级 2-1-1}]}, {l…

Linux:进程优先级与命令行参数

目录 1.进程优先级 1.1 基本概念 1.2 查看系统进程 1.3 修改进程优先级的命令 2.进程间切换 2.1 相关概念 2.2 Linux2.6内核进程调度队列&#xff08;了解即可&#xff09; 3.命令行参数 1.进程优先级 1.1 基本概念 cpu资源分配的先后顺序&#xff0c;就是指进程的优…

利用Node.js和cpolar实现远程访问,无需公网IP和路由器设置的完美解决方案

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

LeetCode 77.组合

题目&#xff1a; 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 方法&#xff1a;灵神-组合型回溯 剪枝 class Solution {private int k;private final List<Integer> path new ArrayList<>();…

反序列化 [网鼎杯 2020 朱雀组]phpweb 1

打开题目 我们发现这个页面一直在不断的刷新 我们bp抓包一下看看 我们发现index.php用post方式传了两个参数上去&#xff0c;func和p 我们需要猜测func和p两个参数之间的关系&#xff0c;可以用php函数MD5测一下看看 我们在响应处得到了一串密文&#xff0c;md5解密一下看看 发…

Windows11安装使用Oracle21C详细步骤<图文保姆级>新版本

Windows11安装使用Oracle21C详细步骤<图文保姆级>新版本 Database Software Downloads | Oracle 中国 下载完成后解压缩 双击setup.exe 打开安装页面 同意下一步 更改自己的路径点击下一步 输入密码 下一步安装等待即可 等待加载配置时间有点久 完成即可 使用 搜索…

【Kubernetes】四层代理Service

Service四层代理 一、Service概念原理1.1、为什么要有Service1.2、Service概述1.3、工作原理1.4、三类IP地址【1】Node Network&#xff08;节点网络&#xff09;【2】Pod network&#xff08;pod 网络&#xff09;【3】Cluster Network&#xff08;服务网络&#xff09; 二、S…

C++之异常处理

C语言传统的处理错误的方式 传统的错误处理机制&#xff1a; 1. 终止程序, 如assert. 缺陷: 用户难以接受, 如发生内存错误, 除0错误时就会终止程序. 如果assert括号里面的表达式结果为假, 那么assert就会中断程序并报错, 所以使用assert可以帮助我们在程序判断一些可能出错的…