计网必会:HTPP详解、cookie、缓存

news2024/9/20 22:36:13

文章目录

  • 应用层协议
  • Web和HTTP
    • HTTP 概述
      • 采用非持续连接的HTTP
        • RTT 往返时间的定义
        • **三次握手过程**
      • 采用持续连接的HTTP
      • HTTP到底采用哪个?
    • HTTP 的报文格式
      • 请求报文
        • 功效
      • 格式
      • 响应报文
        • 状态码
        • 格式
    • Cookie
      • 什么是cookie
    • Web缓存

在学习的过程很多人都遇到了HTTP和Cookie,Web缓存这些问题。下面我将带领大家了解一下这些复杂的东西,鼓励一下点个赞呗

应用层协议

上一篇博客应用层体系结构已经介绍了应用层的大致内容,下面就是要介绍应用层的协议

  1. HTTP协议

  2. SMTP协议


Web和HTTP

在这里插入图片描述
在这里插入图片描述

HTTP 概述

超文本传输协议(核心)。
Web服务器实现了HTTP的服务器端,它用于存储Web对象
HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。
HTTP使用TCP作为支撑协议,HTTP客户需要建立起与服务器的TCP连接,如何通过套接字访问TCP。
不管是客户端还是服务器,都是需要先向他们的套接字接口发送或接收报文。
重点
HTTP的服务器地址是稳定的
3. 客户与服务器的交互是通过TCP进行的
4. 每个请求都是经过一个单独的TCP发送,也能是多个请求经过一个!!!

采用非持续连接的HTTP

1.客户需要获取1+1=?客户发起一个TCP连接
2. 客户经过套接字发送一个HTTP请求报文
3. 服务器接收请求报文,发送响应
4. TCP连接断开
5. 客户检查响应报文中的页面信息,得到 2.

RTT 往返时间的定义

RTT是指从源主机发送分组开始,直到源主机收到来自目的主机的确认分组为止,所需要的时间

在这里插入图片描述在这里插入图片描述

RTT由三个部分决定:链路的传播时间、末端系统的处理时间、路由器的缓存中的排队和处理时间。其中前两个部分的值作为一个TCP连接相对固定,路由器的缓存中的排队和处理时间会随着整个网络拥塞程度的变化而变化。所以RTT的变化在一定程度上反映了网络拥塞程度的变化。简单来说就是发送方从发送数据开始,到收到来自接受方的确认信息所经历的时间。

三次握手过程

  1. 客户与服务器发起一个TCP连接,
  2. 服务器对此做出回应。
  3. 客户再向服务器回应一个确认,这也就是三次握手的由来!

采用持续连接的HTTP

是不是觉得非持续连接一定比持续性连接好?那你就大错特错的
非持续连接的服务器和客户机需要分配的大量的网络资源,假设你需要99999TB的资源,还需要给你的网友分享,等个几年估计就传完了,那么服务器估计直接就给你停了

如果我们采用持续性连接,那么服务器在结束第一轮的请求响应后,会保持TCP连接的打开!

HTTP到底采用哪个?

看实际情况而定,在实际应用中很多情况突发,不能盖棺定论

HTTP 的报文格式

**

我只说原理,喜欢看结构的,市面上任何书都有例子,光看例子不知道原理,没啥用

**

请求报文

  1. 第一行是请求行:GET/POST/请求…+URL+HTTP版本字段
  2. 其他行是首部行:指明了主机是啥,要不要关闭连接,等等客观存在的网络信息

功效

首部行表示了用户想要的需求(语言,资源版本等)

格式

请求报文的格式

响应报文

  1. 状态行:协议字段+状态码+对象本身状态信息
  2. 首部行:类似于发送报文,都是功能
  3. 实体:主要部分,包含所有的对象本身

状态码

200 请求成功
301 对象转移
400 差错代码
404 请求对象丢失
505 服务器不支持请求报文使用的HTTP协议版本

格式

响应报文

Cookie

什么是cookie

为了让Web站点能够识别用户,诞生了cookie

cookie可以用于标记一个用户,用户首次访问一个网站后,需要产生一个唯一的用户标记,在用户下一次访问时,浏览器向服务器发送cookie首部,服务器就标识出了用户,因此,cookie在HTTP之上建立一个用户会话。

Web缓存

代表初始web服务器满足HTTP请求的网络实体。Web缓存器以及有自己的磁盘存储空间,并在存储空间保存最近访问的资源副本

请求对象过程

  • 建立TCP连接,向缓存器发送HTTP请求
  • 检查缓存器,如果有副本资源就直接返回资源给客户
  • 如果没有,就访问需要访问的资源,然后在本地拷贝一下副本。

好处
减少响应时间,减低成本费用

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

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

相关文章

【matplotlib】19.基本用法

#【matplotlib】19.基本用法 2021.1.19 画figure图基本方法。参考: https://m.runoob.com/matplotlib/matplotlib-pyplot.html https://mofanpy.com/tutorials/data-manipulation/plt/figure matplotlib 是python的画图包 19.1 基础使用 plot图,就是以…

JavaEE2-Spring核心与设计思想

目录 1.Spring是什么? 2.容器是什么? 3.IoC是什么? 3.1.传统程序开发 3.2.控制反转式程序开发 3.3.对比总结规律 4.理解Spring IoC 4.1.将对象(Bean)存入到容器(Spring); 4.2.从容器中取出对象。 5.DI概念说明 1.Spring…

LINUX---进程

目录相关概念1.什么是程序,什么是进程,有什么区别2.如何查看系统中有哪些进程3.进程标识符4.父进程,子进程5.C程序的存储空间是如何分配的创建进程函数forkvforkfork创建进程:vfork创建进程:进程退出正常退出:异常退出…

在XXX中找到了XXX的副本,但是当前代码与XXX中内置的版本不同【几种解决方案】

Microsoft VS警告类似如图所示: 然后发现编译编写好的代码无法打断点。定义的变量无法获取。 方案一: 把提示的该文件备份在其他文件夹一份,然后在项目中删除该文件。再把备份的文件放到该项目中。然后再编译。 方案二(参考该博客…

Udev设备管理器

udev 引入 在2.4内核中 引入了 devfs,他支持设备节点的动态创建。devfs提供了在内存中的文件系统中创建设备节点的能力。设备驱动程序能够自主的管理自己的设备文件。而命名节点的任务还是落到了设备驱动程序头上。但是,设备命名策略是可管理的&#xf…

【设计模式】结构型模式·适配器模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易,如果您觉得写的不错,欢迎给博主来一波点赞、收藏~让博主更有动力吧! 一. 概述 将一个类的接口转换成客户希望的另外一个接口,使得原本接口不兼容而不能一…

分布式搜索引擎--Elasticsearch

1.1 相关术语 和mysql类比 索引:数据库,database,6.0以后变化,对应表 类型:table,6.0以后变化,废弃 文档:一张表里的一行 字段:一个属性就是一个字段 和分布式相关 集群…

NLP学习笔记(六) Transformer简明介绍

大家好,我是半虹,这篇文章来讲 Transformer\text{Transformer}Transformer,想要获取更多相关文章,欢迎关注 自然语言处理 专栏 在之前的两篇文章中,我们介绍过序列到序列模型以及注意力机制在序列到序列模型中的应用 …

Linux开启Docker远程访问并设置安全访问(证书密钥),附一份小白一键设置脚本哦!

前言 喜欢折腾慢慢看,不喜欢折腾直接跳到小简下文的一键脚本那里,两分钟搞好。 我的博客:https://blog.ideaopen.cn 我的公众号:小简聊开发 开启远程访问 编辑docker.service文件 vi /usr/lib/systemd/system/docker.service # …

Python FastAPI 框架 操作Mysql数据库 增删改查

2 比 1 更容易理解,可以先看2(单文件级别) 1、FastAPI 框架 操作Mysql数据库(项目多文件级别) FastAPI 可以使用任何您想要的关系型数据库。 在这里,让我们看一个使用着SQLAlchemy的示例。 您可以很容易地将SQLAlchemy支持任何…

每天进步一点点,今天来学结构体

什么是结构体? C 语言允许用户自己指定这样一种数据结构,它由不同类型的数据组合成一个整体,以便引用,这些组合在一个整体中的数据是互相联系的,这样的数据结构称为结构体,它相当于其它高级语言中记录。 …

01、数据结构——数组

一、数据结构与算法 数据结构是一门研究组织数据方式的学科,有了编程语言也就有了数据结构。学好数据结构可以编写出更加漂亮、更加有效率的代码。程序数据结构算法数据结构是算法的基础 二、稀疏数组: 1、基本介绍: 当一个数组中大部分元…

【Javascript】文本转语音SpeechSynthesisUtterance

SpeechSynthesisUtterance基本介绍 SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等 SpeechSynthesisUtterance基本属性 SpeechSynthesisUtterance.lang 获取并设置话语的语言 SpeechSynthesis…

InfluxDB 笔记

概念 Measurement 类似于表名。 A measurement acts as a container for tags, fields, and timestamps. Tag 补充描述数据的信息,如示例中的location和scientist描述了该数据的采集地和采集人。这两个称为Tag Key,具体的值则称为Tag Value&#xff0c…

小程序基础篇-视图与逻辑

本次学习目标&#xff1a;实现页面间的导航跳转实现下拉刷新实现上拉加载更多知道小程序常用的生命周期函数1.页面导航页面导航指的是页面之前相互的跳转浏览器之间的页面导航有两种&#xff1a;<a>;location.href小程序之间的页面导航有两种&#xff1a;声明式导航&…

告警与恢复告警原理及实现

一、 背景自“双碳”政策提出以来&#xff0c;KaiwuDB 聚焦“数字能源”领域&#xff0c;为用户打造数字能源管理平台&#xff0c;旨在提升综合能源和碳资产管理能力。数字能源管理平台是以 KaiwuDB 为核心建设的云-边-端一体化数据服务平台&#xff0c;致力于为 IoT、工业互联…

前言技术--swagger

目录一、前后端分离的特点二、在没有swagger之前三、swagger的作用四、swagger的优点五、集成swagger5.1 新建springboot项目5.2 集成swagger5.3 开发一个controller用于测试5.4 启动服务&#xff0c;验证集成效果六、swagger常用注解七、swagger使用综合案例一、前后端分离的特…

Python的PyQt框架的使用-常用控件篇

Python的PyQt框架的使用-常用控件篇一、前言二 、QLineEdit 文本框三 、QPushButton按钮控件四、QRadioButton 单选按钮一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;小伙伴们&#xff0c;让我们一起来学习Python的PyQt框架的常用控件。如果文章对你有帮助、欢迎…

第一个程序——构建一个ServerUI

简介 本次程序设计均使用python实现&#xff0c;使用sql server对聊天室用户的数据进行存储。通过python socket套接字编程&#xff0c;实现了在线聊天室的功能&#xff0c;并使用python tkinter进行UI界面的设计。 思路 由计算机网络的基础知识易知&#xff0c;两个主机之间…

基于LSTMGRU的微博突发事件分析与谣言检测(附完整的代码+报告)

问题描述及方法基础 本章主要对课题研究所涉及的机器学习、自然语言处理的原理和方法进行介绍,主要分为四部分,第一部分是将本课谣言检测任务的符号化描述;第二部分是微博数据的预处理,包括语言模型、文本分词等技术;第三部分与第四部分分别是本文搭建的微博谣言检测模型所…