计算机网络面试真题总结(一)

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

在这里插入图片描述

HTTP 哪些常用的状态码及使用场景?

状态码分类

  • 1xx:表示目前是协议的中间状态,还需要后续请求

  • 2xx:表示请求成功

  • 3xx:表示重定向状态,需要重新请求

  • 4xx:表示请求报文错误

  • 5xx:服务器端错误

常用状态码

  • 101:切换请求协议,从 HTTP 切换到 WebSocket
  • 200:请求成功,有响应体
  • 301:永久重定向:会缓存
  • 302:临时重定向:不会缓存
  • 304:协商缓存命中
  • 403:服务器禁止访问
  • 404:资源未找到
  • 400:请求错误
  • 500:服务器端错误
  • 503:服务器繁忙

HTTP状态码301和302的区别

301重定向(301 Move Permanently),指页面永久性转移,表示为资源或页面永久性地转移到了另一个位置。

301是HTTP协议中的一种状态码,当用户或搜索引擎向服务器发出浏览请求时

  • 服务器返回的HTTP数据流中头信息(header)中包含状态码 301 ,表示该资源已经永久改变了位置。

301与302的区别

  • 301重定向是页面永久性转移

    • 搜索引擎在抓取新内容的同时也将旧的网址替换成重定向之后的网址
  • 302重定向是页面暂时性转移

    • 搜索引擎会抓取新的内容而保存旧的网址并认为新的网址只是暂时的。

说一说三次握手

第一次握手:

  • 客户端给服务器发送一个 SYN 报文。

第二次握手:

  • 服务器收到 SYN 报文之后,会应答一个 SYN+ACK 报文。

第三次握手:

  • 客户端收到 SYN+ACK 报文之后,会回应一个 ACK 报文。

服务器收到 ACK 报文之后,三次握手建立完成。

作用是为了确认双方的接收与发送能力是否正常。

三次握手的作用

  • 确认双方的接受能力、发送能力是否正常。

  • 指定自己的初始化序列号,为后面的可靠传送做准备。

什么是半连接队列

  • 服务器第一次收到客户端的 SYN 之后,就会处于 SYN_RCVD 状态,此时双方还没有完全建立其连接
  • 服务器会把此种状态下请求连接放在一个队列里,我们把这种队列称之为半连接队列
    • 当然还有一个全连接队列,就是已经完成三次握手,建立起连接的就会放在全连接队列中。
      • 如果队列满了就有可能会出现丢包现象。

三次握手过程中可以携带数据吗

第三次握手的时候,是可以携带数据的。

  • 也就是说,第一次、第二次握手不可以携带数据,而第三次握手是可以携带数据的。

假如第一次握手可以携带数据的话,如果有人要恶意攻击服务器

  • 那他每次都在第一次握手中的 SYN 报文中放入大量的数据

  • 因为攻击者根本就不理服务器的接收、发送能力是否正常,然后疯狂着重复发 SYN 报文的话

    • 这会让服务器花费很多时间、内存空间来接收这些报文。
    • 也就是说,第一次握手可以放数据的话,其中一个简单的原因就是会让服务器更加容易受到攻击了。

而对于第三次的话,此时客户端已经处于 established 状态

  • 也就是说,对于客户端来说,他已经建立起连接了,并且也已经知道服务器的接收、发送能力是正常的了
    • 所以能携带数据页没啥毛病。

说一说四次挥手

第一次挥手:

  • 客户端发送一个 FIN 报文,报文中会指定一个序列号。
    • 此时客户端处于FIN_WAIT1状态。
      • (相当于客户端告诉服务端,我想断开链接了)

第二次挥手:

  • 服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值
    • 表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。
      • (相当于,服务端告诉客户端,好的,我收到你的断开请求了)

第三次挥手:

  • 如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。
    • 此时服务端处于 LAST_ACK 的状态。

第四次挥手:

  • 客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值
    • 此时客户端处于 TIME_WAIT 状态。
    • 需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。

为什么客户端发送 ACK 之后不直接关闭,而是要等一阵子才关闭。

  • 要确保服务器是否已经收到了我们的 ACK 报文,如果没有收到的话,服务器会重新发 FIN 报文给客户端
  • 客户端再次收到 FIN 报文之后,就知道之前的 ACK 报文丢失了,然后再次发送 ACK 报文。

至于 TIME_WAIT 持续的时间至少是一个报文的来回时间。

  • 一般会设置一个计时,如果过了这个计时没有再次收到 FIN 报文
    • 则代表对方成功就是 ACK 报文,此时处于 CLOSED 状态。

为什么 TIME-WAIT 状态必须等待 2MSL 的时间呢?

为了保证 A 发送的最后一个 ACK 报文段能够到达 B。

  • A 发送的 ACK 报文段有可能丢失,因而使处在 LAST-ACK 状态的 B 收不到对方已发送的 FIN + ACK 报文段的确认。
    • 这时 B 会超时重传这个 FIN+ACK 报文段
      • 而 A 就能在 2MSL 时间内(超时 + 1MSL 传输)收到这个重传的 FIN+ACK 报文段。
      • 接着 A 重传一次 ACK 报文确认,并且重新启动 2MSL 计时器。

最后,A 和 B 都正常进入到 CLOSED 状态。如果 A 在 TIME-WAIT 状态不等待一段时间

  • 而是在发送完 ACK 报文段后立即释放连接,那么就无法收到 B 重传的 FIN + ACK 报文段
  • 因而也不会再发送一次确认报文段,这样,B 就无法按照正常步骤进入 CLOSED 状态。

防止已失效的连接请求报文段出现在本连接中。

  • A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。
    • 这样就可以使下一个连接中不会出现这种旧的连接请求报文段。

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

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

相关文章

Java开发笔记-小程序微信支付接入

步骤: 1.注册微信商户,开通小程序支付业务,获得必要接入参数。(Certificate、PrivateKey、merchantId、SerialNumbe、apiV3Key) 2.微信商户号关联小程序(需目标小程序审核) 3.java使用接入参数发起下单,获取下单参数。 4.小程…

设计模式反模式:UML图示常见误用案例分析

第一章 引言 1.1 设计模式与反模式概述 在软件开发领域,设计模式与反模式是两种截然不同的概念,它们在软件设计过程中起着至关重要的作用。设计模式是经过验证的最佳实践,用于解决在特定上下文中经常出现的问题,从而提高软件的可…

使用分布式锁解决IM聊天数据重复插入的问题

导航 业务背景问题分析与定位探索可行的解决方案 数据库层面处理——唯一索引应用程序层面处理——分布式锁 分布式锁概述 分布式锁需要具备哪些特性?分布式锁有哪些实现方式? 基于数据库的实现方式基于Redisson实现方式 Redission介绍 概述可重入锁 基…

精彩!双疾病搭档孟德尔随机化,中国学者得出阴性结果照样拿下一区top!

孟德尔随机化分析领域,选题新才是王道!在之前孟德尔随机化的文章中,大多是分析暴露与疾病的关系,今天分享的这篇文章与之前不同,中国学者使用双向孟德尔随机化分析两种疾病之间的关联,还是阴性结果&#xf…

MinerU pdf文档解析markdown格式、内容提取

参考: https://github.com/opendatalab/MinerU/blob/master/README_zh-CN.md demo在线网址: https://opendatalab.com/OpenSourceTools/Extractor/PDF/detail

C语言高手参考手册:网络编程高级话题与技术细节

在上一篇文章中,我们介绍了基本的网络编程概念和操作。本文将深入探讨网络编程的一些高级话题和技术细节,包括错误处理、非阻塞I/O、多路复用(select/poll/epoll)、套接字选项以及安全编程等。 1. 错误处理 1.1 错误码 在处理网…

[数据集][目标检测]红外场景下车辆和行人检测数据集VOC+YOLO格式19069张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):19069 标注数量(xml文件个数):19069 标注数量(txt文件个数):19069 标…

基于B站的热门视频数据分析与情感分析【关联性、主题、情感分析】

目录 2 研究内容 2.1 主要研究内容 2.2 拟解决的关键问题 2.2.1热门视频特征的识别和提取 2.2.2情感分析与用户反馈 2.3技术路线 2.3.1数据收集 2.3.2数据预处理 2.3.3数据挖掘 2.3.4 数据可视化 2.4可行性分析 2.4.1技术可行性 2.4.2数据可行性 2.4.3经济可行性 2.5数据库设计…

[000-01-011].第2节:持久层方案的对比

我的后端学习大纲 MyBatis学习大纲 1.持久层解决方案: 1.1.面试1:请说一说持久层解决方案有哪些??? 1.jdbc JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。Java程序员使用JDB…

关于springboot的异常处理以及源码分析(一)

一、什么是异常处理 1、文档定义 首先我们先来看springboot官方对于异常处理的定义。springboot异常处理 在文档的描述中,我们首先可以看到的一个介绍如下: By default, Spring Boot provides an /error mapping that handles all errors in a sensib…

计算机网络-2-tcpip协议

1.说说 TCP/IP 四层模型? TCP/IP(Transmission Control Protocol/Internet Protocol)模型是一种用于描述互联网通信的协议层次结构。它分为四个主要层次,每个层次都定义了不同的协议来实现特定的功能。下面是TCP/IP模型各层的常用…

Android系统安全 — 1-OpenSSL支持的常用加解密算法介绍

常用加解密算法介绍 1. 哈希算法 常见的函数包含MD系列、SHA-1、SHA-2家族、SHA-3家族、SM3等。 1.1 MD5(单向散列算法) 全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。MD5算法的使用…

0基础学习Python路径(21)Python NameSpaceScope

命名空间定义了在某个作用域内变量名和绑定值之间的对应关系,命名空间是键值对的集合,变量名与值是一一对应关系。作用域定义了命名空间中的变量能够在多大范围内起作用。 命名空间在 Python 解释器中是以字典的形式存在的,是以一种可以看得…

【快速入门 LVGL】-- 1、STM32 工程移植 LVGL

目录 一、LVGL 简述 二、复制一个STM32工程 三、下载 LVGL 四、裁剪 源文件 五、工程添加 LVGL 文件 六、注册 显示 七、注册 触摸屏 八、LVGL 心跳、任务刷新 九、开跑 LVGL 十、控件的事件添加、响应处理 十 一、几个好玩小事情 十 二、显示中文 ~~ 约定 ~~ 在…

从【人工智能】到【计算机视觉】,【深度学习】引领的未来科技创新与变革

前几天偶然发现了一个超棒的人工智能学习网站,内容通俗易懂,讲解风趣幽默,简直让人欲罢不能。忍不住分享给大家,点击这里立刻跳转,开启你的AI学习之旅吧! 前言 – 人工智能教程https://www.captainbed.cn/l…

linux文件——用户缓冲区——概念深度探索、IO模拟实现

前言:本篇文章主要讲解文件缓冲区。 讲解的方式是通过抛出问题, 然后通过分析问题, 将缓冲区的概念与原理一步一步地讲解。同时, 本节内容在最后一部分还会带友友们模拟实现一下c语言的printf, fprintf接口&#xff0c…

跨境电商补单秘籍:Lazada、Shopeee、eBay、Wish等平台实战技巧

在跨境电商领域,Lazada、Shopee、eBay、Wish及速卖通等平台为商家提供了广阔的市场空间。为了有效扩大产品的曝光率和提升转化率,商家需充分利用平台活动及营销工具。平台活动不仅是获取流量的关键渠道,还能显著提升品牌知名度。此外&#xf…

Python画笔案例-006 绘制正多边形

1、绘制正多边形 通过 python 的turtle 库绘制一个正多边形的图案,如下图: 2、实现代码 绘制一个正多边形,关键两个因素,一个是边长,决定了图形的大小;另一个就是图形里每个角的角度,绘制多边形…

SSM健康生活博客小程序—计算机毕业设计源码23497

摘 要 本文设计了一种基于SSM框架的健康生活博客小程序,为人们提供了运动视频教学、博客信息分享,用户能够方便快捷地查看资讯、搜索健康方面的相关信息、还能发布个人生活博客等。健康生活博客小程序采取面对对象的开发模式进行软件的开发和硬体的架设&…

Python | Leetcode Python题解之第365题水壶问题

题目&#xff1a; 题解&#xff1a; class Solution:def canMeasureWater(self, x: int, y: int, z: int) -> bool:if x y < z:return Falseif x 0 or y 0:return z 0 or x y zreturn z % math.gcd(x, y) 0