首页 > 其他分享 >应用层总结笔记2

应用层总结笔记2

时间:2024-05-20 15:57:55浏览次数:26  
标签:总结 缓存 HTTP 请求 报文 笔记 传输 应用层 客户端

1.HTTP是什么

超文本传输协议
用于主机之间传输文字、图片、视频等超文本数据的规范协议
HTTP不限于服务器向客户端发送超文本,服务器之间也可能进行超文本的传输

2.******HTTP的状态码
除了不常见的1类提示信息
还有2类的报文成功收到状态信息
3类的重定向信息,表示客户端申请访问的资源发生了变动,需要客户端重新申请访问
4类包括最常见的404,表示客户端的报文有误,服务端无法理解
5类表示服务器故障,无法处理报文

3.********HTTP的常见字段

host字段:表示需要访问的服务器域名
URL: 请求资源的地址
connection字段:表示客户端请求服务端建立TCP长连接,用于多次请求复用(只有服务端也允许长连接才能建立)
accept:表示客户端可以接收到数据格式
accept encoding 表示客户端可以接受的压缩方式

content length :表示服务器回应数据的长度
content type: 表示服务端回应报文段数据格式(网页等)
content encoding : 表示服务器回应数据的压缩方式

HTTP在传输层使用TCP协议,因此HTTP报文在传输层会被划分成片,HTTP报文主要分为首部和主题部分;需要通过特殊字符隔开,避免粘包问题
粘包问题就是指TCP传输报文是需要将其分片,此操作中就可能使两个信息的部分内容被划分到一个TCP报文段中,所以需要使用特殊的转义字符来将不同的消息隔开

4.********HTTP协议和RPC协议的区别
HTTP协议是在TCP连接的基础上建立的,单纯的TCP连接不足以实现复杂的消息传输,例如由于TCP是面向字节的协议,所以可能会出现粘包问题,因此需要协议来规范
HTTP协议就是现在最流行的超文本传输协议,再此之前不同的机构也设计过其他协议,比如RPC,现在仍在使用
RPC的特点在于服务于某个特定范围内,在通用性上不如HTTP,但也由于其服务范围小,不需要为了通用性而设置一些冗余信息

5.***************HTTP请求方法主要分为哪些方法

分为get和post两种
get请求的含义是获取指定位置的资源,get参数直接写在URL字段里,有长度限制
post请求是基于HTTP请求报文的主体部分内容对指定资源进行处理,post参数写在报文主体部分,没有长度限制

一般而言,get请求是不包含报文主体的,所以只传输一个报文首部;而post请求则会先传输一个报文首部,在传输成功后再传输主体部分。但这也不是绝对的,比如火狐就只传一次

6.************get post 请求的安全与幂等性
安全性表示是否会对服务器资源进行修改,存在破坏风险
幂等性表示多次发出同一个请求(中间不插入其他操作)是否会得到相同的结果
因此get请求是安全幂等的,post请求是不安全不幂等的

此外get请求的参数信息直接放到URL中,而post参数信息放到了报文主体部分,但这不意味着get信息比post信息更有泄露风险,因为HTTP报文内容是明文的,可以被抓包
如果希望在传输过程中数据不泄露,可以使用HTTPS协议加密传输

get请求也可以使用报文主体;post请求的URL字段(指定资源地址)也可以有参数;基础请报文设计只是官方机构的推荐,并没有严格的约束

7.什么是HTTP缓存技术
客户端请求服务器资源是一种占用通信资源的行为,当需要进行一些重复性的HTTP请求得到相同资源时,就可以直接将这些资源数据缓存在本地浏览器,在需要就不需要访问服务器
由于服务器的资源是可能发生改变的,所以缓存存在寿命,当缓存过期时就无法再使用

8.********HTTP缓存的实现方式有哪些
有强制缓存和协商缓存两种,协商缓存又有基于最后修改时间或者唯一标识两种实现方法

强制缓存:当客户端申请访问服务器资源时,首先会看本地是否有未过期的对应资源,如果有直接使用,不执行请求
协商缓存:表示当本地存在过期缓存时,会向服务器申请,同时基于最后修改时间或者唯一标识来判断资源是否被修改,如果没有则不需要返回具体资源数据,让客户端直接调用缓存即可;如果有那就是返回完整数据

协商缓存是在强制缓存执行失败的前提下进行的

9.****************HTTP的特点
常见的HTTP协议有1.1 2.0 3.0
优点:结构简单,只有首部和主体两部分;灵活易扩展,首部各字段和主体部分都没有固定长度,可以扩充修改;通用性强,可以用于不同主机通信
缺点:这才是重点
(1)服务器没有记忆能力
基于HTTP协议传输的报文不会被服务器记录,因此服务器不需要消耗资源去记录历史HTTP报文,也因此在执行同一客户的请求时每条报文都需要用户的身份信息
解决办法是Cookie技术,在客户端第一次访问某服务器时,服务器会分配一个唯一的cookie值给客户,在客户端访问该服务器的报文中需要该字段表明客户身份
(2)使用明文传输
基于HTTP协议的传输都是明文的,也就是说报文可以通过抓包获取,这有利于进行编程调试但也容易使报文信息被其他人获取
(3)其他的不安全隐患
没有验证通信报文完整性的能力,也就是我们发出或者收到的报文可能被篡改

解决方法就是使用保密性能更好的HTTPS协议

10.**********HTTP1.1的性能特点

HTTP1.1在HTTP1.1的基础上升级了长连接功能,允许在一个TCP连接上进行多个请求响应的传输
HTTP长连接本质上其实是TCP长连接

此外在长连接的基础上,HTTP1.1还具有流水线发送请求的能力,不必等到一个请求得到响应后才发送下一个请求,而是同时发送多个请求
因此请求队列不会出现队头堵塞的情况,但响应队列可能会出现
队头堵塞就是说但队头的请求无法发出或者响应时,会堵塞后面的请求
流水线发送请求的功能不是默认开启的,一般也不使用

标签:总结,缓存,HTTP,请求,报文,笔记,传输,应用层,客户端
From: https://www.cnblogs.com/atopes-chw/p/18202144

相关文章

  • 网络层总结比较4
    1.网络层的IP协议包含哪些内容(1)IP基础知识:IP作用:实现源主机与目标主机之间的通信,是点对点的通信IP和MAC的关系:IP属于网络层、MAC属于数据链路层,IP可以实现复杂网络里两个主机的通信,MAC只用于具有直接链路连接的两个设备之间的通信(2)IP地址相关知识:IP地址定义:表示每个主机或者......
  • 传输层总结笔记3
    1.TCP头格式有源、目的端口号,指示进行通信的两个应用进程;首部长度;序列号,表示数据部分的第一个字节的编号;确认号,表示希望接收到的下一个字节的编号,表明该编号之前的数据都已经被确认接收了;控制位,ACK表示确认号有效性RST表示强制断开连接SYN、FIN方别表示报文属于TCP连接建立......
  • 侯捷C++上期笔记
    1.头文件和类、构造函数c++和c最大的不同在于C++会把数据以及处理数据的函数放到一个对象objects(class)里,不同类之间不可见,类似C中结构体struct防止头文件重复声明ifndefcomplex//当之前没有声明过这个头文件时,才进行后续的声明definecomplex(2)补充定义(1)类定义(3)类功能解释......
  • C++ 异常处理注意事项总结
    C++异常处理注意事项总结:异常安全代码:编写异常安全的代码是至关重要的。这意味着你的代码应该在面对异常时能够正确地清理资源并维持程序状态。使用RAII(ResourceAcquisitionIsInitialization)技术可以帮助自动管理资源,减少内存泄漏的风险。使用noexcept:对于不会抛出异常......
  • C++ 多线程编程要点总结
    C++多线程编程要点总结:选择合适的线程库:C++11引入了 <thread> 头文件,提供了对线程的原生支持。也可以使用第三方库,如Boost.Thread,它提供了更多高级功能和更好的跨平台兼容性。线程创建与管理:使用 std::thread 类创建新线程,并传入函数或可调用对象作为线程的入口......
  • Godot Breakeys Godot Beginner Tutorial 游戏开发笔记
    目录前言资源下载添加人物节点运动状态机移动平台单向穿过奇怪的BugArea2DBodyEntered死亡区域全局类多线程安全TileMap处理TileMap分层前言这次来学习一下youtube的传奇Unity博主,Breakeys的Godot新手教程。Breakeys是从15岁左右就开始用unity做游戏并在youtube上面发布视频了。......
  • Google出品的NotebookLM 人工智能笔记本,一款基于RAG的personalized AI产品
    Google推出了实验性的NotebookLM产品,一款基于RAG的个性化AI助手产品,基于用户提供的可信信息,通过RAG,帮助用户洞察和学习参考内容,然后借助AI整理笔记,转换为用户最终需要的大纲、博客、商业计划书等最终目的。在之前的博客中,当时提到:"AI搜索产品的边界绝不止步于搜索,往上往下,往上如......
  • ABC354 E - Remove Pairs 做题笔记
    ABC354E-RemovePairs做题笔记题目链接对于这种带有博弈论的dp,考虑这样设计状态:令\(f_s\in\{1,0\}\)表示“游戏局面”为\(s\)时,先手必胜还是必败。本题中,“游戏局面”可以表示为剩余卡牌的编号集合。又因为本题中\(N\)​很小,通过状压,可以直接用一个int表示游戏......
  • CGCL论文阅读笔记
    Candidate–awareGraphContrastiveLearningforRecommendation论文阅读笔记Abstract现存问题:​ 大多数基于gcl的方法使用启发式数据增强方法,即随机节点/边下降和属性掩蔽,来构造对比对,导致重要信息的丢失。解决方案:​ 为了解决基于gcl的方法中的问题,我们提出了一种新的方......
  • 项目管理之八大绩效域------笔记(五)
    18.7度量绩效域度量绩效域涉及评估项目绩效和采取应对措施相关的活动和职能度量是评估项目绩效,并采取适当的应对措施,以保持最佳项目绩效的过程。一、预期目标:①对项目状况充分理解;(随时对项目有充分了解)②数据充分,可支持决策;③及时采取行动,确保项目最佳绩效;④能够基......