http协议
http协议
:Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议;
http:是基于TCP/IP协议通信来传递数据
。
它不涉及数据包(packet)传输
,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
http协议是传输协议,属于应用层协议,网络四层模型中,传输层负责数据包的发送和网络节点中数据包的流量控制传输等,可以想象成http协议就是快递的包装盒,每一个快递实物都是一个应用程序,http负责应用程序之间数据包装,快递员相当于传输层的tcp协议等,来发送每一个快递。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。
HTTP关系密切的协议:IP,TCP和DNS
负责域名解析的DNS服务
DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的 协议。
HTTP特性
-
HTTP是无状态的
-
HTTP 协议自 身不对请求和响应之间的通信状态进行保存。
-
HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理
为了 更快地处理大量事务,确保协议的可伸缩性
HTTP/1.1 虽然是无状态协议,但为了实现期望的保持状态功能,于 是引入了 Cookie 技术
-
HTTP的请求方式
持久连接节省通信量
-
-
TRACE 方法是让 Web 服务器端将之前的请求通信环回给客户端的方 法。
-
HEAD 方法和 GET 方法一样,只是不返回报文主体部分。用于确认 URI 的有效性及资源更新的日期时间等。
-
FTP 协议的文件上传一样,要求在请 求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置
-
鉴于 HTTP/1.1 的 PUT 方法自身不带验证机制,任何人都可以 上传文件 , 存在安全性问题,因此一般的 Web 网站不使用该方法。
-
配合 Web 应用程序的验证机制,或架构设计采用 REST(REpresentational State Transfer,表征状态转移)标准的同类 Web 网站,就可能会开放使用 PUT 方法。
-
POST 方法用来传输实体的主体
-
GET 方法也可以传输实体的主体,但一般不用 GET 方法进行 传输,而是用 POST 方法。
-
虽说 POST 的功能与 GET 很相似,但 POST 的主要目的并不是获取响应的主体内容
-
GET 方法用来请求访问已被 URI 识别的资源。指定的资源经服务器 端解析后返回响应内容。
-
OPTIONS 方法用来查询针对请求 URI 指定的资源支持的方法。
-
OPTIONS:询问支持的方法
-
GET :获取资源
-
POST:传输实体主体
-
PUT:传输文件
-
HEAD:获得报文首部
-
DELETE:删除文件
-
TRACE:追踪路径
-
CONNECT:要求用隧道协议连接代理
-
HTTP/1.1和一部分的HTTP/1.0想出了持久连接(HTTP Persistent Connections, 也称为HTTP keep-alive或 HTTP connection reuse)的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。
在 HTTP/1.1 中,所有的连接默认都是持久连接,但在 HTTP/1.0 内并 未标准化。
-
管线化
HTTP状态码
-
示客户端 HTTP 请求的返回结果
-
标记服务器端 的处理是否正常
-
通知出现的错误等工作
|
类别
|
原因短语
|
1XX
|
Iformational(信息性状态码)
|
接收的请求正在处理
|
2XX
|
Success(成功状态码)
|
请求正常处理完毕
|
3XX
|
Redirection(重定向状态码)
|
需要进行附加操作以完成请求
|
4XX
|
Client Error(客户端错误状态码)
|
服务器无法处理请求
|
5XX
|
Server Error(服务器错误状态码)
|
服务器处理请求错误
|
14个具有代表性的状态码
2XX 成功
-
200 OK
-
204 No Content
-
206 Partial Content
3XX 重定向
4XX 客户端错误
4XX 的响应结果表明客户端是发生错误的原因所在
-
400 Bad Request
-
401 Unauthorized
-
403 Forbidden
-
404 Not Found
5XX 服务器错误
HTTP和Web服务器
HTTP首部字段
当 HTTP 报文首部中出现了两个或两个以上具有相同首部字段名时 会怎么样?这种情况在规范内尚未明确,根据浏览器内部处理逻辑 的不同,结果可能并不一致。有些浏览器会优先处理第一次出现的 首部字段,而有些则会优先处理最后出现的首部字段。
-
通用首部字段
请求报文和响应报文两方都会使用的首部
首部字段名
|
说明
|
Cache-Control
|
控制缓存行为
|
Connection
|
逐跳首部,连接管理
|
Date
|
创建报文的日期时间
|
Pragma
|
报文指令
|
Trailer
|
报文末端的首部一览
|
Transfer-Encoding
|
指定报文主题的传输编码方式
|
Upgrade
|
升级为其他协议
|
Via
|
代理服务器的相关信息
|
Warning
|
错误通知
|
-
请求首部字段
从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加 内容、客户端信息、响应内容相关优先级等信息。
首部字段名称
|
说明
|
Accept
|
用户代理可处理的媒体类型
|
Accept-Charset
|
优先的字符集
|
Accept-Encoding
|
优先的内容编码
|
Accept-Language
|
优先的语言(自然语言)
|
Authorization
|
Web认证信息
|
Expect
|
期待服务器的特定行为
|
From
|
用户的电子邮箱地址
|
Host
|
请求资源所在服务器
|
If-Match
|
比较实体标记(ETag)
|
If-Modified-Since
|
比较资源的更新时间
|
If-None-Match
|
比较实体标记(与 If-Match 相反)
|
If-Range
|
资源未更新时发送实体 Byte 的范围请求
|
If-Unmodified-Since
|
比较资源的更新时间(与If-Modified-Since相反)
|
Max-Forwards
|
最大传输逐跳数
|
Proxy-Authorization
|
代理服务器要求客户端的认证信息
|
Range
|
实体的字节范围请求
|
Referer
|
对请求中 URI 的原始获取方
|
TE
|
传输编码的优先级
|
User-Agent
|
HTTP 客户端程序的信息
|
-
响应首部字段
从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加 内容,也会要求客户端附加额外的内容信息。
首部字段名
|
说明
|
Allow
|
资源可支持的HTTP方法
|
Content-Encoding
|
实体主体适用的编码方式
|
Content-Language
|
实体主体的自然语言
|
Content-Length
|
实体主体的大小(单位:字节)
|
Content-Location
|
替代对应资源的URI
|
Content-MD5
|
实体主体的报文摘要
|
Content-Range
|
实体主体的位置范围
|
Content-Type
|
实体主体的媒体类型
|
Expires
|
实体主体过期的日期时间
|
Last-Modified
|
资源的最后修改日期时间
|
Accept-Ranges
|
是否接受字节范围请求
|
Age
|
推算资源创建经过时间
|
ETag
|
资源的匹配信息
|
Location
|
令客户端重定向至指定URI
|
Proxy-Authenticate
|
代理服务器对客户端的认证信息
|
Retry-After
|
对再次发起请求的时机要求
|
Server
|
HTTP服务器的安装信息
|
Vary
|
代理服务器缓存的管理信息
|
WWW-Authenticate
|
服务器对客户端的认证信息
|
-
实体首部字段
针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更 新时间等与实体有关的信息。
HTTP的缺点
不确认请求方隐患
-
无法确定请求发送至目标的 Web 服务器是否是按真实意 图返回响应的那台服务器。有可能是已伪装的 Web 服务器。
-
无法确定响应返回到的客户端是否是按真实意图接收响 应的那个客户端。有可能是已伪装的客户端
-
无法确定正在通信的对方是否具备访问权限。因为某些 Web 服务器上保存着重要的信息,只想发给特定用户通 信的权限。
-
无法判定请求是来自何方、出自谁手。
-
即使是无意义的请求也会照单全收。无法阻止海量请求 下的 DoS 攻击(Denial of Service,拒绝服务攻击)。
HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
1.Tomcat服务器
1.1Java Web
在讨论Tomcat之前先说明一下Java Web。Java Web是用Java技术来解决相关Web领域的技术综合。简单的说就是把编写好的代码放到互联网上提供给所有用户访问。在计算机之间进行信息交流称为交互,目前存在两种典型交互方式:
B/S 交互模型(架构)和 C/S 交互模型(架构)
B/S交互模型:能够通过普遍浏览器
1、使用
HTTP
协议访问Web本书一开场便是经典面试题:当我们在网页浏览器的地址栏中输入URL时,Web页面是如何呈现的。1- 当我们在浏览器地址栏输入URL之后,信息会被送往某处;2- 然后从某处
获取
文件资源等信息,从而显示出Web页面。通过发送请求
获取
服务器资源的Web浏览器,都可称为客户端。Web使用一种名为
HTTP
(翻译为超文本转移协议更为精确)的协议作为规范,完成从客户端到服务器端等一系...
点击上方“Java面试题精选”,关注公众号面试刷图,查缺补漏>>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅。TCP要说
http
就绕不开tcp,TCP协议对应于传输层,而
HTTP
协议对应于应用层,从本质上来说,二者没有可比性。但是,
http
是基于tcp协议的。TCP/IP 协议分层模型物理层将二进制的0和1和电压高低,光的闪灭和电波...
关于你的爱机(电脑)你真的了解它吗?它的真实姓名、
MAC地址
你真的知道吗?为了了解每个工作日都陪伴着你的爱机下面小编就给您推荐几种方法来
获取
计算机名以及
MAC地址
的信息计算机名方法1对于Windows 10用户,请在桌面找到“此电脑”图标,右键点击后选择“属性”,打开系统属性页后查看计算机名:对于Windows 7用户,请在桌面找到“计算机”图标,右键点击后选择“属性”,打开计算机属性页...
浏览器会访问DNS服务器将输入的域名对应的IP
获取
到
浏览通过
HTTP
协议和IP协议处理发送的建立连接的请求然后发送到互联网
在互联网中路由器根据目标IP地址,通过复杂的算法找出'最优路径'来传输请求
找到目标IP计算机(服务器)的网卡通过三次握手建立连接
服务器对请求进行分析处理然后返回浏览器需要的页面
浏览器拿到数据会对DOM结构和CSS进行分析形成renderTree然后渲
前面我们以及了解到一个
http
报文是由header+body组成的,但那时我们主要研究的是header,没有涉及到body,
数据类型编码
在TCP/IP协议栈里,传输数据基本上都是header+body的格式,但TCP,UDP因为是传输层协议,它们不会关心body数据是什么,只要把数据发送到对方就算完事了
而
http
协议则不同,它是应用层协议,数据达到之后工作只能说是完成了一半,还必须要告诉上层应用这是什么数据才行,否则上层应用就会不知所措
你可以设想一下,假如
http
没有告知数据类型的功能,服务器把一大
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
impor