Web基础-HTTP协议

1. 1 HTTP协议概述

1.超文本概念

HyperText Transfer Protocol ,超文本传输协议(应用层)

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

由html文件->包含各种各样的元素(URL链接)->形成web页面

2.HTTP协议

一种按照 URL 指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议, 以实现超链接的功能。

3.HTTP协议原理

1.用户输入域名->浏览器跳转->DNS解析(递归查询|迭代查询)
 客户端向服务端发起查询->递归查询
 服务端向服务端发起查询->迭代查询
​
2.由浏览器向服务端发起TCP连接(三次握手)
 客户端 -->请求包连接   syn=1 seq=x 服务端
 服务端 -->响应客户端   syn=1 ack=x+1 seq=y 客户端
 客户端 -->建立连接     ack=y+1 seq=x+1 服务端
​
3.客户端发起HTTP请求:
 1.请求的方法是什么: Get 获取
 2.请求的Host主机是: www.aliyun.com
 3.请求的资源是什么: /index.html
 4.请求的端口是什么: 默认HTTP是80 HTTPS 443
 5.请求携带的参数是: 属性(请求的类型、压缩、认证、等等)
 6.请求最后的空行
​
4.服务端响应的内容是
 1.服务端响应使用的WEB服务软件
 2.服务端响应请求文件的类型
 3.服务端响应请求的文件是否进行压缩
 4.服务端响应请求的主机是否进行长连接
​
5.客户端向服务端发起TCP断开(四次挥手)
 客户端 --> 断开请求 fin=1 seq=x --> 服务端
 服务端 --> 响应断开 ack=x+1 seq=y --> 客户端
 服务端 --> 断开连接 fin=1 ack=x+1 seq=z --> 客户端
 客户端 --> 确认断开 ack=z+1 seq=n --> 服务端

4.URL 的结构图如下

 

1.2 HTTP工作原理

HTTP请求/响应交互模式
用户通过浏览器访问URL为
http://www.zzz.com/index.php时,浏览器和Web服务器执行以下动作:
​
1.浏览器分析链接中的URL
2.浏览器向DNS请求解析www.zzz.com的IP地址
3.DNS将解析出的IP地址10.0.0.7返回浏览器
4.浏览器与服务器建立TCP连接
5.浏览器请求文档:GET/index.php
6.服务器给出响应,将文档index.php发送给浏览器
7.释放TCP连接

HTTP的短连接:建立一次tcp的连接,发起一次HTTP的请求,结束,tcp断开。

HTTP的长连接:建立一次tcp的连接,发起多次HTTP的请求,结束,tcp断开。

1.3 HTTP请求响应

1.HTTP 请求报文的方法

get         #获得请求文件信息的数据内容(下载)
post        #用户提交数据至服务器端存储(上传,增资源)
put         #用户提交数据至服务器端存储(上传,改资源)
​
Request URL:HTTP://10.0.0.7/index.html      #请求的URL
Request Method:GET                          #请求的方法
Status Code:200 OK                          #当前的状态
Remote Address:10.0.0.7:80                  #远程的主机

2.HTTP返回状态码(Status-Code), 以3位数字组成

200     成功
301     永久重定向(redirect) 
302     临时重定向(redirect) 
304     浏览器缓存
307     内部重定向(redirect)
400     客户端错误
401     认证失败
403     请求不到首页,权限被拒绝
404     资源找不到
500     服务器内部错误,程序代码错误
502     找不到后端的资源 bad gateway
503     服务器过载
504     请求超时

3.用户访问网站携带的参数,以及服务端返回的参数

General:基本信息

# 请求的url
Request URL: HTTPs://www.baidu.com/
# 请求方式
Request Method: GET
# 状态码
Status Code: 200
# 远程主机IP
Remote Address: 47.92.239.154:443
# 控制请求头内容
Referrer Policy: no-referrer-when-downgrade

Response Headers:响应的头部信息

# 请求的域名
:authority: www.baidu.com
# 请求的方式
:method: GET
# 请求的路径
:path: /
# 请求的协议:HTTPs
:scheme: HTTPs
# 请求资源类型
accept: 
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;
q=0.8,application/signed-exchange;v=b3
# 压缩
accept-encoding: gzip, deflate, br
# 语言
accept-language: zh-CN,zh;q=0.9
# 缓存控制(没有做缓存)
cache-control: no-cache
# 保持连接:长连接
Connetection:keep-alive
 HTTP/1.1版本 #长连接,一次TCP的连接可以发起多次HTTP请求
 HTTP/1.0版本 #短连接,一次TCP的连接只能发起一次HTTP请求
 还有HTTP/2.0和HTTP/3.0
# 请求的域名
Host:www.tfantastic.com
# 登录信息
cookie: wp-settings-1=editor%3Dtinymce%26mfold%3Do%26libraryContent%3Dbrowse; 
wp-settings-time-1=1557799119; PHPSESSID=2b8e9773ff24af66ff37e98bc29682dc
# 参数:没有缓存
pragma: no-cache
# 谷歌自带的(不属于请求头的内容)
upgrade-insecure-requests: 1
# 客户端(用户设备)
user-agent:
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/73.0.3683.86 Safari/537.36

Request Headers:请求的头部信息

# 大小
Accept-Range:bytes
# 阿里云存储保存时间
ali-swift-global-savetime: 1564813833
# 缓存控制
cache-control: no-cache, must-revalidate, max-age=0
# 压缩
content-encoding: gzip
# 内容长度
content-length: 9410
# 返回内容类型及字符集
content-type: text/html; charset=UTF-8
# 返回服务器时间
date: Wed, 14 Aug 2019 23:16:43 GMT
# 加密id
eagleid: 2dfd119815648138332064260e
# 失效时间
expires: Thu, 19 Nov 1981 08:52:00 GMT
# 软链接
link: <HTTPs://www.tfantastic.com/wp-json/>; rel="HTTPs://api.w.org/"
# 参数:没有缓存
pragma: no-cache
# 使用的web软件
server: Nginx
# 状态码
status: 200
# 指定特定站点允许访问
timing-allow-origin: *
# 渲染
vary: Accept-Encoding
# 经过各级缓存
via: cache14.l2cm12[99,200-0,M], cache1.l2cm12[101,0], cache13.cn1300[122,200-
0,M], cache4.cn1300[123,0]
------------- 以下都是CDN厂商带的 ----------------
# CDN缓存是否命中
x-cache: MISS TCP_MISS dirn:-2:-2
# 缓存版本号
x-powered-by: PHP/7.1.22
# 缓存时间
x-swift-cachetime: 0
# 保存时间
x-swift-savetime: Sat, 03 Aug 2019 06:30:33 GMT

4.HTTP相关术语 pv、ip、uv

  • pv:页面独立访问量

  • UV:独立设备

  • IP:独立IP

例:假设公司有一座大厦,大厦有100人,每个人有一台电脑和一部手机,上网都是通过nat转换出口,每个人点击网站2次, 请问对应的pv,uv,ip分别是多少?

PV: 100*2*2 = 400

UV: 100*2 = 200

IP: 1 (日PV量可能真是IP很少)

1.4 Web的结构组成

Web应用程序(浏览器和服务器)是相互发送报文来实现基本事务处理的。

  • 代理:位于客户端和服务器之间的HTTP中间实体

  • 缓存:HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方

  • 网关:连接其他应用程序的特殊Web服务器

  • 隧道:对HTTP通信报文进行盲转发的特殊代理

  • Agent代理:发起自动HTTP请求的半智能Web客户端

1.5 HTTP访问流程

1.客户端发起HTTP请求,请求会先抵达前端的防火墙
2.防火墙识别用户身份,通过内部交换机将正常的请求通过tcp连接负载均衡,传递用户的HTTP请求
3.负载接收到请求,会根据请求的内容进行下发任务,通过tcp连接web服务器,发送用户的HTTP请求
4.web接收到用户的HTTP请求后,会根据用户请求的内容进行解析,解析分为如下:
 静态请求:由web服务器向nfs建立tcp连接,获取对应的图片,最后返回给负衡(负载均衡->防火墙->
用户)
 动态请求:有web向后端的动态程序建立TCP连接,将用户的动态HTTP请求传递态程序->由动态程序进行
解析
5.动态程序在解析的过程中,如果碰到查询数据库的请求,则优先和缓存建立tcp接,然后缓存服务发起HTTP
的查询
6.如果缓存没有对应的数据,动态程序再次向数据库建立tcp的连接,然后发起查询。
7.由数据库返回->动态程序->缓存->web服务->负载均衡->防火墙->用户。

面试:访问网站流程

五层架构模型:CDN层-->负载层-->WEB层-->存储层-->缓存层-->数据库层

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值