HTTP相关基础知识

二、HTTP协议

1、基础知识

# 1、什么是http
HTTP 全称:Hyper Text Transfer Protocol 
中文名:超文本传输协议
 
是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。
 
http协议就是将用户的请求发送到服务器,再将服务器返回的内容传输给浏览器,浏览器进行解析,解析成便于人类读取的页面

# 2、什么是超文本
包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。
 
这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。

# 什么是URL 
URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。
URL由协议、主机和端口(默认为80)以及文件名三部分构成:
 
#当我们访问    baidu.com
#实际上我们访问的是  http://www.baidu.com:80/index.html
 
#URL:       http://www.baidu.com:80/index.html
#协议:        http://    https://   ftp://  ssh://  file://
#域名:        www.baidu.com
#端口:        :80     web服务的端口
#请求的文件:     /index.html     / 指的不是根目录,而是站点目录,我们可以自己指定
 
http 和 url 和 html 的关系
一个完整的html是由很多个URL组成的,而http是将html的内容进行传输和解析的

2、http请求原理

1.首先,当你在浏览器中输入一个网址的时候(https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E6%9B%BE%E8%80%81%E6%B9%BF&rsv_pq=c177c4df0026ba3e&rsv_t=e001VxO8FQ8I6s1o1i0km8IYEX2%2F7PwwkwTB6FC%2FXU9Mmwz24Z4i%2BnYoP0I&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug2=0&inputT=1729&rsv_sug4=1728)浏览器会帮你分析,你输入的这个URL
 
2.其次,浏览器会向DNS服务器请求解析,该URL中的域名www.baidu.com,解析出百度服务器所在的IP地址
3.DNS服务器,会将解析出来的IP地址110.111.112.113并返回给浏览器。
4.浏览器接收到DNS返回的IP地址,立即与该IP所在的服务器建立TCP连接(80端口)。
5.浏览器请求文档,也就是咱们常说的html页面,GET /index.html,并发出HTTP请求报文。
6.服务器给出响应,将请求的index.html文档返回给浏览器,也就是响应HTTP请求的报文。
7.TCP连接响应完之后,释放TCP连接。
8.最后就能显示出,你请求的这个页面了

3、http请求内容

#报文的内容
1.GET那一部分内容被称为:请求头信息
2.GET和HTTP之间有一个空行被称为:请求空行
3.HTTP中的信息被称为:回应信息
4.HTTP与faa之间也有个空行被称为:响应空行
5.faa部分被称为:主体
 
#请求头信息
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: baidu.com
> Accept: */*
>                                           #请求空行
#回应信息
< HTTP/1.1 200 OK
< Date: Wed, 25 Nov 2020 07:53:15 GMT
< Server: Apache
< Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
< ETag: "51-47cf7e6ee8400"
< Accept-Ranges: bytes
< Content-Length: 81
< Cache-Control: max-age=86400
< Expires: Thu, 26 Nov 2020 07:53:15 GMT
< Connection: Keep-Alive
< Content-Type: text/html
<                                            #响应空行 
#主体
<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>


#  响应头信息

#此字段的值表示可用于定义范围的单位。
Accept-Ranges: bytes
#响应过程保持长连接
Connection: Keep-Alive
#响应数据的长度
Content-Length: 2633
#响应数据的类型
Content-Type: text/html; charset=UTF-8
#响应日期
Date: Wed, 25 Nov 2020 02:17:24 GMT
#缓存文件的唯一标识符,决定走不走缓存
ETag: "a49-56b5ce607fe00"
#长连接保持的设置
Keep-Alive: timeout=5, max=100
#记录文件最后的修改时间,决定走不走缓存
Last-Modified: Fri, 04 May 2018 08:13:44 GMT
#服务器上的服务
Server: Apache/2.4.6 (CentOS) PHP/7.1.31



# 请求头信息

#请求的文件类型
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
#请求过程支持的操作
Accept-Encoding: gzip, deflate
#请求过程支持的语言
Accept-Language: zh-CN,zh;q=0.9
#缓存控制,没有缓存
Cache-Control: no-cache
#请求过程保持长连接
Connection: keep-alive
#请求的主机地址
Host: 10.0.0.7
#缓存
Pragma: no-cache
#支持HTTPS请求加密
Upgrade-Insecure-Requests: 1
#客户端信息
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36
 
#上一个访问的页面
Referer: https://www.baidu.com/

4、请求的方法

GET请求读取一个Web页面

POST上传一个文件 (如Web页面)

DELETE删除Web页面

CONNECT用于代理服务器

HEAD请求读取一个Web页面的头部

PUT请求修改一个Web页面

TRACE用于测试,要求服务器送回收到的请求

OPTION查询特定选项

5、响应状态码

<ul>
<li>301—永久移动。被请求的资源已被永久移动位置;</li>
<li>302—请求的资源现在临时从不同的 URI 响应请求;</li>
<li>305—使用代理。被请求的资源必须通过指定的代理才能被访问;</li>
<li>307—临时跳转。被请求的资源在临时从不同的URL响应请求;</li>
<li>400—错误请求;</li>
<li>402—需要付款。该状态码是为了将来可能的需求而预留的,用于一些数字货币或者是微支付;</li>
<li>403—禁止访问。服务器已经理解请求,但是拒绝执行它;</li>
<li>404—找不到对象。请求失败,资源不存在;</li>
<li>406—不可接受的。请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体;</li>
</ul>

<ul>
<li>408—请求超时;</li>
<li>409—冲突。由于和被请求的资源的当前状态之间存在冲突,请求无法完成;</li>
<li>410—遗失的。被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址;</li>
<li>413—响应实体太大。服务器拒绝处理当前请求,请求超过服务器所能处理和允许的最大值。</li>
<li>417—期望失败。在请求头 Expect 中指定的预期内容无法被服务器满足;</li>
<li>418—我是一个茶壶。超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现;</li>
<li>420—方法失效。</li>
<li>422—不可处理的实体。请求格式正确,但是由于含有语义错误,无法响应;</li>
<li>500—服务器内部错误。服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理;</li>
</ul>

6、请求头信息

User-  Agent(用户 -代理)关于浏览器和它平台的信息,如Mozilla5.0

Accept (接受)客户能处理的页面类型,如text/html

Accept-Charset(接受字符集)客户可以接受的字符集,如Unicode-1-1

Accept-Encoding(接受编码)客户能处理的页码编码方法,如gzip

Accept-Languge(接受语言)客户能处理的自然语言,如en(英语),zh-cn(简体中文)

Host(主机)服务器的DNS名称。从URL中提取出来,必须。

Referer(推荐人)用户从该URL代表的页面出发访问当前请求的页面

Cookie 将以前设置的Cookie送回服务器,可用来作为会话信息

Date (时间)消息被发送时候的日期和时间







Server(服务)关于服务器的信息,如Microsoft-llS/6.0

Content-Encoding(内容编码)内容是如何被编码的(如gzip)

Content-Language(内容语言)页面所使用的自然语言

Content-Length(内容长度)以字节计算的页面长度

Content-Type(内容类型)页面的MIME类型

Last-Modified(上次修改时间)页面最后被修改的时间和日期

Location(位置)指示用户将请求发送给别处,即重定向到另一个URL

Set-Cookie 服务器希望客户保存的一个Cookie

7、相关术语

 PV : 页面独立浏览量
 UV : 独立设备
 IP : 独立IP
 
日PV千万量级并不大


面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
 
#一个电商公司,他的网站页面功能会有很多
    注册
    登录
    首页
    详情页
    购物车
    价格标签
    留言
    客服
    支付中心
    物流
    仓储信息
    订单相信
    图片
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值