IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 说一说http -> 正文阅读

[网络协议]说一说http

说一说http

说在前头:学习HTTP主要就是学习请求和响应数据的具体格式内容。
理论上


HTTP:超文本传输协议,定义了浏览器(万维网客户进程)怎样想万维网服务器请求万维网文档,以及怎样把文档传送给浏览器。 从层次的角度来看:HTTP是面向事务的应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式和规则(别想复杂了,就是一套规范!!),是万维网上能够可靠的交换文件的重要基础。(万物皆文件~)

在这里插入图片描述

(一个丑陋的图)

HTTP的操作过程
以用户单击鼠标后发生的事件为例:(访问www.baidu.com/index.html)
1)浏览器分析链接指向页面的URL(http://www.baidu.com/index.html);
2) 浏览器向DNS请求解析www.baidu.com的IP地址;
3) DNS解析出百度服务器的IP地址;
4)浏览器与该服务器建立TCP连接(默认端口80);
5)浏览器发出HTTP请求:GET/chn/index.html;
6)服务器通过HTTP响应把文件index.html发送给浏览器;
7)释放TCP连接;
8)浏览器解释文件index.html,并将web页面显示给用户;


HTTP协议特点

HTTP协议有它自己的一些特点,分别是:

  • 基于TCP协议: 面向连接,安全

    TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,在数据传输方面相比于UDP更安全。

  • 基于请求-响应模型的:一次请求对应一次响应

    请求和响应是一一对应关系(TCP协议的特性)

  • HTTP协议是无状态协议:对于事物处理没有记忆能力。每次请求-响应都是独立的。
    ( 无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。)

    请求之间无法共享数据,这一特性对网络开发来说十分的不便捷,比如:某次响应中在购物车里已经购买了商品A,但是订单表中却没有相应的数据,这不是很死亡吗?!
    但具体使用的时候,我们发现这些功能是可以正常展示数据的,原因是Java中提出了使用会话技术(Cookie、Session)技术。
    HTTP的无状态特性大大简化了服务器的设计,是服务器更容易支持 大量并发的HTTP请求
    通常使用cookie+database的方式来跟踪用户的活动。


    Cookie的工作原理: 1. 当用户浏览某个使用Cookie的网站时,该网站服务器就为用户产生一个唯一的标识码,如“123456”; 2. 接着在给用户的响应报文中添加一个Set-cookie的首部行“Set-cookie:123456”。 3. 当用户收到响应后,就在他管理的特定Cookie文件中添加这个服务器的主机名和Cookie标识码; 4. 当用户继续浏览这个网站时,就会取出这个网站的标识码,并放入请求报文的Cookie首部行"Cookie:123456"; 5. 服务器就能根据请求报文中的Cookie识别码就能从数据库中查询到该用户的活动记录,进而进行一些个性化的工作;

    (cookie码就像商场的会员号,第一次去就办卡发号,之后每次按卡进行业务办理)
    在这里插入图片描述


HTTP的连接:也即讨论TCP的连接问题【考研爱考】
一、 持久连接(HTTP1.1)
1. 非流水线式 2. 流水线式
二、非持久连接

web应用上

图片直接放进来有些模糊《捂脸》

在这里插入图片描述

请求数据总共分为三部分内容,分别是 [ 请求行请求头请求体 ]
在这里插入图片描述

  • 请求行: HTTP请求中的第一行数据,请求行包含三块内容,分别是:
    1. GET[请求方式]
      请求方式有七种,最常用的是GET和POST
    2. [请求URL路径]
    3. HTTP/1.1[HTTP协议及版本]

  • 请求头: 第二行开始,格式为key: value形式

    请求头中会包含若干个属性,常见的HTTP请求头有:

    Host: 表示请求的主机名
    User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko;
    Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
    Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
    Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。
    

在这里插入图片描述

这些数据有什么用处?

举例说明:
服务端可以根据请求头中的内容来获取客户端的相关信息,有了这些信息服务端就可以处理不同的业务需求,比如:

  • 不同浏览器解析HTML和CSS标签的结果会有不一致,所以就会导致相同的代码在不同的浏览器会出现不同的效果
  • 服务端根据客户端请求头中的数据获取到客户端的浏览器类型,就可以根据不同的浏览器设置不同的代码来达到一致的效果
  • 解决浏览器兼容问题
    *在这里插入图片描述

请求体: POST请求的最后一部分,存储请求参数

  • GET请求请求参数在请求行中,没有请求体,POST请求请求参数在请求体中
  • GET请求请求参数大小有限制,POST没有

响应数据格式

格式介绍

响应数据总共分为三部分内容,分别是响应行响应头响应体

  • 响应行:响应数据的第一行,响应行包含三块内容,分别是 :HTTP协议及版本、响应状态码、状态码的描述

  • 响应头:第二行开始,格式为key:value形式

    响应头中会包含若干个属性,常见的HTTP响应头有:

    Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
    Content-Length:表示该响应内容的长度(字节数);
    Content-Encoding:表示该响应压缩算法,例如gzip;
    Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒
    
  • 响应体: 最后一部分。存放响应数据

2.3.2 响应状态码

最常用的三个:

  • 200 ok 客户端请求成功
  • 404 Not Found 请求资源不存在
  • 500 Internal Server Error 服务端发生不可预期的错误

后话:Web服务器(如tomcat)是一个应用程序(软件),对HTTP协议的操作进行了封装,使得程序员不必直接对协议进行操作。

在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 19:06:09  更:2022-03-30 19:09:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:58:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码