计算机网络——HTTP篇

基础篇

IOS七层网络模型

TCP/IP四层模型?

应⽤层:位于传输层之上,主要提供两个终端设备上的应⽤程序之间的通信,它定义了信息交换的格式,消息会交给下⼀层传输层来传输。

传输层的主要任务就是负责向两台设备进程之间的通信提供通⽤的数据传输服务,包括TCP和UDP两种协议。

⽹络层负责网络包的分组转发和路由选择,主要协议有IP协议和ARP地址解析协议等

⽹络接⼝层看作是数据链路层和物理层的合体,数据链路层的作⽤是将⽹络层交下来的 IP 数据报组装成帧,MAC 寻址、差错检测,物理层的作⽤是实现相邻计算机节点之间⽐特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。

各层之间的协议有哪些?

计算机网络为什么要分层?

浏览器输入URL的过程?

  • 在浏览器中输入指定网页的 URL。
  • 浏览器通过 DNS 协议,获取域名对应的 IP 地址。
  • 浏览器根据 IP 地址和端口号,向目标服务器发起一个 TCP 连接请求。
  • 浏览器在 TCP 连接上,向服务器发送一个 HTTP 请求报文,请求获取网页的内容。
  • 服务器收到 HTTP 请求报文后,处理请求,并返回 HTTP 响应报文给浏览器。
  • 浏览器收到 HTTP 响应报文后,解析响应体中的 HTML 代码,渲染网页的结构和样式
  • 浏览器在不需要和服务器通信时,可以主动关闭 TCP 连接,或者等待服务器的关闭请求

HTTP篇

HTTP常见面试题

HTTP是什么?

HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。

HTTP 常见的状态码有哪些?

HTTP 常见字段有哪些?

Host 字段:客户端发送请求时,用来指定服务器的域名

Content-Length 字段:服务器在返回数据时,会有 <font style="color:rgb(71, 101, 130);">Content-Length</font> 字段,表明本次回应的数据长度。

Connection 字段:使用<font style="color:rgb(71, 101, 130);">Connection:keep alive</font> 来使用「HTTP 长连接」机制,以便其他请求复用。

GET 和 POST 有什么区别?

GET 是从服务器获取指定的资源,POST 是根据请求报文body对指定的资源做出处理


****

GET 和 POST 方法都是安全和幂等的吗?

HTTP 缓存有哪些实现方式?

HTTP 缓存就是把一些重复的请求以及它们的响应结果缓存起来,有两种实现方式,分别是强制缓存和协商缓存

强缓存指的是只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存的主动性在于浏览器这边。

当我们在浏览器使用开发者工具的时候,你可能会看到过某些请求的响应码是 <font style="color:rgb(71, 101, 130);">304</font>,这个是告诉浏览器可以使用本地缓存的资源,通常这种通过服务端告知客户端是否可以使用缓存的方式被称为协商缓存。

HTTP/1.1 的优点有哪些?

HTTP/1.1 的缺点有哪些?

HTTP 协议里有优缺点一体的双刃剑,分别是「无状态、明文传输」,同时还有一大缺点「不安全」。

1、无状态:

无状态的好处,因为服务器不会去记忆 HTTP 的状态,这能够减轻服务器的负担。

无状态的坏处,既然服务器没有记忆能力,它在完成有关联性的操作时会非常麻烦。

2、明文传输:

传输过程中的信息,是可方便阅读的

但是传输的过程中,信息可能被窃取。

3、不安全

存在:窃听风险、篡改风险、冒充风险

HTTP/1.1 的性能如何?

1、长连接:减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。

2、 管道网络传输:即可在同一个 TCP 连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。

但是服务器必须按照接收请求的顺序发送对这些管道化请求的响应

如果服务端在处理 A 请求时耗时比较长,那么后续的请求的处理都会被阻塞住,这称为「队头堵塞」。

所以,HTTP/1.1 管道解决了请求的队头阻塞,但是没有解决响应的队头阻塞

HTTP 与 HTTPS 有哪些区别?

HTTPS 解决了 HTTP 的哪些问题?

窃听风险、篡改风险、冒充风险

如何解决:

  • 混合加密的方式实现信息的机密性,解决了窃听的风险。即主要是通信建立前使用非对称加密,通信建立过程中采用对称加密,非对称加密是采用公钥加密,私钥解密。这个目的是为了保证内容传输的安全,因为被公钥加密的内容,其他人是无法解密的,只有持有私钥的人,才能解密出实际的内容;

  • 摘要算法(哈希函数)和数字签名方式来防止篡改风险,单独哈希算法可以保证内容不会被篡改,但是并不能保证「内容 + 哈希值」不会被中间人替换,因此对内容的哈希值进行私钥加密,公钥解密,这个目的是为了保证消息不会被冒充,因为私钥是不可泄露的,如果公钥能正常解密出私钥加密的内容,就能证明这个消息是来源于持有私钥身份的人发送的。

  • 将服务器公钥放入到数字证书中,解决了冒充的风险。即解决了公钥被伪造的风险。


HTTPS 是如何建立连接的?其间交互了什么?

HTTPS 一定安全可靠吗?
是的,HTTPS 协议本身到目前为止还是没有任何漏洞的,即使你成功进行中间人攻击,本质上是利用了客户端的漏洞(用户点击继续访问或者被恶意导入伪造的根证书),并不是 HTTPS 不够安全

HTTP/1.1、HTTP/2、HTTP/3 演变

HTTP/1.1 相比 HTTP/1.0 提高了什么性能?
使用长连接的方式改善了 HTTP/1.0 短连接造成的性能开销

支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。

HTTP/2 做了什么优化?
HTTP/2 协议是基于 HTTPS 的,所以 HTTP/2 的安全性也是有保障的。

那 HTTP/2 相比 HTTP/1.1 性能上的改进:

  • 头部压缩

  • 二进制格式
  • 将 HTTP/1 的文本格式改成二进制格式传输数据,极大提高了 HTTP 传输效率,
  • 并发传输
  • HTTP/2 实现了 Stream 并发,多个 Stream 只需复用 1 个 TCP 连接,就可以实现并发传输
  • 服务器主动推送资源
  • 支持服务器用偶数号的stream推送到客服端

HTTP/2有什么缺陷?

HTTP/3 做了哪些优化?

特点:

  • 无队头阻塞
  • 更快的连接建立
  • 连接迁移

QUIC建立连接握手是需要1个RTT,QUIC是内部包含TLS的,所以,仅需要一个RTT就可以完成建立连接与密匙协商。

HTTP/1.1 如何优化?

如何避免发送 HTTP 请求?

使用缓存技术,客户端在重新发送请求时,在请求的头部带有一个唯一标识,然后服务器与本地的唯一标识对比,如果不相同,说明客户端的缓存过期,服务器返回的时候带着最新的资源,如果相同,说明缓存中的数据可以继续使用,那么服务器返回304响应,告诉客户端使用本地缓存。

如何减少 HTTP 请求次数?

  • 减少重定向请求次数

将原本由客户端处理的重定向请求,交给代理服务器处理,这样可以减少重定向请求的次数;

  • 合并请求

将多个小资源合并成一个大资源再传输,能够减少 HTTP 请求次数以及 头部的重复传输

  • 延迟发送请求
  • 按需访问资源,只访问当前用户看得到/用得到的资源,当客户往下滑动,再访问接下来的资源

如何减少 HTTP 响应的数据大小?

通过压缩响应资源,降低传输资源的大小,从而提高传输效率,所以应当选择更优秀的压缩算法。

压缩分为有损压缩和无损压缩。

无损压缩是指资源经过压缩后,信息不被破坏,还能完全恢复到压缩前的原样,适合用在文本文件、程序

可执行文件、程序源代码。

与无损压缩相对的就是有损压缩,经过此方法压缩,解压的数据会与原始数据不同但是非常接近。

RSA算法和ECOHE算法的四次握手

HTTPS 如何优化?

HTTP和RPC

文章:https://www.xiaolincoding.com/network/2_http/http_rpc.html#%E4%BC%A0%E8%BE%93%E7%9A%84%E5%86%85%E5%AE%B9

WebSocket

看起来服务器主动发消息给客户端的场景,是怎么做到的?

WebSocket连接过程:

浏览器在 TCP 三次握手建立连接之后,都统一使用 HTTP 协议先进行一次通信,如果此时是普通的 HTTP 请求,那后续双方就还是老样子继续用普通 HTTP 协议进行交互。如果这时候是想建立 WebSocket 连接,就会在 HTTP 请求里带上一些特殊的请求header 头进行升级操作,升级成功之后就可以使用WebSocket连接进行通信了。

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

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

相关文章

基于SpringBoot的Java教学支持系统开发指南

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理教学辅助平台的相关信息成为必然。开发合适…

MySQL:表的增删改查(进阶)

表的增删改查&#xff08;进阶&#xff09;十分重要&#xff0c;也较有难度&#xff0c;需多花时间掌握。 一、NULL约束&#xff1a; 在加null约束之前&#xff0c;id可以插入null&#xff0c;在加上null约束之后&#xff0c;id不再可以插入null。 二、unique约束&#xff1a;…

Latex中给公式加边框

1、这里使用的不是 amsmath 的 \boxed 命令, 而是 empheq 的 empheq 环境以及 xcolor 的 \fcolorbox 命令, 下面是代码, 可以分别阅读这两个手册来获取更多的信息 \documentclass{article} \usepackage{xcolor} \usepackage{empheq} \usepackage{amsmath} \begin{document}\be…

VMware Workstation安装Centos系统

准备虚拟机和镜像文件 1. 安装虚拟机 安装虚拟机VMware Workstation&#xff0c;可以去官网下载自己需要的版本&#xff0c;如果已经安装可继续看后续步骤。安装链接&#xff1a;https://vmware.710down.com/?bd_vid14012951182566760856 2.下载镜像文件 阿里云镜像地址&a…

简单又便宜的实现电脑远程开机唤醒方法

现有的远程开机方案 1&#xff09;使用向日葵开机棒 缺点是比较贵一点&#xff0c;开机棒要一百多&#xff0c;而且查了评论发现挺多差评说不稳定&#xff0c;会有断联和无法唤醒的情况&#xff0c;而且设置也麻烦&#xff0c;还需要网卡支持WOL 2&#xff09;使用远程开机卡 …

WordCloudStudio:AI生成模版为您的文字云创意赋能 !

在信息泛滥的时代&#xff0c;如何有效地将文字内容变成生动的视觉元素&#xff1f;WordCloudStudio为您提供了答案。无论您是市场营销专家、教育工作者、数据分析师&#xff0c;还是创意设计师&#xff0c;WordCloudStudio都能帮助您轻松创建引人注目的文字云。更重要的是&…

低压线路保护器在生产型企业配电系统中的应用

摘要 随着现代电力系统的发展&#xff0c;配电系统的可靠性和安全性要求日益提高。低压线路保护器在其中扮演着关键角色。本文将探讨低压线路保护器的工作原理及其在现代配电系统中的作用&#xff0c;重点介绍ALP系列低压线路保护器的功能与应用。 引言 低压线路保护器用于保…

解决:ros进行gazebo仿真,rviz没有显示传感器数据

目录 前言解决总结 前言 看了很多urdf、xacro文件的编写&#xff0c;每次看了都觉得自己会了&#xff0c;然后自己写一点&#xff0c;就是废物了。 在我这里的案例是&#xff0c;我在一个大方块上面&#xff0c;添加了两个VLP-16的雷达&#xff0c;然后我想获取雷达扫描的数据…

Android——多线程、线程通信、handler机制

Android——多线程、线程通信、handler机制 模拟网络请求&#xff0c;会阻塞主线程 private String getStringForNet() {StringBuilder stringBuilder new StringBuilder();for (int i 0; i < 100; i) {stringBuilder.append("字符串" i);}try {Thread.sleep(…

Linux(ubuntu) 部署xinference

注:在此前提我已经准备好了环境 - 文章中大部分命令我都会有说明 进阶命令就需要友友们在研究了 miniconda 安装 gpu 显卡驱动安装 xinference使用命令什么的我就不放了官方文档中很简单易懂 xinference 官方文档地址 注&#xff1a;此文章不叙述docker版安装(docker安装很简单…

界面控件DevExpress WPF中文教程:Data Grid——卡片视图设置

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

Flutter PC端UI组件库

一、参考Element-ui的设计和交互&#xff0c;构建基于dart的Flutter UI组件库 https://javonhuang.github.io/sky-ui-page/index.html

Java Development Kit (JDK) 详解

什么是 JDK&#xff1f; JDK 是 Java Development Kit 的缩写&#xff0c;是一组用于开发 Java 应用程序的软件开发工具和库的集合。JDK 包含了 Java 运行时环境&#xff08;JRE&#xff09;和 Java 虚拟机&#xff08;JVM&#xff09;&#xff0c;以及一系列开发工具和库。 …

基于卷积神经网络的农作物病虫害识别系统(pytorch框架,python源码)

更多图像分类、图像识别、目标检测等项目可从主页查看 功能演示&#xff1a; 基于卷积神经网络的农作物病虫害检测&#xff08;pytorch框架&#xff09;_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于卷积神经网络的农作物病虫害识别系统是在pytorch框架下实现的…

HTML第二次作业

题目&#xff1a; 制作带有下拉悬停菜单的导航栏 根据上图仿照制作一个带下拉悬停菜单的导航栏 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>单元格的宽和高</title><style>*{margin: 0;padding: 0;}#men…

LabVIEW编程过程中为什么会出现bug?

在LabVIEW编程过程中&#xff0c;Bug的产生往往源自多方面原因。以下从具体的案例角度分析一些常见的Bug成因和调试方法&#xff0c;以便更好地理解和预防这些问题。 ​ 1. 数据流错误 案例&#xff1a;在一个LabVIEW程序中&#xff0c;多个计算节点依赖相同的输入数据&#…

JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习

先简单记录下简单使用跟测试&#xff0c;后续再补充具体&#xff0c;最近有用到&#xff0c;简单来说就是后端(服务端)编写个发射器&#xff0c;实现一次请求&#xff0c;一直向前端客户端发射数据&#xff0c;直到发射器执行完毕&#xff0c;模拟ai一句一句回复的效果 Respon…

丹摩征文活动 | 带你玩转开源模型,一起来部署SD3+ComfyUI文生图模型

文章目录 1 背景1.1 SD3背景介绍1.2 ComfyUI背景介绍1.3 体验感 2 部署流程3 登录实例4 部署ComfyUI5 部署SD36 生成图像 1 背景 1.1 SD3背景介绍 Stable Diffusion 3是Stability AI推出的一款先进的文本到图像的开源模型&#xff0c;SD3以其图像质量、文本内容生成、复杂提示…

防火墙|WAF|漏洞|网络安全

防火墙|WAF|漏洞|网络安全 防火墙 根据内容分析数据包&#xff1a; 1、源IP和目的IP地址 2、有效负载中的内容。 3、数据包协议&#xff08;例如&#xff0c;连接是否使用 TCP/IP 协议&#xff09;。 4、应用协议&#xff08;HTTP、Telnet、FTP、DNS、SSH 等&#xff09;。 5…

WorkFlow源码剖析——Communicator之TCPServer(中)

WorkFlow源码剖析——Communicator之TCPServer&#xff08;中&#xff09; 前言 系列链接如下&#xff1a; WorkFlow源码剖析——GO-Task 源码分析 WorkFlow源码剖析——Communicator之TCPServer&#xff08;上&#xff09; WorkFlow源码剖析——Communicator之TCPServer&…