当前位置:首页 > 技术文章 > 正文内容

Centos7学习笔记(十七)- HTTP协议

ivker_lee4年前 (2021-10-06)技术文章300

一、什么是HTTP?

首先要提超文本HyperText——含有超链接和各种多媒体元素标记的文本。这些超文本文件彼此链接,形成网状,又被称为网页web page。这些链接用URL表示。最常见的超文本格式是超文本标记语言HTML。

URL——统一资源定位符Uniform resource locator,用于唯一标识万维网中的某一个文档。URL由“协议”、“主机和端口”、“文件路径和文件名”组成。(其实还可能包括:参数(可能是用&&符号分隔)、查询(可能用?去分隔定义、片段(用#去分隔,代表锚点))

URL中的协议,常见的是http和https。也有一些其他的,比如mailto——邮件地址;urn——统一资源名称;ftp——文件传输协议;file——指定主机上的文件名称;tel——电话;ws/wss——(加密的)Websocket链接等等。


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


一个完整的HTTP请求响应,,一般分为8步骤来完成:

1、浏览器分析超链接中的URL——提取识别URL中的域名字段

2、浏览器将域名字段发送给本地的dns客户端,dns客户端向DNS服务器发送包含着域名字段的查询报文。

3、DNS服务器通过一系列的操作(有可能是查询自己的缓存就得到A记录、也有可能去做转发解析等等)将包含对应域名的A记录地址,形成一个响应报文,最终回复至浏览器

4、浏览器(主机)与web服务器建立TCP链接(包括SYN、SYN ACK、ACK三次握手)

5、浏览器请求文档:包括GET、POST、HEAD、PUT、DELETE、CONNECT、PATCH、TRACE等,主要是前2者。

6、服务器给出响应,将请求的文档发送给浏览器

7、释放TCP链接

8、浏览器显示请求文档



二、HTTP响应的状态码

200     成功响应

301    永久重定向——浏览器识别301后,就重新记住并查找新地址(IP、文档路径等)去访问,不再理会重定向前的域名

302    临时重定向——浏览器在每次请求访问时,都重定向到新地址

307    内部重定向

304     走本地缓存的响应结果

400      客户端错误,碰到几率小

401      认证错误(用户名密码认证错误时)

403       找不到主页,权限不足(主要是权限不足,比如index页被修改,那么访问时,因找不到index页会403错误)

404    not found   网页找不到(页面不存在)

500        内部错误(比如mysql连接不上)

502           找不到后端主机

503         服务器过载(或处于临时维护状态中)

504         连接超时


http请求

image.png

http响应

image.png

HTTP协议版本响应区别

Compares the performance of the three HTTP/1.x connection models: short-lived connections, persistent connections, and HTTP pipelining.

              http 1.0                                                                            http 1.1                                                                            http 2.0


三、HTTP头

头(header)                类型                说明

User-Agent                   请求            关于浏览器和它的平台的信息,如Mozilla 5.0

Accept                           请求            客户能处理的页面的类型,比如text/html

Accept-Charset              请求            客户能接受的字符集,比如Unicode-1-1

Accept-Encoding           请求            客户能处理的页面编码方法,比如gzip

Accept-Language          请求            客户能处理的自然语言,比如en,zh-cn

Host                               请求            服务器的DNS名称。从URL中提取处理,必需。

Referer                          请求             用户从该URL代表的页面出发访问当前请求的页面

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

Date                               双向             消息被发送的日期和时间

Server                            响应            关于服务器的信息,比如:Microsoft-IIS/6.0,

Content-Encoding         响应             内容是如何被编码的,如gzip

Content-Language        响应                页面所使用的自然语言

Content-Length            响应                以字节计算的页面长度

Content-Type                响应                页面的MIME类型

Last-Modified                响应                页面最后被修改的时间和日期,在页面缓存机制中意义重大

Location                        响应                指示客户将请求发送到别处,即重定向到另一个URL

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


Referer,它告诉当前请求,其上一个请求的URL地址。

Set-Cookie  ,由于http协议是无状态的,所有设置Cookie来做数据存储,它记录了登录信息,游戏积分等信息,用于识别身份,进行验证等。


四、DNS解析过程

一个知乎的回答:https://www.zhihu.com/question/23042131/answer/66571369


DNS 查询的过程如下图所示。



1、在浏览器中输入www  . qq  .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www  . qq  .com主机。

6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。


分享给朋友:

相关文章

Centos7学习笔记(一)

Centos7学习笔记(一)

1、安装部分新知a、LVM——逻辑卷管理,作用:动态管理磁盘分区空间,缺点:影响高并发下的磁盘性能b、CentOS 7安装之前,修改网卡名称:在安装界面,按“tab”键,调整内核参数,添加“net.ifnames=0 biosdevname=0”这2个参数值(如果是安装好系统后修改,则需几步:1、重命名/etc/sysconfig/network-script/ifcfg-ens33为ifcfg-eth0,并修改内容将DEVICE和NAME值修改为eth0;2、修改/etc/default/gr...

Centos7学习笔记(七)— 性能调优一

Centos7学习笔记(七)— 性能调优一

1、nice,renice  调整进程nice值,让进程使用更多的CPUnice值   #范围,  -20 ~ 19  越小优先级越高 普通用户0-19作用:以什么优先级运行进程 。默认优先级是0语法: nice  -n 优先级数字   命令例:# nice -n -5 vim a.txt   # vim进程以-5级别运行查看:ps -axu | grep a.txt[root@xueg...

Centos7学习笔记(八)-基础命令(三)

Centos7学习笔记(八)-基础命令(三)

1、rsync作为一个同步(备份,增量备份)命令,它的选项非常的多,常用的组合是avz,当然,如果需要建立备份服务,那么-n必然是用的多的参数选项。关于rsync的用法详细说明,参考网上的这篇原文链接:https://www.cnblogs.com/f-ck-need-u/p/7220009.html#blog21,文章写的非常好,有大量的通俗易懂的例子及解释。以下关于rsync参数选项的说明,就抄录自该文章。v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细...

Centos7学习笔记(九)- 基础系统优化

Centos7学习笔记(九)- 基础系统优化

本部分内容是针对运维管理过程中,为了达到规范、便捷、增强基础安全性等目的,而对初始安装的生产(也包括测试)用操作系统,做各项系统优化、规范工作。(持续更新。。。)1、做好服务器的用途规划(含IP规划)和磁盘目录(比如一般备份用的服务器,独立建立/data目录)2、如有必要,尽量做本地hosts解析;或者搭建本地dns解析服务器,所有非dns服务器dns指向该服务器。3、分组各服务器,各组指定更改yum源为不同的公网yum源(比如阿里源、163源、清华源等),如有可能,自行搭建yum源服务器,所有...

 Centos7学习笔记(十四)- SSH部分

Centos7学习笔记(十四)- SSH部分

1、数字签名了解ssh之前,先了解什么是数字签名?http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.htmlhttp://www.youdzone.com/signature.html参看这2篇文章,通俗易懂的解释了什么是数字签名。简单的讲,就是有一个CA中心,它可以颁发“数字证书”,这个证书,可以证明其后的公钥真伪性,以便客户端正确识别。2、SSH基本原理与运用(一)以下部分,抄录于“阮一峰”博客,链接:htt...

 Centos7学习笔记(十五)- ansible初步

Centos7学习笔记(十五)- ansible初步

1、安装要求管理主机:必须不能是windows系统。类Uinx系统下,python版本为2.6或者2.7。OS X系统,需修改ulimit值才能使用ansible的多子进程。托管节点:Python版本不得低于2.4,如果Python版本低于2.4,那么需要安装python-simplejson模块。2、ansible安装redhat系需要安装epel源,fedora不用,可以直接安装yum -y install ansible(yum -y install libselinux-python,系...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。