【JavaWeb篇】三分钟学会HTTP协议(面试必会)

简介: 【JavaWeb篇】三分钟学会HTTP协议(面试必会)

1.什么是HTTP协议?


HTTP 协议一般指 HTTP(超文本传输协议)。所有的 WWW 文件都必须遵守这个标准。

HTTP 负责 web 服务器与 web 浏览器之间的通信,用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web 客户端返回内容(网页)。

HTTP 是基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。

2.HTTP请求 URL


HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包,HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。

URL包含了用于查找某个资源的足够的信息。

HTTP 的 URL 是由 http:// 起始与默认使用端口 80,而 HTTPS 的 URL 则是由 https:// 起始与默认使用端口443。

3.HTTP的工作原理


HTTP 协议工作于客户端-服务端架构上,浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求,Web 服务器根据接收到的请求后,向客户端发送响应信息。

但是需要注意一下几点:

  • HTTP 是无连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,节省传输时间。
  • HTTP 是媒体独立的:只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。
  • HTTP 是无状态的:HTTP 协议是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就较快。


总的来说,HTTP通信包含了四个步骤:1.客户与服务器建立连接 2.客户向服务器提出请求 3.服务器接收请求,并根据请求返回相应的文件作为应答 4.客户与服务器关闭连接。

4.HTTP请求


客户端通过发送HTTP请求向服务器请求对资源的访问。,http请求由请求行,消息报头,请求正文三部分构成。

访问http:/baidu.com,打开浏览器的f12开发者模式:

8.1.png

4.1 HTTP请求数据格式


图:HTTP数据请求格式

8.2.png


HTTP请求行


请求行是请求数据的第一行,请求行以方法字段开始,后面分别是URL字段和HTTP协议版本字段,并以CRLF结尾。

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等。


HTTP请求体


只有在发送POST请求时才会有请求正文,GET方法并没有请求正文。

例如:

8.3.png

4.2 HTTP请求方法


根据 HTTP 标准,HTTP 请求可以使用多种请求方法,HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

9种请求方法:

方法

描述

GET

请求指定的页面信息,并返回实体主体。

POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

HEAD

类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头

PUT

从客户端向服务器传送的数据取代指定的文档的内容。

DELETE

请求服务器删除指定的页面。

CONNECT

HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

OPTIONS

允许客户端查看服务器的性能。

TRACE

回显服务器收到的请求,主要用于测试或诊断。

PATCH

是对 PUT 方法的补充,用来对已知资源进行局部更新 。

5.HTTP响应


在接收和解释请求消息后,服务器会返回一个HTTP响应消息。

HTTP响应也由三部分组成,包括状态行,消息报头,响应正文。

9.1.png

5.1 HTTP响应状态行


状态行也由三部分组成,包括HTTP协议的版本,状态码,以及对状态码的文本描述。例如:

9.2.png

5.2 HTTP响应状态码


当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。分别是:

  • 1xx:响应中 - 表示请求已接收,继续处理
  • 2xx:成功 - 表示请求已被成功接收、理解、接受
  • 3xx:重定向 - 要完成请求必须进行更进一步的操作
  • 4xx:客户端错误 - 请求有语法错误或请求无法实现
  • 5xx:服务器端错误 - 服务器未能实现合法的请求


常见的状态码:

  • 200 OK :请求成功。一般用于 GET 与 POST 请求
  • 404 Not Found: 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
  • 501 Not Implemented :服务器不支持请求的功能,无法完成请求

6.HTTPS


那么,HTTP传输协议有什么缺点呢?

通信使用明文(不加密),内容可能会被窃听

不验证通信方的身份,因此有可能遭遇伪装

无法证明报文的完整性,所以有可能已遭篡改

HTTP 协议中没有加密机制,但可以通 过和 SSL(Secure Socket Layer, 安全套接层 )或 TLS(Transport Layer Security, 安全层传输协议)的组合使用,加密 HTTP 的通信内容。属于通信加密,即在整个通信线路中加密。

HTTP + 加密 + 认证 + 完整性保护 = HTTPS(HTTP Secure )

HTTPS 采用共享密钥加密(对称)和公开密钥加密(非对称)两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。

所以应充分利用两者各自的优势, 将多种方法组合起来用于通信。 在交换密钥阶段使用公开密钥加密方式,之后的建立通信交换报文阶段 则使用共享密钥加密方式。

目录
相关文章
|
21小时前
|
安全 网络协议 网络安全
IP代理的三大协议:HTTP、HTTPS与SOCKS5的区别
**HTTP代理**适用于基本网页浏览,简单但不安全;**HTTPS代理**提供加密,适合保护隐私;**SOCKS5代理**灵活强大,支持TCP/UDP及认证,适用于绕过限制。选择代理协议应考虑安全、效率及匿名需求。
|
22小时前
|
缓存 开发框架 网络协议
必知的技术知识:HTTP协议和SOCKS5协议
必知的技术知识:HTTP协议和SOCKS5协议
|
1天前
|
移动开发 缓存 网络协议
Beetlex实现完整的HTTP协议
Beetlex实现完整的HTTP协议
|
2天前
|
Web App开发 缓存 安全
HTTP协议 -JavaWeb基础必知
HTTP协议 -JavaWeb基础必知
13 0
|
7天前
|
机器学习/深度学习 安全 数据安全/隐私保护
【计算机网络】深度学习HTTPS协议
【计算机网络】深度学习HTTPS协议
17 0
|
7天前
|
机器学习/深度学习 前端开发 JavaScript
【计算机网络】深度学习使用应用层的HTTP协议
【计算机网络】深度学习使用应用层的HTTP协议
30 0
|
7天前
|
设计模式 SQL JavaScript
java面试宝典全套含答案
java面试宝典全套含答案
|
7天前
|
存储 Java
java面试题大全带答案_面试题库_java面试宝典2018
java面试题大全带答案_面试题库_java面试宝典2018
|
7天前
|
SQL 前端开发 Java
2019史上最全java面试题题库大全800题含答案(面试宝典)(4)
2019史上最全java面试题题库大全800题含答案(面试宝典)