【计算机网络】计网常见面试题总结
目录
一、谈一谈对OSI七层模型和TCP/IP四层模型的理解?
二、谈一谈TCP协议的三次握手过程?
三、TCP协议为什么要三次握手?两次、四次不行吗?
四、谈一谈TCP协议的四次挥手过程?
五、什么是流量控制?
六、什么是滑动窗口?
七、什么是拥塞控制?
八、TCP和UDP有什么区别?
一、谈一谈对OSI七层模型和TCP/IP四层模型的理解?
首先分层的原因是为了将计算机网络分为多层结构,每一层都有每一层的作用与规则,能够更好的进行网络连接。就好比发快递,从快递员从你手里拿到快递再到快递送到快递的网点进行分拣、运输到目的地的处理中心、最后到接收人收到快递这个过程。
OSI七层模型是对计算机网络的一种理想化模型,分别为:
物理层是通过网线、光缆这种物理方式将电脑连接起来,通过比特流传输。
数据链路层是将比特流封装成数据帧,对0、1进行分组。
网络层是决定数据在网络中的游走路径。
传输层是通过tcp或udp协议来为两台主机提供数据传输服务。
会话层是负责管理应用程序之间的会话,也就是会话的建立、维护和重连。
表示层是为了是数据能够被其他计算机所能理解转换成的另一种格式比如文字、视频、图片等。
应用层为最高层是最终呈现给用户的界面。
而TCP/IP四层模型是实际上的模型分层,也是对七层模型的简化版,为应用层、传输层、网络层、数据链路层。
其中应用层常见的协议有DNS域名协议、HTTP协议、邮件传输协议(SMTP、POP3、IMAP4等)、FTP传输协议等。
传输层常见的协议为TCP协议与UDP协议。
二、谈一谈TCP协议的三次握手过程?
第一次握手由客户端向服务端发送一个TCP数据包,其中首部中SYN=1,ACK=0,表示这是一个请求连接数据包。
第二握手由服务端向客户端发送,其中SYN=1,ACK=1,表示服务端同意连接。
第三次握手是由客户端再次向服务端发送,其中SYN=0,ACK=1。表示双方都同意连接,并且确认收到服务端的确认数据包。
三、TCP协议为什么要三次握手?两次、四次不行吗?
三次握手是为了避免重复连接,并且通过三次连接可以获得一个可靠的序列号seq。
如果只有两次握手的话,服务端并没有收到客户端的确认数据包、并不知到客户端是否收到服务端的确认数据包,而且无法获得初始化的序列号seq。
如果四次的话又会有些浪费资源。
四、谈一谈TCP协议的四次挥手过程?
第一次挥手由客户端向服务端发送,首部中FIN=1,ACK=0,表示这是一个请求断开的与服务端的连接。
第二次挥手是由服务端向客户端发送,其中FIN=0,ACK=1,表示确认收到客户端的发送的请求断开报文。此时客户端对服务端的连接就已经释放了,客户端只能接收服务端的数据包,不能发送。而服务端并没有释放,既可以接收也可以释放。
第三次挥手还是由服务端向客户端发送,其中FIN=1,ACK=1,表示服务端已经没有要向客户端发送的数据了,并释放与客户端之间的连接。此时服务端不能向客户端发送数据了,但能接收。
第四次挥手是由客户端收到对服务端的连接释放报文后,向服务端发送,其中ACK=1,FIN=0,表示确认收到收到释放报文。同意服务端释放连接。
五、什么是流量控制?
流量控制是指接收方对于发送方发送速率的一种控制。
因为每一方都有一块固定大小的缓存空间,而接收方需要要求发送方不能发送超过接收方缓存容量的数据。接收方来不及处理发送方的数据,就会提示对方降低发送速率,防止数据包丢失。
而TCP是利用滑动窗口来进行流量控制的。在确认报文中有一个窗口字段就是设置发送方的窗口大小,从而影响发送速率。
六、什么是滑动窗口?
因为如果每发送一个数据,都要等收到对方的确认收到后,才发送下一个数据的话,这样的通信效率是很慢的。而TCP协议就引入了窗口的概念。滑动窗口就是TCP协议用于实现流量控制的一种机制。
在发送发和接收方都会维护着各自的缓冲区,这个缓存区就叫窗口。窗口大小是由接收方首部中窗口这个字段来决定的。
在发送方的窗口中分别有四个区域,已经收到确认的数据、发送但没有被确认的数据、未发送但在缓存范围内的数据、未发送但超出缓存范围的区域,窗口会随着发送数据被确认而向着未发送的区域滑动。
而接收方的窗口分为成功接收并确认的数据、未收到但可以确认的数据、未收到但超出窗口范围的数据。接收方也会随着收到数据并确认后窗口向着未收到移动。接收方可以通过改变窗口大小来控制发送的速率,从而实现流量控制。
七、什么是拥塞控制?
发送方需要维护一个叫拥塞窗口的状态量来决定可以同时发送多少数据包。而TCP主要通过四个算法来进行拥塞控制:
慢开始:拥塞窗口从1开始已指数的方式增长。
拥塞避免:是指当拥塞窗口的值大于慢开始门限(ssthresh)时,会进入拥塞避免,拥塞窗口的增长会从指数增长改为每次只加一的线性增长。
快重传:是指在发送拥塞开始后已经开始出现丢包,而处理丢包的方式为超时重传(发送后的时间已经到达RTO还没收到确认数据包)时,会先将慢开始门限的值改为拥塞窗口值的一半,然后将拥塞窗口的值改为1,重新进入慢开始。
快恢复:是指如果进行快重传后(收到3个重复的确认数据包),会将慢开始门限改为原来的一半,然后继续执行拥塞避免。
八、TCP和UDP有什么区别?
TCP是面向连接的,仅支持一对一通信,并且是可靠性传输,而UDP是无需连接,支持一对一、一对多、多对一、多对多,通信,不保证可靠性。但是传输效率要比TCP高。首部需要8个字节,而TCP的首部为20-60字节。
注:本篇文章都是我自己的理解,可能用词和语句不够严谨,如有错误请评论指正,谢谢!(持续更新中......)
相关文章:
【计算机网络】计网常见面试题总结
目录 一、谈一谈对OSI七层模型和TCP/IP四层模型的理解? 二、谈一谈TCP协议的三次握手过程? 三、TCP协议为什么要三次握手?两次、四次不行吗? 四、谈一谈TCP协议的四次挥手过程? 五、什么是流量控制? …...

SpringMVC 学习(七)JSON
9. JSON 9.1 简介 JSON(JavaScript Object Notation,JS 对象标记)是一种轻量级数据交换格式,采用独立于编程语言的文本格式储存和表示数据,易于机器解析和生成,提升网络传输效率。 任何 JavaScript 支持…...

重学C++ | std::set 的原理
std::set 是C标准库中的容器之一,它基于红黑树实现。std::set 利用红黑树的特性来实现有序的插入、查找和删除操作,并且具有较好的平均和最坏情况下的时间复杂度。 当向 std::set 插入元素时,它会按照特定的比较函数(bool less<…...

AnV-X6使用及总结
目录 1 简介2 安装3 基础概念3.1 画布Graph3.2 基类Cell3.3 节点Node3.4 边Edge 4 使用4.1 创建节点4.2 节点连线4.3 事件系统 5 总结 1 简介 AntV是一个数据可视化(https://x6.antv.antgroup.com/)的工具(https://antv.vision/zh/ …...

Go 围炉札记
文章目录 一、安装二、文档三、使用 一、安装 VSCode 和 CLion 为 Go 开发配置Visual Studio Code | Microsoft Learn VScode下配置Go语言开发环境【2023最新】 基础篇:新手使用vs code新建go项目 vscode里安装Go插件和配置Go环境 GO 笔记 Golang 配置代理 golang…...

数据分析回头看2——重复值检查/元素替换/异常值筛选
0、前言: 这部分内容是对Pandas的回顾,同时也是对Pandas处理异常数据的一些技巧的总结,不一定全面,只是自己在数据处理当中遇到的问题进行的总结。 1、当数据中有重复行的时候需要检测重复行: 方法:使用p…...

什么是OSPF?为什么需要OSPF
【微|信|公|众|号:厦门微思网络】 【微思网络www.xmws.cn,成立于2002年,专业培训21年,思科、华为、红帽、ORACLE、VMware等厂商认证及考试,以及其他认证PMP、CISP、ITIL等】 什么是OSPF? 开放式最短路径优…...

轻量级的日志采集组件 Filebeat 讲解与实战操作
文章目录 一、概述二、Kafka 安装三、Filebeat 安装1)下载 Filebeat2)Filebeat 配置参数讲解3)filebeat.prospectors 推送kafka完整配置1、filebeat.prospectors2、processors3、output.kafka 4)filebeat.inputs 与 filebeat.pros…...
C# 委托和事件
C# 委托和事件 委托匿名方法事件 委托 当要把方法传送给其他方法时,需要使用委托。首先定义要使用的委托,对于委托,定义它就是告诉编译器这种类型的委托代表了哪种类型的方法,然后创建该委托的一个或多个实例。编译器在后台将创建…...
数据结构与算法之字典: Leetcode 349. 两个数组的交集 (Typescript版)
两个数组的交集 https://leetcode.cn/problems/intersection-of-two-arrays/description/ 题目和解题参考 https://blog.csdn.net/Tyro_java/article/details/133279737 使用字典来解题的算法实现 字典:顾名思义,像新华字典一样可查找,基…...
day-56 代码随想录算法训练营(19)动态规划 part 16
538.两个字符串的删除操作 思路一: 1.dp存储:以word1[i-1]结尾,word2[j-1]结尾,最少进行dp[i][j]次操作2.动态转移方程: if(word1[i-1]word2[i-1]) dp[i][j]dp[i-1][j-1]; else dp[i][j]min(dp[i-1][…...
蓝桥等考Python组别四级005
第一部分:选择题 1、Python L4 (15分) 字符“0”的ASCII码值为48,则字符“5”的ASCII码值为( )。 3953120240正确答案:B 2、Python L4 (15分) 下面哪个是Python中正确的变量名?( ) ABC#sup01Trueif正确答案:B...
【Linux】diff 命令
【Linux】diff 命令——并排格式输出 功能 diff 以逐行的方式,比较文本文件的异同处。 如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录 diff [参数] [文件A] [文件B]diff [参数] [目录A] [目录B]【参数】…...

【51单片机】9-定时器和计数器
1.定时器的介绍 1.什么是定时器 (1)SoC的一种内部的外设【在单片机里面,但是在CPU外面】 (2)定时器就是CPU的”闹钟“ 2.什么是计数器 (1)定时器就是用计数的原始实现的 (2…...

2023年海南省职业院校技能大赛(高职组)信息安全管理与评估赛项规程
2023年海南省职业院校技能大赛(高职组) 信息安全管理与评估赛项规程 一、赛项名称 赛项名称:信息安全管理与评估 英文名称:Information Security Management and Evaluation 赛项组别:高等职业教育 赛项归属产业&…...

大模型深挖数据要素价值:算法、算力之后,存储载体价值凸显
文 | 智能相对论 作者 | 叶远风 18.8万亿美元,这是市场预计2030年AI推动智能经济可产生的价值总和,其中大模型带来的AI能力质变无疑成为重要的推动力量。 大模型浪潮下,业界对AI发展的三驾马车——算力、算法、数据任何一个维度的关注都到…...

AI文章,AI文章生成工具
在互联网时代,随着信息爆炸式增长,文章的需求愈发旺盛。从博客、新闻、社交媒体到企业宣传,文字作为传达信息、吸引受众的工具变得愈发重要。但问题是,对于很多人来说,创作一篇高质量的文章并不容易。时间、创意、写作…...

mac有必要用清理软件吗?有哪些免费的清理工具
当我们谈到Mac电脑时,很多人都会觉得它比Windows系统更加稳定和高效,也更不容易积累垃圾文件。但实际上,任何长时间使用的操作系统都会逐渐积累不必要的文件和缓存。那么,对于Mac用户来说,有必要使用专门的清理软件吗&…...

React 全栈体系(十八)
第九章 React Router 6 二、代码实战 6. 路由的 params 参数 6.1 routes /* src/routes/index.js */ import About from "../pages/About"; import Home from "../pages/Home"; import Message from "../pages/Message"; import News from &q…...
TCP/UDP
TCP:可靠的有序传输 TCP是一种面向连接的协议,旨在提供可靠、有序的数据传输。它通过以下方式实现这一目标: 1. 连接建立和维护 在使用TCP传输数据之前,必须先建立连接。这个过程包括三次握手,即客户端和服务器之间…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...