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

HTTP【总结】

1. 当用户在浏览器输入网址回车之后,网络协议都做了哪些工作?

首先解析出URL中的域名,根据域名获取对应的ip地址,从浏览器缓存中查看,如果没有则从本机域名解析文件hosts中查看,还没有则从DNS的层层解析。
获取IP地址后,浏览器发起与服务器的三次握手。
握手建立之后,开始组装http请求报文,发送报文。
服务器收到请求报文之后开始请求报文解析,生成响应数据,发送响应数据。
浏览器收到响应之后,开始渲染页面。

2. TCP协议

面向连接的、可靠的、基于字节流的传输通信协议。
特点:基于连接的:数据传输之前需要建立连接;全双工:双向传输;字节流:不限制数据大小,打包成报文段,保证有序接收,重复报文自动丢弃;流量缓冲:解决双方处理能力的不匹配;可靠的传输服务:保证可达,丢包时通过重发机制实现可靠性;拥赛控制:防止网络出现恶性阻塞。
TCP连接:四元组(源地址、源端口、目的地址、目的端口)

三次握手:
客户端向服务器发送一个SYN报文(同步报文),其中包含客户端的SYN序列号(seq=x)。
服务器收到SYN报文后,向客户端回复一个SYN-ACK报文,表示同意建立连接,其中包含服务器和客户端的SYN序列号(seq=y和ack=x+1)。
客户端收到SYN-ACK报文后,向服务器发送一个ACK报文,确认连接建立,其中包含客户端的ACK序列号(seq=x+1和ack=y+1)。

三次握手的作用:
防止已失效的连接被当作新连接。通过三次握手,客户端和服务器都确认了彼此的存在和连接参数,避免了已失效的连接被当作新连接的情况。
确保连接的可靠性。三次握手可以确认双方都理解连接的建立过程,并且能够正常地接收和发送数据。
提高网络效率。三次握手避免了不必要的连接尝试,减少了网络拥塞,提高了网络效率。

四次挥手:
客户端发送FIN报文,请求关闭连接,此时客户端进入FIN_WAIT_1状态。
服务器收到FIN报文后,向客户端发送确认报文,并进入CLOSE_WAIT状态。
服务器完成所有任务后,向客户端发送FIN报文,请求关闭连接,此时服务器进入LAST_ACK状态。
客户端收到FIN报文后,向服务器发送确认报文,并进入TIME_WAIT状态。

四次挥手的作用:
客户端发送FIN报文,表示客户端不再发送数据,请求释放连接。
服务器收到FIN报文后,向客户端发送确认报文,表示同意释放连接。
服务器完成所有任务后,向客户端发送FIN报文,表示服务器不再发送数据,请求释放连接。
客户端收到FIN报文后,向服务器发送确认报文,表示同意释放连接。

3. 浏览器缓存策略

浏览器缓存:减少了沉余的数据传输,节省了网费;减少了服务器的负担,大大提升了网站的性能;加快了客户端加载网页的速度
浏览器缓存主要有两类:协商缓存、彻底缓存,也称协商缓存和强缓存。

强制缓存:不会向服务器发送请求,直接从缓存中读取资源,在chrome控制台的network控制台的network选项中可以看到请求返回200的状态码。

协商缓存:在使用本地缓存之前,需要向服务器发送请求,服务器会根据这个请求的request header的一些参数来判断是否命中协商缓存,如果命中,则返回304状态码并带上新的response header通知浏览器从缓存中读取资源;协商缓存可以解决强制缓存的情况下,资源不更新的问题。

强制缓存中header参数:
cache-control:max-age = 30;强缓存,代表这个请求正确返回时间。
cache-control:-no-cache;协商缓存,先与服务器确认返回的响应是否被更改,如果之前的响应中在ETag,那么请求的时候与服务器端验证,如果资源未被更改,可以避免重新下载。
cache-control:-no-store;直接禁止浏览器缓存数据,每次用户请求该资源,都会向服务器发送请求,每次都会下载完整的资源。
cache-control:- public;可以被所有的用户缓存,包括终端用户和cdn等中间代理服务器。
cache-control:-private;只能被终端用户的浏览器缓存,不允许cdn等中间代理服务器缓存。

协商缓存中header参数:
cache-control:-no-cache;不强制缓存
last-modify 最新修改时间:if-modify-since,浏览器第一次请求一个资源的时候,服务器返回的header中会加上last-modify,last-modify是一个时间标识该资源最后修改时间;当浏览器再次请求该资源时,request的请求头中会包含if-modify-since,该值为缓存之前返回的last-modify,服务器收到后,根据该资源的最后修改时间判断是否命中;如果修改时间和服务器的修改时间相同,则返回给客户端304,表示从客户端缓存中取值,服务器不再返回值。

Etag值资源文件对应的hash值:if-none-match,web服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器决定),if-none-macth发现资源具有Etage声明,则再次向web服务器请求时带上Etag的值,
web服务器收到请求后发现Etag的值与被请求资源的相应校验进行对比,决定是否命中协商缓存。

ETag和Last-modified的作用和区别:

  1. Etag优于Last-modified,last-modified的时间单位是秒,如果某个文件在1秒内改变多次,last- modified不会体现出来修改时间,Etag每次都会改变hash值确保精度。
  2. 在性能上,Etag逊于last- modified,last-modified只需要记录最后修改时间,而Etag需要通过服务器算法计算出hash值。

4. Http协议规定的协议头和请求头有什么?

请求头信息:
accept:浏览器告诉服务器所支持的数据类型
host:浏览器告诉服务器想访问服务器的哪台主机
referer:浏览器告诉服务器是从哪里来的(防盗链)
user-agent:浏览器类型、版本信息
date:浏览器告诉服务器什么时候访问的
cookie
x-request-with:请求方式
响应头信息:
location:告诉浏览器找谁
server:告诉服务器类型
content- type:告诉浏览器返回的数据类型
refresh:控制定时刷新

相关文章:

HTTP【总结】

1. 当用户在浏览器输入网址回车之后,网络协议都做了哪些工作? 首先解析出URL中的域名,根据域名获取对应的ip地址,从浏览器缓存中查看,如果没有则从本机域名解析文件hosts中查看,还没有则从DNS的层层解析。…...

统计子岛屿

统计子岛屿 关于岛屿的相似题目: 岛屿数量 – 二维矩阵的dfs算法封闭岛屿数量 – 二维矩阵的dfs算法统计封闭岛屿的数目统计子岛屿不同岛屿的数量 class CountSubIslands:"""floodFill 算法1254. 统计子岛屿https://leetcode.cn/problems/count-su…...

docker介绍、安装及卸载

官网安装教程:https://docs.docker.com/engine/install/centos/ ####### Docker介绍 ########## 镜像(image):Docker镜像就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。它也相当于是一…...

【EI/SCOPUS会议征稿】第二届环境遥感与地理信息技术国际学术会议(ERSGIT 2023)

第二届环境遥感与地理信息技术国际学术会议 2023 2nd International Conference on Environmental Remote Sensing and Geographic Information Technology 第二届环境遥感与地理信息技术国际学术会议(ERSGIT 2023)定于2023年11月10-12日在中国陕西西安…...

LabVIEW应用开发——LabVIEW2019保姆级介绍、安装、第一个程序

一、前言 LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而Lab…...

《TCP/IP网络编程》阅读笔记--Timewait状态和Nagle算法

1--Timewait状态 对于服务器端/客户端,当一端结束连接时,会向另一端发送 FIN 消息;两端的在经过四次挥手过程后,其 Socket 不会马上消除,而是会处于一个 Time-wait 状态的阶段,此时 Socket 拥有的端口号并没…...

Python常用IDE选择与安装

1、IDE简介 选择一款高效而又顺手的IDE学习或使用Python,可以让你的开发之路充满激情和动力,让你真正投入其中。 常见的Python的IDE工具有: PyCharm 由JetBrains开发的Python IDE,功能强大,支持调试、代码自动完成、…...

Docker从认识到实践再到底层原理(三)|Docker在Centos7环境下的安装和配置

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…...

Jmeter系列-Jmeter面板介绍和常用配置(2)

Jmeter面板介绍 常用菜单栏 分布式运行相关的 选项,可以打开日志,修改语言、函数助手对话框,还有管理插件 常用的图标 从左到右依次 新建测试计划选择测试计划模板创建一个新的测试计划打开jmeter脚本保存jmeter脚本剪切复制粘贴展开目录…...

2023高教社杯数学建模D题思路分析 - 圈养湖羊的空间利用率

# 1 赛题 D 题 圈养湖羊的空间利用率 规模化的圈养养殖场通常根据牲畜的性别和生长阶段分群饲养, 适应不同种类、不同阶段 的牲畜对空间的不同要求,以保障牲畜安全和健康;与此同时,也要尽量减少空间闲置所造成 的资源浪费。在实际…...

自动部署工具PM2

在现代应用程序开发中,自动化部署是一项至关重要的任务。它可以帮助我们快速、可靠地将代码部署到生产环境中,并确保应用程序的持续运行。在这方面,PM2(Process Manager 2)是一个备受欢迎的自动部署工具。本文将详细介…...

软考高级系统架构设计师系列案例考点专题三:数据库系统考点梳理及精讲

软考高级系统架构设计师系列案例考点专题三:数据库系统考点梳理及精讲 一、ORM技术二、数据库分类比较三、并发控制四、封锁协议五、不规范化带来的四大问题六、反规范化技术七、分布式数据库八、数据仓库集成数据库系统知识在架构设计师的考试里时有考查,主要考查的是数据库…...

【 XXL-JOB】 XXL-JOB任务分片

文章目录 前言xxl-job 分片广播任务的详细教程创建任务编写任务代码分片参数设置执行任务查看任务执行结果示例1示例2 总结 前言 xxl-job 是一个分布式任务调度平台,支持定时任务和分片任务。其中,分片任务可以将一个大任务拆分成多个小任务&#xff0c…...

RK3568开发笔记-SATA接口调试

目录 前言 一、sata接口介绍 物理连接 数据传输速度...

异步编程 - 09 Spring框架中的异步执行_@Async注解异步执行原理源码解析

文章目录 概述小结好文推荐 概述 在Spring中调用线程将在调用含有Async注释的方法时立即返回,Spring是如何做到的呢?其实是其对标注Async注解的类做了代理,比如下面的类Async-AnnotationExample。 public class AsyncAnnotationExample {As…...

django-项目

一、RESTful设计风格 基础概念 全称:Representational State Transfer 1.资源 网络上的一个实体,每个资源都有一个独一无二的URL与之对应;获取资源-直接访问URL即可 2.表现层 资源的表现形式 如HTML、xml、JPG、json等 3.状态转化 …...

红日靶场五(vulnstack5)渗透分析

环境搭建 win7 192.168.111.132(仅主机) 192.168.123.212(桥接) .\heart p-0p-0p-0win2008 ip: 192.168.111.131(仅主机) sun\admin 2020.comkali ip: 192.168.10.131(nat)vps&…...

掌握Gitflow的一些进阶用法

1、自定义分支命名约定: 默认情况下,GitFlow使用一套分支命名约定,如feature/、release/和hotfix/等前缀。然而,你可以根据项目的需求自定义分支名称。例如,你可以在分支名称中包含项目、功能或团队成员的信息&#x…...

算法随笔:各种经典最短路算法的简要比较总结

有多种最短路径的应用场景,它们需要用到不同的算法来解决。除了贪心最优搜索之外,其他都是最优性算法,即得到的解都是最短路径。其中m是边的数量,n是点的数量。 问题边权算法时间复杂度一个起点,一个终点非负数&#…...

concrt140.dll怎么下载,concrt140.dll修复工具(修复精灵下载)一键修复问题

今天,我将为大家介绍一个非常常见的问题:由于找不到concrt140.dll,无法继续执行代码怎么办。这个问题可能会让很多网友感到头疼,但是别担心,我会为大家提供5种最全详细的恢复方法。在接下来我将详细介绍这些问题及其解决方法。希望…...

深度学习模型过拟合的实战诊断与优化策略

1. 过拟合现象的诊断方法 第一次训练神经网络时,我盯着训练准确率冲到99%兴奋不已,结果测试集表现只有65%——这就是典型的过拟合现场。判断模型是否过拟合,就像医生看体检报告,需要多维度交叉验证。 最直观的方法是训练集与验证集…...

深入解析PEB结构:为什么隐藏调试器能解决x64dbg的MS_VC_EXCEPTION问题

深入解析PEB结构:为什么隐藏调试器能解决x64dbg的MS_VC_EXCEPTION问题 调试器与反调试技术的博弈一直是Windows系统底层开发中的经典话题。当你在x64dbg中遇到406D1388或E06D7363这类异常时,可能已经踩中了调试检测的陷阱。本文将带你从PEB结构出发&…...

5个实战技巧让Continue插件成为你的JetBrains AI编程搭档

5个实战技巧让Continue插件成为你的JetBrains AI编程搭档 【免费下载链接】continue ⏩ Source-controlled AI checks, enforceable in CI. Powered by the open-source Continue CLI 项目地址: https://gitcode.com/GitHub_Trending/co/continue 在当今AI驱动的开发时代…...

DLSS Swapper终极指南:5分钟掌握游戏性能优化新技能

DLSS Swapper终极指南:5分钟掌握游戏性能优化新技能 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾因游戏帧率不足而烦恼?是否想尝试新版本DLSS却担心兼容性问题?DLSS Swap…...

Docker测试学习思路

Docker 核心概念学习与实战指南本文系统梳理 Docker 学习的核心思路与方法,用通俗类比帮助理解 Docker 的本质,涵盖镜像构建、容器运行、网络通信、数据持久化、资源限制五大核心能力,适合初学者建立清晰的 Docker 知识框架。一、Docker 到底…...

LaTeX2Word-Equation:学术公式无缝迁移的终极解决方案

LaTeX2Word-Equation:学术公式无缝迁移的终极解决方案 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 在学术写作与科研工作中&#…...

中小企业AI落地:Qwen3-4B-Instruct-2507轻量部署实战

中小企业AI落地:Qwen3-4B-Instruct-2507轻量部署实战 中小企业想用上大模型,常被几个现实问题卡住:显存不够、部署太重、运维不会、成本太高。Qwen3-4B-Instruct-2507这个模型,就是为这类场景量身打磨的——它不追求参数堆砌&…...

AI 面试系统设计题怎么准备?5 个完整案例 + 回答框架

AI 面试系统设计题怎么准备?5 个完整案例 回答框架(CSDN 教程版) 摘要:系统设计题是 AI 面试中最能拉开差距的环节。本文提供 5 个完整案例和通用回答框架,帮助工程师高效准备 AI 面试系统设计题。 前言 系统设计题是…...

3行代码实现微信级扫码:OpenCV wechat_qrcode 实战全解(c++实现)

文章目录前言一、wechat_qrcode 核心优势1.模块定位2.核心技术优势二、环境准备与模块部署1.版本要求2.环境安装3.模型下载与路径配置三、核心代码实战(c)1.单张图片解码2.摄像头实时流解码总结前言 日常开发中,传统二维码解码方案总会遇到各类难题&…...

基于vue的非遗文化传承平台[vue]-计算机毕业设计源码+LW文档

摘要:非物质文化遗产(非遗)作为民族文化的重要组成部分,承载着人类社会的文明和历史记忆。随着现代社会的快速发展,非遗文化的传承面临着诸多挑战。为了更好地保护和传承非遗文化,本文设计并实现了一个基于…...