面试题10道02 2021.11.26

2023-10-30

1.什么是HTTP报文?

Http报文就是客户端和服务端之间传送的数据块

2.HTTP报文由哪三部分组成?

HTTP报文由起始行,头部,主体组成,其中起始行是对该报文进行的描述,头部是对报文的属性进行的描述,主体则是数据的内容。

3.HTTP报文分为哪两类?

HTTP报文分为请求报文和响应报文,当客户端给服务器发送请求时,发送的报文就是请求报文,当服务器端給客户端返回请求时,返回的请求就是响应报文。

4.HTTP常见的请求方法有哪些?

常见的请求方式有 get请求:向服务器端发送报文,post请求:向服务器端发送待处理的数据请求,HEAD请求:获取服务器端制定的报文头部信息,PUT请求:向服务器端发送请求并且更改制定的信息,DELETE请求:删除指定的报文数据

5.HTTP的状态码分为哪几类?

100-101(2个)代表有提示信息,200-206:代表请求成功 ,300-305:重定向或者转发 400-415:客户端方出现了错误 500-505 :服务端出现了错误

6.HTTP常见的状态码有哪些?

200请求成功

301和302都代表重定向,但是301代表的是永久性的重定向,而302代表的暂时的重定向,二人虽说都是将地址变成重定向的地址,但是301重定向之后会消除原来的地址,原来的资源会不能访问,浏览器会自动转向新的地址。而302表示的是暂时的重定向,原来的地址资源还在,只是浏览器临时跳转到了新的地址。

401:未授权,一般是请求需要得到服务器授权

403:服务器拒绝了你的请求

404:请求的资源不存在

405:方法禁用,比如该请求只让用post访问,无法用get访问

406:请求和响应的格式不匹配,比如请求报文是application/json形式 而响应报文确是 text/html格式,就回导致不匹配

407:代理服务器没有授权,服务器使用了代理服务器,但是代理服务器没有授权

500:服务器异常

503:服务器可能停机维护或者超载,暂时无法接受请求

7.说一下转发和重定向的区别

首先重定向和转发,是两个端的操作,重定向指的是你访问一个地址,浏览器通过服务器端给的新的地址,加载那个地址的页面,是客户端/浏览器进行的操作。

而转发是服务器端的操作,它是指,当你的浏览器请求到某个页面,服务器端会在内部把这个页面换成另外一个请求的页面,体现的是服务器端的操作。

8.简述下TCP三次握手的过程,并解释采用3次握手建立连接的原因?

QQ截图20211126154413

客户端发送连接请求: syn=1 seq=x

服务端发送响应请求 syn=1 ack=x+1 seq =y 表示服务端准备好了

客户端发送确认的请求 ack=y+1 seq=x+1 客户端确认是刚才自己发的消息,且消息有效

那为什么需要三次握手呢?其实就像客户端的第二次握手我描述的那样是为了判断消息有效。

试想这样一个场景:客户端在很久很久之前发送了一个请求,但是由于网络因素或者是其他因素,他没有及时被服务端收到,也没有消失,而是暂时发送不到服务端了,而此时客户端没有收到服务端的回信,又发了一次,这次网速快,三次握手成功了。

更巧的是,成功之后,滞留的之前的客户端发的消息发出去了,然后被服务端收到了,服务端又发了一个确认消息,但客户端这次没有确认。

服务端就会立马知道----啊啊! 这是滞留的消息。

这就是三次握手的作用。

QQ截图20211126160056

答:四次挥手的过程是:

客户端发送一个FIN报文告诉服务器,我要停止对你发送数据了

服务器端发送收到

服务器端发送一个FIN报文,告诉客户端,我也要停止对你发送数据了。

客户端回答收到

为什么要四次挥手呢?因为客户端和服务端的连接是双向的,客户端向服务器端发送FIN只是段龛客户端到服务器的连接,服务器还可以向客户端发送数据,此时只是单向断开,只有服务器再次发送FIN报文的时候才是双向断开。

9.什么是https?

https是基于http/ssl/tls通过密文传输信息,保证了用户信息的安全。

10.什么是2MSL?

先说一下什么是MSL,MSL指的是最大的生存时间。指定是包本身有一个最大的生存时间,超过这个时间,包就会消失。

2MSL指的就是2倍的最大生存时间,当服务器发送完第三次挥手请求后需要的得到客户端的回应的时间是2MSL超过这个时间就需要客户端重新发送FIN请求

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试题10道02 2021.11.26 的相关文章

  • Gradle 构建错误:无法从 https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数据

    我在 Android studio 中遇到 gradle 构建错误 如下所示 Error A problem occurred configuring project MyApp Could not resolve all dependen
  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url

随机推荐

  • Python学习之:如何根据经纬度来实现地图的可视化(将这些点在地图上标注出来)

    文章目录 最终效果展示 实操步骤 第一步 打开高德地图的控制台 gt 数据可视化 第二步 创建可视化项目 第三步 上传CSV数据 注意格式要求 一定要包含经纬度信息 第四步 创建可视化实例 最终效果展示 这些红色的点 就是我们给出的经纬度的
  • javascript实现回到顶部按钮特效

    有时由于页面内容过多 每次回到顶部比较麻烦 所以记录一下JavaScript实现回到顶部按钮特效的代码 便于以后备用 css代码 实现回到顶部按钮特效 box position fixed right 10px bottom 10px he
  • Hadoop伪分布模式配置

    Hadoop共有三种部署方式 本地模式 伪分布模式及集群模式 本次安装配置以伪分布模式为主 即在一台服务器上运行Hadoop 如果是分布式模式 则首先要配置Master主节点 其次配置Slave从节点 以下说明如无特殊说明 默认使用root
  • QT多窗口

    常用的窗体基类是 QWidget QDialog 和 QMainWindow 在创建 GUI 应用程序时选择窗体基类就是从这 3 个类中选择 QWidget 直接继承于 QObject 是 QDialog 和 QMainWindow 的父类
  • 在学习Python时遇到的一些项目bug

    启动线程 开启任务时 1 出现错误TypeError init got an unexpected keyword argument arg ok python没有能解析出来这个参数 好吧少写了个s 加上就没啥问题了 2 出现错误TypeE
  • 丑数打表 & 计算 (自用)

    丑数定义 只包含因子2 3 5的正整数被称作丑数 define min a b a lt b a b define min4 a b c d min min a b min c d int choushu 5850 int main int
  • 代理模型:最小二乘支持向量回归(LSSVR)--- MATLAB程序

    写在开头 代理模型是工程问题中常用的一个优化方法 当实际问题计算量很大 不容易求解时 可以使用计算量较小 求解迅速的简化模型来替代原模型 加速优化过程 代理模型采用一个数据驱动的 自下而上的办法来建立 首先 通过抽样得到有限个样本点 输入
  • java烟花代码_一个美丽的java烟花程序

    import java awt import java applet import java awt event import javax swing public class ChatApplet extends Applet imple
  • Shell 从入门到精通(二)

    变量的赋值方式 定义或引用变量时注意事项 双引号是弱引用 单引号是强引用 即单引号是所见即所得 双引号是进行了赋值操作 两个反引号等价于 反引号的中的shell命令会被先执行 变量数值运算 1 整数运算 expr 五颗星 2 整数运算 四颗
  • Spring源码解析4.createBean()方法解析

    createBeanInstance protected BeanWrapper createBeanInstance String beanName RootBeanDefinition mbd Nullable Object args
  • ​LeetCode刷题实战336:回文对

    算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家做一道算法题 题目就从LeetCode上面选 今天和大家聊的问题叫做 回文对 我们先来看题面 htt
  • 山石岩读丨前沿领域探析——汽车CAN总线协议详解及攻击面分析

    1 CAN总线的基本概念以及由来 CAN Controller Area Network 总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线 它起初用于实现汽车内ECU之间可靠的通信 后因其简单实用可靠等特点 而广泛应用于工
  • 解读HashMap中put方法的源码

    解析hashMap的put方法是如何存储一个键值 一 put方法 代码1 1 V put K key V value 方法 public V put K key V value return putVal hash key key valu
  • Java 面向对象之多态

    目录 1 接口 1 1 接口中成员的访问特点 1 2 默认方法 1 3 静态方法 1 4 私有方法 1 5 小结 2 多态 2 1 多态中成员的访问特点 2 2 多态的好处和弊端 2 3 多态中的转型 3 内部类 3 1 成员内部类 3 2
  • SpringBoot框架总结

    SpringBoot框架总结 一 SpringBoot框架的概念 1 传统框架的弊端 例如传统的SSM框架整合了MyBatis Spring SpringMVC框架 但其需要繁琐且重复的配置使程序员很是痛苦 2 SpringBoot框架 S
  • ros中编译release版本

    catkin build cmake args DCMAKE BUILD TYPE Release
  • Java做一个进制转换小工具

    通过swing和awt实现的一个简单的进制转换工具 可以进行数之间的进制转换 只有两个类 所有代码都放在https github com 13337356453 BHD Converter 可自行下载 因为某些特殊的原因 没有把窗口弄得更漂
  • Selenium中的断言(python篇)

    Selenium常用的断言包括 页面属性断言 断言标题 url或页面源码中是否包含或不包含特定字符 元素存在断言 断言指定元素存在 图片及链接断言 断言图片正常显示 链接可以正常打开 页面属性断言 这是最常用的断言方式 可以用来断言页面是否
  • 李开复创业--创新工场未来的前景是怎样?

    创新工场现在是房子不小 人不多 这个星期我们招聘了第七个人 节目还没开始 李开复对本报道如是说 十一 长假 他赶赴美国与投资商谈融资 同时不忘到两所知名高校演讲招揽人才 现在 刚刚满月的 创新工场 未来的前景是怎样 招聘人才一个月 招揽人才
  • 面试题10道02 2021.11.26

    1 什么是HTTP报文 Http报文就是客户端和服务端之间传送的数据块 2 HTTP报文由哪三部分组成 HTTP报文由起始行 头部 主体组成 其中起始行是对该报文进行的描述 头部是对报文的属性进行的描述 主体则是数据的内容 3 HTTP报文