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,全称Domain Name System/Serve
它在一个网站运行中起到了至关重要的作用
它的主要作用是负责把网站域名解析为对应的IP地址
例如:把www.etiantian.org解析为对应的IP地址记录如1.1.1.1,这个从域名到IP的解析过程称为A记录,即Address Record
DNS常用记录类型主要有
@记录
A记录
CNAME记录
DNS系统树状结构图
DNS解析流程图
使用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的解析流程就完成了.
OSI七层模型
TCP/IP五层模型
TCP/IP每层包含的协议
TCP报文格式
TCP/IP三次握手
TCP/IP四次挥手
URL
全称为Uniform Resource Location,中文翻译为统一资源定位符
URI
全称为Uniform Resource Identifier,中文翻译为统一资源标识符
URL和URI关系
docs.ansible.com / ansible/latest/user_guide/playbooks_reuse_roles.html
URL URI
静态资源
特点说明
动态资源
要什么信息,需要进行查询数据库进行解析后发送给客户端
查看班级人员信息表
班级 人名 年龄 学历
sz-01 张三 18 高中 ---> 数据库中 oldboy=123 <--- post
sz-01 李四 20 大专
班级 人员 年龄 学历
代码信息直接调用数据库的内容
1) 采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、
投票、用户管理、订单处理、发博文等。
2) 动态资源页面会出现 "?" "&", 不便于被搜索引擎收录
3) 接收到用户请求,需要让动态服务和数据库服务进行处理
伪静态资源(动态页面)
curl -I -s -w "%{http_code}\n" -o /dev/null www.baidu.com
起始行
响应报文的起始行也叫状态行,用来说明服务器相应客户端请求的状态,一般为协议及版本号,数字状态码,状态情况,例如: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 --> 服务端