当前位置: 首页 > news >正文

计算机网络必会面经

1.键入网址到网页显示,期间发生了什么

2.在TCP/IP网络模型中。TCP将数据进行分段后,为什么还需要IP层继续分片

3.详细说明tcp三次握手,为什么是三次,若每次握手丢了,解决办法是什么

4.详细说明tcp四次挥手,为什么客户端要等待2msl后才可关闭,为什么有时候使用wireshark进行抓包只显示三次挥手

5.PING使用的是什么协议,是怎么工作的

1.键入网址到网页显示,期间发生了什么

2.2 键入网址到网页显示,期间发生了什么? | 小林coding (xiaolincoding.com)(非常详细,值得深究,看完有助于理解TCP/IP网络模型);

2.在TCP/IP网络模型中。TCP将数据进行分段后,为什么还需要IP层继续分片

TCP把数据切成段是为了更好地管理数据传输、流量控制和纠错,这些段的大小是基于发送和接收设备之间提前商量好的大小(MSS)。

IP分片是为了确保数据包可以通过各种不同大小的网络链路,因为在传输过程中,数据包可能会经过不同的网络,每个网络的最大允许数据包(MTU)可能不同,若遇到较小的MTU,则会对TCP分段进行分片处理。

3. 详细说明tcp三次握手,为什么是三次,若每次握手丢了,解决办法是什么

img

第一次握手

客户端请求建立连接,将首部的SYN标识位置为1,初始化序列号seq=x,发送给服务器,并进入SYN_SENT状态,等待服务器确认。

第二次握手

服务器接收到SYN后,将首部的SYN和ACK标识位置为1,回复确认ack的值为客户端发送的序列号x+1,同时自己也要初始化一个seq=y,ACK和SYN一起发送客户端,进入SYN_RECV状态。

第三次握手

客户端收到服务器的SYN和ACK包后,向服务器发送确认包ack,值为服务器的序列号y+1,并且自己的seq为x+1,此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态。

为什么是三次:

只有三次握手才能证明服务端和客户端的收发能力都是正常的。

第一次握手:客户端发数据服务端接收,服务端可以知道客户端发消息的能力是正常的,自己接收消息的能力是正常的。

第二次握手:服务端发消息客户端收,客户端可以知道自己发送接收消息的能力和服务端发送接收消息的能力是正常的。

第三次握手:客户端再发送消息服务端接收,服务端可以知道自己发送消息的能力是正常的,客户端接收消息的能力是正常的。

由此经过三次握手之后双方就可以都知道自己的发送和接收消息的能力是正常的

三次握手数据丢失的处理方案:

第一次丢失:客户端发送的SYN报文会收不到服务端的响应,从而会触发超时重传,重传的SYN报文序列号和之前相同,重传最大重传次数由内核参数控制,一般是5。如果超过最大次数客户端仍没有收到回复就会断开连接。

第二次丢失:服务端在收到客户端的报文之后会回复SYN+ACK报文,如果第二次握手丢失了客户端会认为自己丢包了,触发超时重传,重新发送SYN报文,服务端因为收不到确认的ACK自身也会重传。

第三次丢失:客户端收到服务端的 SYN-ACK 报文后会给服务端回一个 ACK 报文,此时客户端状态进入到 ESTABLISH 状态。如果发生了丢包,服务端收不到ACK会触发超时重传机制,重传 SYN-ACK 报文,直到收到确认ACK或者达到最大重传次数。(还不太懂可以看小林wireshark抓包)

4.详细说明tcp四次挥手,为什么客户端要等待2msl后才可关闭,为什么有时候使用wireshark进行抓包只显示三次挥手

1:客户端先向服务端发送FIN=1,seq=序号 u,向服务端表示自己想关闭连接了

2 服务端收到FIN=1,知道客户端要关闭了,发送ACK确认收到,并发送自己的序号和客户端刚刚发送到确认号+1,但由于服务端是被动收到客户端要关闭,所以需要一些时间来处理未处理完的数据,服务端会将未处理完的数据发给客户端;

3 待数据全部处理完成后,客户端再次向服务端发送FIN=1,表示自己也可以结束了,并发送ACK=1确认,发送确认号和自己的序列号,表示自己做好关闭准备了。

4 客户端收到后返回ACK=1,以及确认号,序列号,服务端收到后会关闭,而客户端等待2msl后关闭连接;

为什么等待2msl后才可关闭:

msl的意思是报文段在网络中的最大生存时间

img我们可以看图,右侧服务端只有在收到最后一次挥手后才会关闭,但有时也会出现异常,服务端没有收到客户端的最后一次挥手,导致迟迟无法关闭,而客户端又早早关闭,为了防止这种情况,当服务端没有收到第四次握手的请求时,会一直发送第三次挥手,告诉客户端重新发送第四次挥手,这中间的2MSL时间就是为了在意外情况下,给客户端重新发送第三次挥手的时间。每进行过一次第四次挥手,2MSL都会刷新,直到服务端没有再次发送第三次挥手为止,表示服务端终于收到第四次的挥手了,客户端也能安安心心关机了;

为什么有时候是三次:

当被动关闭方正常握手中的服务端在 TCP 挥手过程中,「没有数据要发送」并且「开启了 TCP 延迟确认机制(默认会开启)」,那么第二和第三次挥手就会合并传输,这样就出现了三次挥手。

5.PING使用的是什么协议,是怎么工作的

使用的是ICMP协议,首先知道这个协议的目的是干什么:

认IP包是否成功送达目标地址、报告发送过程中IP包被废弃的原因、改善网络设置等。在IP通信中如果某个IP包因为某种原因未能达到目标地址,具体的原因将由ICMP通知。

工作原理:

ping命令执行的时候,源主机首先会构建一个ICMP回送请求消息数据包,由ICMP协议将这个数据包连同服务端IP一起交给IP层,IP层将以服务端IP作为目的地址,本机IP地址作为源地址,协议字段设置为1,再加上一些其他控制信息,构建一个IP数据包;然后加入MAC头;如果在本地ARP映射表中查找出服务端IP所对应的MAC地址,则可以直接使用,如果没有,则需要发送ARP协议查询MAC地址。获得MAC地址后,由数据链路层构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址则是本机的MAC地址;还要附加上一些控制信息,依据以太网的介质访问规则将它们传送出去。

目的收到这个数据帧后,先检查它的目的MAC地址,并和本机的MAC地址对比,如符合,则接收,否则就丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层。IP层检查后,将有用的信息提取后交给ICMP协议。主机B会构建一个ICMP回送响应消息数据包,回送响应数据包的类型字段为0,序号为接收到的请求数据包中的序号,然后再发送出去给主机A。

在规定的时候间内,源主机如果没有接到ICMP的应答包,则说明目标主机不可达;如果接收到了ICMP回送响应消息,则说明目标主机可达

相关文章:

计算机网络必会面经

1.键入网址到网页显示,期间发生了什么 2.在TCP/IP网络模型中。TCP将数据进行分段后,为什么还需要IP层继续分片 3.详细说明tcp三次握手,为什么是三次,若每次握手丢了,解决办法是什么 4.详细说明tcp四次挥手&#xff…...

深入理解 Go 数组、切片、字符串

打个广告:欢迎关注我的微信公众号,在这里您将获取更全面、更新颖的文章! 原文链接:深入理解 Go 数组、切片、字符串 欢迎点赞关注 前言 为什么在一篇文章里同时介绍数组、切片、字符串,了解这三个数据类型底层数据结构…...

STM32下的HAL库U盘数据读写

最近在使用FreeRTOS操作U盘数据读取,与裸机开发区别不大,只要注意默认分配的栈大小就行 FATFS简介 FATFS 是一个完全免费开源的 FAT 文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准 C 语言编写,所以具有良好的硬件平…...

JavaScript(20)——事件委托

事件委托是利用事件流的特征解决一些开发需求的知识技巧 优点:减少注册次数,提高程序性能 原理:利用事件冒泡的特点。 给父元素注册事件,当我们触发子元素的时候,会冒泡到父元素上,从而触发父元素事件。…...

Linux系统安装opencv

在Linux系统上安装OpenCV时,使用pip install opencv-python-headless是一个常见的选择。以下是安装OpenCV的步骤总结: 安装步骤: 更新系统软件包(可选): sudo apt update sudo apt upgrade安装pip&#xf…...

nginx反向代理+nginx黑白名单+nginx负载均衡+平滑升级+配置jdk环境-7.30

一、反向代理 1.前端服务器配置 前端服务器:用于接收和响应客户端,代理另一台主机 Nginx 安装 (1).下载安装nginx [rootweb ~]# wget https://nginx.org/download/nginx-1.26.1.tar.gz (2).解压 [rootweb ~ ]# tar -zxvf nginx-1.26.1.tar.gz (3…...

C# Unity 面向对象补全计划 之 访问修饰符

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝...

JAVA多线程设计模式 (多线程程序的衡量标准)

前言 如果你对一个程序的评价方式还停留在“这个程序写得不错”、“这个程序写得太差”的程度,这样很难看出你是否确实分析了程序的构造。不要只是“好不好”应该要有一个“好在哪里,不好在哪里”的评量标准。 一、下载地址 下载地址:JAVA…...

消息队列使用

消息队列在分布式系统中扮演着非常重要的角色,其主要用途包括但不限于以下几点: 解耦: 消息队列可以减少应用程序之间的直接依赖,使系统各部分更加独立。例如,在一个电子商务网站中,订单系统可以将订单信息发送到消息队列中,而不必直接调用库存系统。库存系统可以从队列…...

Windows 10+Visual Studio2019 Opencv-C++安装配置

前往官网下载需要的版本Releases - OpenCVhttps://opencv.org/releases/ 1.下载并解压OpenCV 我选择4.6.0,点击windows版本,进行下载 2.配置项目属性 打开你的Visual Studio 2019项目 -> 右击项目名,选择“属性” 注:整个配…...

百易云资产管理运营系统 comfileup.php 文件上传致RCE漏洞复现(XVE-2024-18154)

0x01 产品简介 百易云资产管理运营系统,是专门针对企业不动产资产管理和运营需求而设计的一套综合解决方案。该系统能够覆盖资产的全生命周期管理,包括资产的登记、盘点、评估、处置等多个环节,同时提供强大的运营分析功能,帮助企业优化资产配置,提升运营效率。 0x02 漏…...

【学习笔记】Redis学习笔记——第17章 集群

第17章 集群 17.1 节点 使用cluster meet命令将其他节点添加到当前节点集群中 17.1.1 启动节点 通过cluster-enabled设置来决定是否启用集群 17.1.2 集群数据结构 每个节点都保存了自己及其他节点的IP端口号等信息 17.1.3 cluster meet命令的实现 是收到命令的节点和新…...

Vue - CSS基础学习

一、元素及属性 CSS 是为 web 内容添加样式的代码。 style标签 1.语法 1.除了选择器部分,每个规则集都应该包含在成对的大括号里({})。 2.在每个声明里要用冒号(:)将属性与属性值分隔开。 3.在每个规则集里要用分号…...

python setup.py install

有三种方法安装pyinstaller,而我唯独用下面这种最方便,又成功。 下载源码安装包,然后解压安装包,打开cmd并进入安装包解压目录,可以看到该目录下有一个setup.py的文件。 执行命令:python setup.py instal…...

论文解读:DiAD之SG网络

目录 一、SG网络功能介绍二、SG网络代码实现 一、SG网络功能介绍 DiAD论文最主要的创新点就是使用SG网络解决多类别异常检测中的语义信息丢失问题,那么它是怎么实现的保留原始图像语义信息的同时重建异常区域? 与稳定扩散去噪网络的连接: S…...

Prometheus+Grafana 监控平台实践-搭建常用服务监控告警

前言 Prometheus 是一个开放性的监控解决方案,通过各种 Exporter 采集当前主机/服务的数据,和 Grafana 相结合可以实现强大的监控和可视化功能 本篇将分享使用 docker compose 构建 Prometheus+Grafana,并监控之前文章所搭建的主机&服务,分享日常使用的一些使用经验 文…...

leaflet加载天地图:卫星底图(影响地图) 和 路网底图(矢量地图)【webgis】

文章目录 引言I 申请Key1.1 应用创建1.2 账号认证II 使用申请的key进行相关的服务调用2.1 服务API2.2 初始化地图组件2.3 加载影像底图和影像注记2.4 地理编码查询引言 自己没有对应的地图服务器和地理查询服务器的时候,使用天地图来实现业务的快速支撑。 基于天地图使用Leaf…...

微软蓝屏事件:全球网络安全与系统稳定性的警示

文章目录 每日一句正能量前言探讨软件更新流程中的风险管理和质量控制机制软件更新的风险风险管理策略质量控制措施测试流程缺陷识别实施质量控制结论 提供预防类似大规模故障的最佳方案或应急响应对策设计冗余系统实施灾难恢复计划建立高可用架构应急响应对策利用自动化工具和…...

【51单片机仿真】基于51单片机设计的整数/小数计算器系统仿真源码文档——文末资料下载

演示: 摘要 本项目设计并实现了一种基于51单片机的多功能计算器系统。系统采用STC89C52单片机作为主控制器,结合LCD显示模块、矩阵键盘等外设,实现了基本的整数、小数算术运算功能,包括加、减、乘、除、取模等。本文详细介绍了系统的硬件设计和软件实现,并对系统的功能和…...

ubuntu安装dockergitlab

#更换阿里云进行配置GPG 密钥 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [archarm64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" #如果出现错…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

测试markdown--肇兴

day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​:下载安装 ​​De…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...