计算机网络高频面试题集锦

问题1:谈一谈对OSI七层模型和TCP/IP四层模型的理解?

回答点:七层模型每层对应的作用及相关协议、为什么分层、为什么有TCP/IP四层模型

参考:

1、OSI七层参考模型是一个ISO组织所提出的一个标准参考分层模型,它按照数据传输过程所涉及的传输设备、方式、功能职责的不同将数据传输划分为了7层,从上到下依次:

  • 应用层:提供两个终端设备上应用程序之间信息交换的服务,HTTP、SMTP、POP3、DNS、FTP、TELNET
  • 表示层:提供各种用于应用层数据的编码和转换功能,确保能被另一个系统的应用层所识别
  • 会话层:为不同应用程序之间建立连接提供服务
  • 传输层:负责向两台终端设备进程之间的通信提供通用的数据传输服务,TCP、UDP
  • 网络层:为分组交换网络上的不同主机提供通信服务,IP
  • 数据链路层:将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧
  • 物理层:实现相邻计算机节点之间比特流的透明传输

2、分层目的:

  • 各层之间相互独立,各司其职,与我们在开发时的分层是一样的
  • 提高整体的灵活性,与平时开发要求的高内聚、低耦合一致
  • 让大问题——》多个小问题,让复杂的计算机网络系统变得易于设计、实现

3、但是OSI七层参考模型的设计是相对复杂的,设计成本高,是一个理想状态下的分层模型,而在实际应用中,为了简便我们的开发与设计提出了TCP/IP四层模型,它是对于OSI七层模型的一个简化。将应用层+表示层+会话层=应用层,数据链路层+物理层=网络接口层,通常实际开发中常采用传输层TCP协议+网络层IP协议故称为TCP/IP协议

问题2:谈谈TCP协议的3次握手过程?

回答点:TCP协议的特点(面向连接、可靠传输)、三次握手过程

参考:

TCP协议是一个面向连接,基于字节流可靠通信的传输层协议。在双方进行通信时需要三次握手来建立连接保证数据传输的可靠性。

第一次握手:C端——》S端发送SYN=1数据包【请求建立连接】,C端进入SYN-SENT状态;

第二次握手:S端手段C端发送的SYN=1数据包,接着C端——》S端发送SYN=1,ACK=1的数据包【同意连接并对第一次握手的数据包进行确认】,C端从listen状态进入SYN-RCVD状态。

第三次握手:C端收到S端发送的SYN=1,ACK=1的同意连接报文段后,进入ESTABLISHED状态,向S端发送ACK=1的数据包【再次对第二次握手S端发来的数据包进行确认】,S端收到后也进入ESTABLISHED状态。

当C端与S端都进入ESTABLISHED状态时,表示可靠连接以建立完成,可以进行数据的通信了。

问题3:TCP协议为什么要3次握手?2次,4次不行吗?

回答点:每一次握手的意义、2次握手确认双发网络正常、4次浪费资源

参考:

第一次握手:发起建立连接请求;“XXX,咱们去看电影吧”

第二次握手:确认并同意连接请求;“可以啊”

第三次握手:对第二次的连接进行确认;“那咱们走吧”

前两次握手完成只能确认C端与S端之间的网络是顺畅的,并不能保证建立了可靠的传输。

例如:当C端向S端第一次发送请求连接报文时,由于网络等原因,迟迟没有到S端,C端又重新向S端发送了请求连接报文,这一次很顺畅的到了S端,S端并进行了确认。若这时,C端第一次发送的请求连接报文到了S端,S端以为C端再一次进行连接就会再次发送确认报文,而C端已经收到过一次确认报文,所以此次的确认报文它会忽略,而S端发送了确认报文后会一直等待C端的回应,就会造成S端一直等待,浪费资源,甚至服务器停止响应。2次不能够保证可靠的连接,也不能避免重复连接或连接混乱问题。在经历过3次握手稳定的连接已建立,再次传输浪费资源。所有三次是最佳的既节省资源又能建立可靠连接的次数

问题4:谈谈TCP协议的四次挥手过程?

回答点:连接管理(断开连接节省资源),四次挥手传输的标志位

参考:

TCP面向连接的可靠传输过程,建立连接来发送数据保证数据的可靠性,这条连接是占用资源的。当双方通信完成后,会通过四次回收来释放连接,对资源进行回收。四次回收过程如下:

第一次挥手:C端——》S端发送FIN=1的数据包,请求释放连接

第二次挥手:S端收到释放连接数据包,S端——》C端发送ACK=1数据包,进行确认

此时双方的连接状况:C端不能再向S端传输数据了,S端仍可以继续向C端传数据,C端也可接收

第三次挥手:当S端不在向C端发送数据时,会再次向C端发送ACK=1,FIN=1数据包【释放连接】

第四次挥手:C端收到S端的释放连接数据包,再次进行确认向S端发送ACK=1数据包,S端接收

经历四次握手后,双方断开连接,梳理一下双方每次挥手的状态:

第一次:C端——》等待1

第二次:C端——》等待2,S端——》等待关闭

第三次:C端——》超时等待,S端——》最后确认

第四次:C端——》CLOSED,S端——》CLOSED

问题5:什么是流量控制?

回答点:含义、如何实现

流量控制是指接收方根据窗口大小对于发送方所发送数据包的限制,通过流量控制,让发送方所发送的数据接收方能够有效的全部接收,避免丢包引起的重传机制而带来不必要的消耗。

流量控制需要通过滑动窗口来实现,接收方发送的确认报文中的窗口字段可以控制发送方窗口的大小,从而影响发送方的发送速率,若窗口字段设置为0,则不能发送数据

问题6:什么是滑动窗口?

回答点:概念、作用

滑动窗口通过拥塞窗口值指定发送方每次能发送数据包的个数。发送方和接收方分别维护了各自的缓冲区,也称窗口。发送方窗口的大小由接收方中TCP首部的窗口字段决定。发送方将窗口内容分为:已发送已确认、已发送未确认、未超出发送窗口范围的未发送数据,已超出发送窗口范围的未发送数据。随着接收方确认,发送方的窗口不断向前滑动

问题7:什么是拥塞控制?

回答点:含义、作用、实现

拥塞控制是指对整个网络中传输的数据包多少进行控制,控制的目的就是避免「发送方」的数据填满整个网络,控制「发送方」的数据发送量。拥塞控制主要通过4个算法来实现:

1、慢启动:刚来时发送数据包个数少,“试探性”发送,依次呈指数增长,直到超过慢启动门限,发生拥塞的可能性就变大了,会利用拥塞避免处理

2、拥塞避免:超过慢启动门限后,不再呈指数增长,能发送的数据包数逐次+1,当发生丢包触发重传机制后,会使用拥塞发生处理

3、拥塞发生:重传机制有2种

当使用超时重传机制:

        (1)将门限值ssthresh设为拥塞窗口值cwnd的一半【ssthresh=cwnd/2】

        (2)拥塞窗口值cwnd设为1,回到慢启动【cwnd=1】

使用快速重传机制:

        (1)将门限值ssthresh设为拥塞窗口值cwnd的一半【ssthresh=cwnd/2】

        (2)拥塞窗口值cwnd设为原来的一半+3【cwnd=cwnd/2+3】

4、快速开始:在拥塞发生时采用快速重传机制就会快速开始

 快速开始是在拥塞情况并不那么严重,很快就能恢复网络的通信状况的一个算法

问题8:TCP和UDP有什么区别?

回答点:是否连接、可靠、首部长度、使用场景

TCP面向连接可靠首部20-60字节数据传输要求严格
UDP面向无连接不可靠首部8字节视频(即时传输)

 

             

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

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

相关文章

Python自动化小技巧23——PDF文件拆分为单独页面(PyMuPDF)

其实编辑PDF用Adobe就行,它功能超级齐全,可是这玩意要收费...去弄免费破解版,找资源又得半天,所以用python来拆分PDF文件吧,可以批量化处理。 至于为什么不用WPS.....别问,问就是不想开会员。 脚本代码 先…

39 | selenium基础架构,UI测试架构

什么是测试基础架构? 测试基础架构指的是,执行测试的过程中用到的所有基础硬件设施以及相关的软件设施。因此,我们也把测试基础架构称之为广义的测试执行环境。通常来讲,测试基础架构主要包括以下内容: 执行测试的机器…

机器学习第十一课--K-Means聚类

一.聚类的概念 K-Means算法是最经典的聚类算法,几乎所有的聚类分析场景,你都可以使用K-Means,而且在营销场景上,它就是"King",所以不管从事数据分析师甚至是AI工程师,不知道K-Means是”不可原谅…

MATLAB | R2023b更新了哪些好玩的东西?

R2023b来啦!!废话不多说看看新版本有啥有趣的玩意和好玩的特性叭!!依旧把绘图放最前面叭,有图的内容看的人多。。 1 调色板 MATLAB终于不只有一套配色了,诸君且看: y [3 5 7 9 11; 2 5 6 8 1…

uniapp确认提示框;uniapp判断输入框值是否符合正常手机号,身份证号

确认提示框 UniApp 中&#xff0c;你可以使用 uni.showModal 方法来创建确认提示框。以下是一个示例&#xff1a; <template><view class"container"><button click"showAuthModal">显示确认提示框</button></view> </…

【问题记录】解决“命令行终端”和“Git Bash”操作本地Git仓库时出现 中文乱码 的问题!

环境 Windows 11 家庭中文版git version 2.41.0.windows.1 问题情况 在使用 “命令行终端” 和 “Git Bash” 在本地Git仓库敲击命令时&#xff0c;对中文名称文件显示一连串的数字&#xff0c;如下所示&#xff1a;这种情况通常是由于字符编码设置不正确所引起的 解决办法 设置…

什么是分布式锁?他解决了什么样的问题?

相信对于朋友们来说&#xff0c;锁这个东西已经非常熟悉了&#xff0c;在说分布式锁之前&#xff0c;我们来聊聊单体应用时候的本地锁&#xff0c;这个锁很多小伙伴都会用 ✔本地锁 我们在开发单体应用的时候&#xff0c;为了保证多个线程并发访问公共资源的时候&#xff0c;…

网络编程day05(IO多路复用)

今日任务&#xff1a; TCP多路复用的客户端、服务端&#xff1a; 服务端代码&#xff1a; #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <unistd.h> …

uniapp 内容展开组件

uni-collapse折叠面板并不符合需求&#xff0c;需要自己写一个。 效果展示&#xff1a; 代码&#xff1a; &#xff08;vue3版本&#xff09; <template><view class"collapse-view"><view class"collapse-content"><swiper:autopl…

OpenHarmony应用核心技术理念与需求机遇简析

一、核心技术理念 图片来源&#xff1a;OpenHarmony官方网站 二、需求机遇简析 新的万物互联智能世界代表着新规则、新赛道、新切入点、新财富机会;各WEB网站、客户端( 苹果APP、安卓APK)、微信小程序等上的组织、企业、商户等;OpenHarmony既是一次机遇、同时又是一次大的挑战&…

word、excel、ppt转为PDF

相关引用对象在代码里了 相关依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.1</version></dependency> <dependency><groupId>org.apache.poi</group…

好用的记笔记app选哪个?

当你在日常生活中突然获得了一个灵感&#xff0c;或者需要记录会议的重要内容&#xff0c;或者是学校课堂上的笔记&#xff0c;你通常会拿出手机&#xff0c;因为它总是在你身边&#xff0c;随时可用。这时候&#xff0c;一款好的记笔记App可以让你事半功倍。 敬业签是一款全面…

「UG/NX」Block UI 从列表选择部件SelectPartFromList

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

Qt5开发及实例V2.0-第十五章-Qt单元测试框架

Qt5开发及实例V2.0-第十五章-Qt单元测试框架 第15章 Qt 5单元测试框架15.1 QTestLib框架15.2 简单的Qt单元测试15.3 数据驱动测试15.4 简单性能测试 本章相关例程源码下载1.Qt5开发及实例_CH1501.rar 下载2.Qt5开发及实例_CH1502.rar 下载3.Qt5开发及实例_CH1503.rar 下载4.Qt5…

构建个人云存储:本地电脑搭建SFTP服务器,开启公网访问,轻松共享与管理个人文件!

本地电脑搭建SFTP服务器&#xff0c;并实现公网访问 文章目录 本地电脑搭建SFTP服务器&#xff0c;并实现公网访问1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内…

stm32之GPIO库函数点灯分析

stm32官方为了方便开发者&#xff0c;利用CubeMX 生成HAL库有关的C代码。HAL库就是硬件抽象层(hardware abstraction layer)&#xff0c;生成一系列的函数帮助我们快速生成工程&#xff0c;脱离复杂的寄存器配置。stm32相对于51来功能强大&#xff0c;但是寄存器的数量也不是一…

C++核心编程——P22-练习案例2:点和圆的关系

在一个类中可以让另一个类作为这个类的成员 #include<iostream> using namespace std; class Point//点类 { public:void setx(int x){c_x x;}int getx(){return c_x;}void sety(int y){c_y y;}int gety(){return c_y;}//建议将属性设置为私有&#xff0c;对外提供接口…

Django(20):信号机制

目录 信号的工作机制信号的应用场景两个简单例子Django常用内置信号如何放置信号监听函数代码自定义信号第一步&#xff1a;自定义信号第二步&#xff1a;触发信号第三步&#xff1a;将监听函数与信号相关联 信号的工作机制 Django 框架包含了一个信号机制&#xff0c;它允许若…

pcl--第十二节 2D和3D融合和手眼标定

2D&3D融合 概述 截止目前为止&#xff0c;我们学习了机器人学&#xff0c;学习了2D和3D视觉算法。我们也学习了2D相机(图像数据的来源)和3D相机(点云数据的来源)工作原理。 实际上&#xff0c;我们最终要做的&#xff0c;是一个手眼机器人系统。在这个系统里&#xff0c…

pytorch学习------常见的优化算法

优化算法 优化算法就是一种调整模型参数更新的策略&#xff0c;在深度学习和机器学习中&#xff0c;我们常常通过修改参数使得损失函数最小化或最大化。 优化算法介绍 1、梯度下降算法&#xff08;batch gradient descent BGD&#xff09; 每次迭代都需要把所有样本都送入&…