Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >WEB的核心:HTTP协议

WEB的核心:HTTP协议

作者头像
naget
发布于 2020-06-18 07:16:34
发布于 2020-06-18 07:16:34
7030
举报
文章被收录于专栏:VegoutVegout

概念

HTTP全称“超文本传输协议”,是一个应用层协议,对Web的请求应答格式进行了规定。HTTP由两个程序实现,一个客户端程序,一个服务端程序。两者通过交换HTTP报文进行通信,客户端发出请求报文,并从服务端收到响应报文。

请求报文和响应报文

请求报文

请求报文由请求行、首部行和实体三部分组成,如下图所示:

请求行中包括三个部分。方法字段可以有几种不同的值,包括GET、POST、DELETE、HEAD和PUT。URL字段说明资源请求路径,版本字段说明该次请求使用的HTTP版本。首部行以键值对的方式为客户端和服务器进行交流提供了很多协商字段。使用GET进行请求时,实体为空(当然技术上也可以做到不为空,这是一个规范问题),常见的表单提交使用POST,实体中存放的是用户表单字段的输入值。

响应报文

响应报文也由三部分组成:状态行、首部行和实体。

状态行包括三个部分:http协议版本、状态码和短语。常用出现的状态码有:200表示成功;301表示访问资源永久移动,以后访问新的url来获取资源;302表示访问资源临时移动,以后还使用此url来获取资源;304表示资源未发生修改,可使用缓存下来的资源(服务器不会返回任何资源);401表示需要认证;403表示拒绝提供服务;404表示找不到资源;500表示服务端未知异常。

持续连接和非持续连接

HTTP是应用层协议,建立在TCP协议之上。每次进行数据传输,即进行请求报文发送以及应答报文的接收需要首先建立TCP连接。如果TCP连接进行复用,被称为持续连接,否则为非持续连接。HTTP默认采用持续连接,客户端和服务端也可以进行配置使用非持续连接。首部行增加一个Connection:close选项,可以告诉对方希望采用非持续连接。

Cookie

HTTP是一个无状态协议,从客户端发出请求报文,到收到服务器的响应报文,即完成了一次交互。当客户端老王再次发出请求报文时,HTTP并没有提供机制让服务器识别出这是老王。但服务器需要识别每一个用户,于是出现了Cookie。Cookie技术有四个组件:①请求报文中的Cookie首部行。②响应报文中的Cookie首部行。③客户浏览器保存一个Cookie文件。④Web站点的Cookie标识生成组件。

如图所示,一个用户访问过京东,于是本地的cookie文件中存放有京东的cookie。第一次访问淘宝的时候,不会携带任何cookie,但是淘宝返回的响应报文中会含有set-cookie首部字段,提示用户将此信息存入本地cookie文件中,之后的访问都会带上此cookie,从而可以标识此用户,让服务端认识他。每个cookie文件都存在于特定的域中,这个域就是我们访问的网站。网站A写下的cookie存在于A的域下,但网站A也可以写下B域的cookie,这种cookie称为第三方cookie,一般是通过调用第三方的SDK来写下的。第三方Cookie有很多的用途,比如用户追踪、数据分析等。出于对用户隐私的保护,各大浏览器开始慢慢的禁用三方Cookie,但商业的力量总是一往无前的,使用第一方Cookie代替三方Cookie等新的方式也在慢慢的出现。

版本演进

安全

HTTP是一个使用明文进行数据传输的协议,存在被窃听、嗅探的危险,于是出现了HTTPS。HTTPS是一个由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,同时采用了对称加密非对称加密,具体过程如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Vegout 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
五千来字小作文,是的,我们是有个HTTP。
因为这个属性JSESSIONID比较重要,存储的是sessionId,这个要是被别人拿到的话,别人就可以冒充我在网站上做某些事情了,像我自己一样请求某些数据了
java小杰要加油
2021/05/13
4330
五千来字小作文,是的,我们是有个HTTP。
<HTTP协议详解>由浅入深看HTTP
1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
xcywt
2018/08/01
5670
<HTTP协议详解>由浅入深看HTTP
简单了解 HTTP 协议
最初,HTTP 协议的出现主要是为了解决文本传输的难题,由于协议本身非常简单,于是在此基础上设想了很多应用方法并投入了实际使用。现在 HTTP 协议已经超出了 Web 这个框架的局限,被运用到了各种场景里。
JMCui
2020/05/21
4360
你需要知道的http协议
前言 1. http和tcp有什么区别和联系? 2. http报文格式是什么样的? 3. http常用的头部字段分别代表什么含义? 4. http常用的状态码分别代表什么含义? 5. https提供了哪些机制保证安全? 6. websocket解决了http的什么弊端? 目录 http相关基本概念 http报文 http响应状态码 http安全-https http认证 websocket协议 一. 基本概念 1. 概述 web理念:文档之间相关关联,连成可相互参阅的万维网(www) web互连(通讯)的基
kinnylee
2020/10/15
6680
你需要知道的http协议
HTTP协议知识体系核心重点梳理
1.应用层: 规定应用程序之间的通信格式,应用层常见协议有: HTTP,HTTPS,FTP,DNS等协议。
大忽悠爱学习
2023/02/26
5500
HTTP协议知识体系核心重点梳理
应用层协议之Web应用与HTTP协议
在1990年,伯纳斯.李开发了超文本传输协议(HTTP)、超文本标记语言(HTML)、统一资源标识符(URL)、第一款Web浏览器和服务器,以及第一批网页,这些是万维网(World Wide Web,或Web、WWW、W3)的起源。简单的将,互联网的出现实现了计算机之间的链接,而万维网真正开始为人类构建一个网络世界,从此全球信息的交流和传播有了革命性的变化。
搬砖俱乐部
2019/06/15
1.2K0
【计算机网络】应用层 : 万维网 和 HTTP 协议 ( 万维网概述 | HTTP 协议特点 | HTTP 协议连接方式 | HTTP 协议报文结构 | HTTP 请求报文 | HTTP 响应报文 )
① 概念 : 万维网 是 超大规模 , 联机形式 的 资料空间 , 是 海量网络站点和网页集合 ;
韩曙亮
2023/03/28
1.3K0
【计算机网络】应用层 : 万维网 和 HTTP 协议 ( 万维网概述 | HTTP 协议特点 | HTTP 协议连接方式 | HTTP 协议报文结构 | HTTP 请求报文 | HTTP 响应报文 )
Http协议面试题
2、什么是Http协议无状态协议?怎么解决Http协议无状态协议?(曾经去某创业公司问到)
翎野君
2023/05/12
2640
Http协议面试题
简单的HTTP协议
简单的HTTP协议.png 简单的HTTP协议 客户端与服务端通讯 在两台计算机之间使用 HTTP 协议通信时,在一条通信线路上必定有一端是客户端,另一端则是服务器端 请求必定由客户端发出, 而服务器端回复响应 请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段和内容实体构成的 响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可 选的响应首部字段以及实体主体构成 HTTP 是一种不保存状态,即无状态(stateless)协议 协议对于发送过的请求或
李才哥
2021/02/21
3790
简单的HTTP协议
一篇文章带你详解 HTTP 协议(上)
利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则从链路层往上走。如下:
java进阶架构师
2018/08/15
7000
一篇文章带你详解 HTTP 协议(上)
HTTP协议(二):作用
前言 上一节我们简单介绍了一下TCP/IP协议族的基本情况,知道了四大层的职责,也了解到我们这一族的家族成员以及他们的能力。 无良作者把我这个主角变成了配角,让我很不爽,好在我打了作者一顿,没错,这次的主角是我了! 今天的自述,我要详细的和大家讲讲我的基本职责、请求报文、响应报文、能够达到一定目的的一些方法、持久连接问题以及状态管理。 好吧,这样讲我相信你可能会有点蒙,没关系,我会一个一个详细的介绍的。 作用:连接用户和服务器老大 其实对于我来讲,每天的生活多少还是有些单调的,我所承担的职责想必
roobtyan
2018/06/04
5850
HTTP协议之HTTP的结构
会使用电脑的人基本上都会使用IE/Firefox/Chrome等网页浏览器的地址栏输入url地址来访问一个网站,那么网站页面是怎么展现到用户面前的呢?当然web页面是不能凭空显示出来的,浏览器根据用户输入的url地址向指定的web服务器请求资源,然后将请求的资源解析显示到web页面。那么web浏览器又是怎样通过url请求到web页面的?web服务器又是怎么响应浏览器的请求的?web浏览器是通过HTTP(HyperText Transfer Protocl)超文本传输协议作为规范,来完成客户端到服务器端的一系列流程。
哲洛不闹
2018/09/14
4550
HTTP协议之HTTP的结构
HTTP 协议的前世今生
Web 界面当然不会凭空出来,根据 Web 浏览器地址栏中指定的 URL,Web 使用一种名为 HTTP 的协议作为规范,完成从客户端到服务端的一些流程。「可以说,Web 是建立在 HTTP 协议上进行通信的」。
飞天小牛肉
2021/02/26
4000
HTTP 协议的前世今生
网络编程之深入浅出,全面理解HTTP协议
HTTP(全称超文本传输协议,英文全称HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
大忽悠爱学习
2022/05/06
7600
网络编程之深入浅出,全面理解HTTP协议
图解HTTP读书笔记
Web使用一种名为HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。而协议是指规则的约定。可以说,Web是建立在HTTP协议上通信的。
Dreamy.TZK
2020/08/24
5220
图解HTTP读书笔记
HTTP协议详解
利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则从链路层往上走。如下:
小柒吃地瓜
2020/04/23
2.1K0
HTTP常见面试题
HTTP常见面试题 Http与Https的区别: Http与Https的区别: HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 ,而 HTTPS 的标准端口是443 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层 HTTP 无法加密,而HTTPS 对传输的数据进行加密 HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书 什么是H
Java3y
2018/03/15
1.7K0
HTTP常见面试题
HTTP协议详解
      http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
大学里的混子
2019/03/04
7100
[图解Http]第2章-简单的HTTP协议
请求报文由 请求方法、请求 URI、协议版本、可选的请求首部字段(headers)和内容实体(body)构成的。
程序亦非猿
2019/08/16
3520
[图解Http]第2章-简单的HTTP协议
原 图解HTTP
作者:汪娇娇 日期:2017年9月4日 公司发福利允许每个人买一本书,于是我就选了一本《图解HTTP》,好补补我的http基础常识,哈哈哈。不得不说,这本书真的是入门级书籍,非计算机的人也可以尝试读读
jojo
2018/05/03
9340
原                                                                                图解HTTP
相关推荐
五千来字小作文,是的,我们是有个HTTP。
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文