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://www.mzph.cn/news/74176.shtml

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

相关文章

数据库相关基础知识

第一章 概念 1、数据:描述事物的符号记录称为数据。特点:数据和关于数据的解释不可分。 2、数据库:长期存储在计算机内、有组织、可共享的大量的数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储,具有较小的冗余度、…

思维导图怎么变成ppt?4个思维导图一键生成ppt的方法

做好的思维导图如何变成一份ppt?本文罗列了4个可行方法,一起来看看吧。 一 直接复制粘贴 这是最简单的方法,虽然这样可能会花费一些时间,但可以确保内容排版和布局与你想要的一致。当然,我们大可使用更高效的方法。…

编程要搞明白的东西(二)

文章目录 一、简介二、面向对象编程基础2.1 面向对象编程概述2.2 类和对象2.2.1 类的定义和特点2.2.2 对象的创建和使用 2.3 封装、继承与多态的关系2.3.1 封装的概念和优势2.3.2 继承的概念和作用2.3.3 多态的概念和实现方式 三、封装3.1 封装的定义和原则3.2 封装的实现方法3…

VIC模型教程

详情点击链接:VIC模型教程 一:VIC模型的原理与特点 1.VIC模型各模块的主要原理 2.VIC模型的特点及优势 3.VIC模型的适用范围及其限制 4.VIC模型主要输入和输出文件解析案例一 :基于QGIS的VIC模型建模 1.Windows版本VIC模型安装及问题解…

Pycharm创建项目时如何自动添加头部信息

1.打开PyCharm,选择File--Settings 2.依次选择Editor---Code Style-- File and Code Templates---Python Script 3..添加头部内容 可以根据需要添加相应的信息 #!/usr/bin/python3可用的预定义文件模板变量为:$ {PROJECT_NAME} - 当前项目的名称。$ {NAM…

解决Maven依赖下载问题:从阿里云公共仓库入手

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

用递归实现字符串逆序(不使用库函数)

文章目录 前言一、题目要求二、解题步骤1.大概框架2.如何反向排列?3.模拟实现strlen4.实现反向排列5.递归实现反向排列 总结 前言 嗨,亲爱的读者们!我是艾老虎尤,今天,我们将探索一个题目,这个题目对新手非…

Python---元组

元组特点 1. 可以容纳多个数据 2. 可以容纳不同类型的数据 (混装) 3. 数据是有序存储的 (下标索引) 4. 允许重复数据存在 5. 不可以修改 (增加或删除元素等) 【可以修改内部list的内部元素---见页尾】 6. 支持for和while循环 定义元组 # 定义元组 变量 (元素, 元素2, 元素…

数据库服务器是什么意思?数据库服务器有哪些?

数据库服务器是什么意思?现在市场上有很多的服务器的类型,比如数据库服务器,但是很多人对数据库服务器是什么意思?数据库服务器有哪些并不是很熟悉,那么,聚名企服为您详解一下。 一:数据库服务器是什么意思 数据库服…

Java中xml转javaBean

Java中xml转javaBean maven坐标 <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.13.4</version></dependency>代码测试 import cn.hutool.js…

开发板插入sd/tf卡后自动挂载

测试平台-hisi-dv500 要在Linux系统上实现TF卡&#xff08;Micro SD卡&#xff09;插入后自动挂载&#xff0c;类似于SD卡/TF卡插入也会触发内核事件,你可以使用udev工具来监控并处理这些事件,创建一个udev规则文件来捕获TF卡插入事件. 1:创建一个udev规则文件&#xff0c;例…

Spring 6.X IoC 容器

目录 一、Spring IoC 容器和 Bean 简介1.1、容器概述1.3、使用 一、Spring IoC 容器和 Bean 简介 下面主要介绍 Spring 框架对控制反转 (IoC) 原理的实现 首先要说明的是&#xff1a;IoC 也称为依赖注入&#xff0c;这是一个过程。 其次依赖项的定义&#xff1a;对象仅通过构造…

企业架构LNMP学习笔记23

1、隐藏版本号&#xff1a; Nginx对外提供服务&#xff0c;为了避免被针对某个版本的漏洞进行攻击。经常做法是隐藏掉软件的版本信息&#xff0c;提供一定的安全性。 server_tokens off; https和CA&#xff1a; 1&#xff09;基于SSL CA证书的公私钥的安全性。 CA是需要生成…

【公网远程手机Android服务器】安卓Termux搭建Web服务器

目录 概述 1.搭建apache 2.安装cpolar内网穿透 3.公网访问配置 4.固定公网地址 5.添加站点 概述 Termux是一个Android终端仿真应用程序&#xff0c;用于在 Android 手机上搭建一个完整的Linux 环境&#xff0c;能够实现Linux下的许多基本操作&#xff0c;不需要root权限…

CF1120 D. Power Tree 巧妙的图论转化

传送门 [前题提要]:无 题目描述: 就是给你一棵树,然后每个点有花费,然后你可以选一个点,付费后对这个点的子树的所有叶子结点增减任意权值. 考虑有一个人会给这棵树的所有叶子结点赋值(值我们不知道),输出最小的花费,使得无论它如何赋值,我们使用上述的花 费都能使所有的叶子…

代码随想录day46|139. 单词拆分

139. 单词拆分 class Solution:def wordBreak(self, s: str, wordDict: List[str]) -> bool:dp [False]*(len(s)1)dp[0]Truefor i in range(len(s)1):for j in wordDict:if i>len(j) and (s[i-len(j):i] in wordDict) and dp[i-len(j)]:dp[i] Truereturn dp[len(s)]多…

vue中在弹框中使用form表单,取消默认的回车提交效果-刷新页面

前言&#xff1a; vue项目中使用dialog弹框的时候&#xff0c;如果在弹框上使用form表单&#xff0c;但是我们只是使用他的input框&#xff0c;不需要它默认的提交功能的时候&#xff0c;会出现input聚焦&#xff0c;回车刷新页面&#xff0c;是因为他触发了默认的form提交方法…

Excel VSTO开发8 -相关控件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 8 相关控件 在VSTO开发中&#xff0c;Ribbon&#xff08;或称为Ribbon UI&#xff09;是指Office应用程序中的那个位于顶部的带有选…

C++零碎记录(一)

1. 面向对象三大特性 ① C面向对象的三大特性为&#xff1a;封装、继承、多态。 ② C认为万事万物皆为对象&#xff0c;对象上有其属性和行为。 ③ 例如&#xff1a; 1. 人可以作为对象&#xff0c;属性有姓名、年龄、身高、体重......行为有走、跑、跳、吃饭、唱歌.... 2. …