http基础

文章目录

    • 第一章 用户访问流程
    • 第二章 DNS域名解析
    • 第三章 TCP/IP协议
    • 第四章 HTTP协议介绍
    • 第五章 HTTP请求方法
    • 第六章 HTTP响应状态码
    • 第七章 HTTP请求报文
    • 第八章 HTTP响应报文
    • 第十章 用户访问网站流程总结

第一章 用户访问流程

http基础_第1张图片
01.访问网站流程:

0. 客户端  浏览器输入网址信息点击回车(www.oldboyedu.com)
1. 客户端  完成域名的解析过程(DNS) 
2. 客户端  直接访问相应网站服务器  建立TCP三次握手过程
3. 客户端  访问网站服务器         发送HTTP请求报文  多次
4. 服务端  响应客户端请求         回复HTTP响应报文  多次
5. 客户端  浏览器看到网站页面
6. 客户端  结束访问网站过程       完成TCP四次挥手过程

02.关键名词:

1.域名
2.DNS域名解析
3.TCP三次握手
4.TCP四次挥手
5.HTTP请求报文
6.HTTP响应报文

第二章 DNS域名解析

DNS介绍

DNS,全称Domain Name System/Serve
它在一个网站运行中起到了至关重要的作用
它的主要作用是负责把网站域名解析为对应的IP地址
例如:把www.etiantian.org解析为对应的IP地址记录如1.1.1.1,这个从域名到IP的解析过程称为A记录,即Address Record
DNS常用记录类型主要有

@记录
A记录
CNAME记录

阿里云的DNS解析界面
http基础_第2张图片

DNS系统树状结构图
http基础_第3张图片
DNS解析流程图
http基础_第4张图片
使用dig命令追踪DNS解析过程
安装dig命令

yum install bind-utils -y

使用dig命令追踪

[root@m01 ~]# dig +trace www.oldboyedu.com        

; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> +trace www.oldboyedu.com
;; global options: +cmd
.                       5       IN      NS      d.root-servers.net.
.                       5       IN      NS      j.root-servers.net.
.                       5       IN      NS      b.root-servers.net.
.                       5       IN      NS      l.root-servers.net.
.                       5       IN      NS      f.root-servers.net.
.                       5       IN      NS      m.root-servers.net.
.                       5       IN      NS      i.root-servers.net.
.                       5       IN      NS      e.root-servers.net.
.                       5       IN      NS      a.root-servers.net.
.                       5       IN      NS      g.root-servers.net.
.                       5       IN      NS      c.root-servers.net.
.                       5       IN      NS      h.root-servers.net.
.                       5       IN      NS      k.root-servers.net.
;; Received 492 bytes from 10.0.1.2#53(10.0.1.2) in 52 ms

com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    86400   IN      DS      30909 8 2 
..............................
oldboyedu.com.          172800  IN      NS      dns9.hichina.com.
oldboyedu.com.          172800  IN      NS      dns10.hichina.com.
..............................
www.oldboyedu.com.      600     IN      A       39.97.3.87
;; Received 62 bytes from 106.11.141.126#53(dns10.hichina.com) in 4 ms

DNS解析流程

第一步:客户端用户在浏览器里输入www.baidu.com网址后回车,系统首先会查找系统本地的DNS缓存及host文件信息,确定是否存在www.baidu.com域名对应的IP解析记录,如果有就直接获取到IP地址,然后去访问这个IP地址对应的www.baidu.com域名的服务器.一般第一次请求时,DNS缓存是没有解析记录的,而hosts多为内部临时测试使用.
第二步:如果客户端本地DNS缓存及本地hosts文件没有www.baidu.com域名对应的解析记录,那么,系统会把浏览器的解析请求发送给在客户端本地设置的DNS服务器地址解析,通常称次DNS为LDNS即local DNS,如果LDNS服务器的本地缓存存有对应的解析记录就会直接返回给IP地址给客户端:如果没有,则LDNS会负责继续请求其他的DNS服务器.
第三步:LDNS从DNS系统的(".")根开始请求对www.baidu.com域名的解析,根DNS服务器在全球一共有13台,根服务器下面是没有www.baidu.com域名解析记录的,但是根下面有www.baidu.com对应的顶级域名.com的解析记录,因此,根会把.com对应的DNS服务器地址返回给LDNS.
第四步:LDNS获取到.com对应的DNS服务器地址后,就会去.com服务器请求www.baidu.com域名的解析,.而com服务器下面也没有www.baidu.com域名对应的解析记录,但是有baidu.com域名的解析记录,因此.com服务器会把baidu.com对应的DNS服务器地址返回给DNS.
第五步:同理,LDNS获取到baidu.com对应的DNS服务器地址后,就会去baidu.com服务器请求对www.baidu.com域名的解析,baidu.com域名对应的DNS服务器是该域名的授权DNS服务器,这个DNS服务器正是企业购买域名时用于管理解析的服务器,这个服务器会有www.baidu.com对应的解析记录,如果此时没有,就表示企业还没有对这个域名做解析,即网站服务器还没有架设好.
第六步:baidu.com域名DNS服务器会把www.baidu.com对应的IP解析记录发给LDNS.
第七步:LDNS把来自授权DNS服务器的与www.baidu.com对应的IP解析记录发给客户端浏览器,并且LDNS会在本地把域名和IP对应解析记录缓存起来,以便下一次更快的返回相同解析请求的记录.至此,整个DNS的解析流程就完成了.

第三章 TCP/IP协议

OSI七层模型
http基础_第5张图片
TCP/IP五层模型
http基础_第6张图片
TCP/IP每层包含的协议
http基础_第7张图片
TCP报文格式
http基础_第8张图片
TCP/IP三次握手
http基础_第9张图片
TCP/IP四次挥手
http基础_第10张图片

第四章 HTTP协议介绍

URL
全称为Uniform Resource Location,中文翻译为统一资源定位符

URI
全称为Uniform Resource Identifier,中文翻译为统一资源标识符

URL和URI关系
docs.ansible.com / ansible/latest/user_guide/playbooks_reuse_roles.html
URL URI
静态资源

特点说明

  1. 网页内容是固定不变的,因此,容易被搜索引擎收录(容易被用户找到)(优点)。
  2. 因为网页没有数据库的支持,所以在网站制作和维护方面的工作量较大,当网站信息量很大时,
    完全依靠静态网页比较困难(缺点)。
  3. 网页的交互性较差,在程序的功能实现方面有较大的限制(缺点)。
  4. 当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析)。

动态资源

要什么信息,需要进行查询数据库进行解析后发送给客户端
查看班级人员信息表

班级   人名   年龄   学历
sz-01  张三   18     高中   ---> 数据库中 oldboy=123  <--- post 
sz-01  李四   20     大专   

班级   人员   年龄   学历
代码信息直接调用数据库的内容
1) 采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、
   投票、用户管理、订单处理、发博文等。
2) 动态资源页面会出现 "?" "&", 不便于被搜索引擎收录
3) 接收到用户请求,需要让动态服务和数据库服务进行处理

伪静态资源(动态页面)

  1. 可以便于搜索引擎进行收录
  2. 有数据库服务支持,实现网页交互功能

第五章 HTTP请求方法

http基础_第11张图片

第六章 HTTP响应状态码

响应状态码分类
http基础_第12张图片
常见响应状态码解释
http基础_第13张图片
使用curl查看状态码

curl -I -s -w "%{http_code}\n" -o /dev/null  www.baidu.com

第七章 HTTP请求报文

http基础_第14张图片
请求行
在这里插入图片描述
请求头
http基础_第15张图片
空行
请求主体

第八章 HTTP响应报文

http基础_第16张图片
起始行
响应报文的起始行也叫状态行,用来说明服务器相应客户端请求的状态,一般为协议及版本号,数字状态码,状态情况,例如:HTTP/1.1 200 OK

响应头部
和请求报文类似,起始行的后面一般有若干个头部字段,每隔头部字段都包含一个名字和一个值,两者之间用冒号分隔.头部结尾也是以空行结束.常见的头部信息有

空行
响应主体
响应报文主体装载了要返回给客户端的数据,这些数据可以是文本,也可以使二进制的图片视频,下面是响应报文主体的html格式文本

第十章 用户访问网站流程总结

1.用户输入域名->浏览器跳转->浏览器缓存->Hosts 文件->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.oldboyedu.com
3.请求的资源是什么: /index.html
4.请求的端口是什么: 默认 http 是 80 https 443
5.请求携带的参数是: 属性(请求的类型、压缩、认证、浏览器信息、等等)
6.请求最后的空行
4.服务端响应的内容是
1.服务端响应使用的 WEB 服务软件
2.服务端响应请求文件的类型
3.服务端响应请求的文件是否进行压缩
4.服务端响应请求的主机是否进行长连接
5.客户端向服务端发起 TCP 断开(四次挥手)
客户端 --> 断开请求 fin=1 seq=x --> 服务端
服务端 --> 响应断开 fin=1 ack=x+1 seq=y --> 客户端
服务端 --> 断开连接 fin=1 ack=x+1 seq=z --> 客户端
客户端 --> 确认断开 fin=1 ack=z+1 seq=sj --> 服务端

你可能感兴趣的:(web架构知识)