用户访问网站流程图

用户访问网站流程
1、用户浏览器输入网站www.happy.com回车,完成域名解析过程(DNS解析过程)
1.1、用户在电脑浏览器输入www.happy.com这个域名时,首先在本地主机查找hosts文件是否有www.happy.com记录,如果有则返回结果,如果无跳到下一步。
1.2、电脑通过本机DNS找到局域网DNS是否有www.happy.com记录,如果有则返回结果,如果无跳到下一步。
1.3、局域网DNS缓存无www.happy.com记录,则把请求转发给ISP运营商,ISP运营商查找自己的DNS缓存,如果有则返回结果,如果无跳到下一步。
1.4、ISP运营商查到无www.happy.com记录,则把请求转给根域DNS,根域DNS没有www.happy.com域名解析记录,但知道www.happy.com 对应的顶级域名.com后缀是解析记录,把这结果返回给用户本机DNS后继续下一步。
1.5、用户本地DNS获取到根域告知的.com对应的器地址后,向.com服务器请求www.happy.com 域名解析,但是.com顶级域是没有www.happy.com的解析记录,但有是有haapy.com解析记录,把这一结果返回给用户本机DNS后继续下一步。
1.6、用户本地DNS获取到.com顶级域名服务器告知的happy.com对应的DNS域名商服务器后,向DNS域名商服务器请求www.happy.com域名解析,DNS域名商服务器记录了www.happy.com 域名对应的IP地址 10.10.10.10,将结果返回给用户本机DNS,用户主机就会找到这个IP地址对应的WEB服务,最后浏览器会自动把www.happy.com网址缓存到浏览器。
2、用户主机访问WEB服务器10.10.10.10,先建立通道连接(TCP三次握手过程)
3、通过HTTP协议访问WEB服务器,发送HTTP请求报文
4、WEB服务器响应客户端请求,回复HTTP响应报文
5、用户在浏览器看到了WEB服务器返回的网站信息。
6、用户主机结束访问网站,断开通道连接(TCP四次握手过程)
一、DNS域名解析
1、什么是DNS ?
DNS(Domain Name System)是域名和IP地址相互映射的关系,将域名解析对应的IP地址,方便用户使用。
2、DNS域名解析流程图

3、客户端CentOS 系统本机hosts文件(DNS解析记录)
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#==》如果用户本地hosts文件添加这条记录,DNS直接在本地解析成功,访问速度最快
10.10.10.10 [www.happy.com](http://www.happy.com)
4、WEB服务端设置域名解析(阿里云)

记录类型:
A---将域名指向一个IPV4地址
CNAME---将域名指向另外一个域名
AAAA---将域名指向一个IPV6地址
NS---将子域名指定其他
DNS服务器解析
MX---将域名指向邮件服务器地址
SRV---记录提供特定的服务的服务器
TXT---文本长度限制512,通常做SPF记录(反垃圾邮件)
CAA-CA---证书颁发机构授权校验
CAA-CA---证书颁发机构授权校验显性
URL---将域名302重定向到另外一个地址隐性
URL---与显性URL类似,但是会隐藏真实目标地址
主机记录:
www(名称可自定义)
解析线路:
电信
联通
移动
记录值:
根据选择记录类型输入对应的记录值,
例如,选择A记录则对应的记录值为Ipv4地址形式 如 10.10.10.10(公网IP地址)
TTL:
域名解析记录在DNS服务器中存留时间。当各地的DNS服务器接受到解析请求时,
就会向域名指定的NS服务器(权威域名服务器)发出解析请求从而获得解析记录;
在获得这个记录之后,记录会在DNS服务器(各地的缓存服务器,也叫递归域名服务器)
中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向
NS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留
的时间,就是TTL值。
5、使用dig命令追踪DNS解析过程
#==》先安装dig软件包
[root@master ~]# yum install bind-utils –y
[root@master ~]# dig +trace www.jd.com
; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.2 <<>> +trace www.jd.com
;; global options: +cmd
. 459 IN NS h.root-servers.net.
. 459 IN NS i.root-servers.net.
. 459 IN NS j.root-servers.net.
. 459 IN NS b.root-servers.net.
. 459 IN NS c.root-servers.net.
. 459 IN NS e.root-servers.net.
. 459 IN NS k.root-servers.net.
. 459 IN NS d.root-servers.net.
. 459 IN NS l.root-servers.net.
. 459 IN NS g.root-servers.net.
. 459 IN NS a.root-servers.net.
. 459 IN NS m.root-servers.net.
. 459 IN NS f.root-servers.net.
;; Received 228 bytes from 223.6.6.6#53(223.6.6.6) in 280 ms
#==》根域DNS解析,a-m 13个根域服务器,c.root-servers.net根DNS负责此次解析
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com. 86400 IN RRSIG DS 8 1 86400 20190901050000 20190819040000 59944 . RAptjwW+Jbcco8iRIUwFRYu57ch9pWzl6OiQrExwbuhyFFFLZ2GIhTFG u7jqyVGyWE+bBWmGXrQall7NdVgFUDOPidRZR7RppqsDK87Pa3T7tPOp JxppdS27y7mqviPBp+8uXbYAj5+OLElZqDrQrRdfi8GZfOWOyuMd3szP AT2UCEqrofLlswEXKcdblGU/KjAS+7qLNsZWQjctKji3nra9pnWUFNB8 ipKFmdXYyH9KlJPFJpjSumjd7N80StGgHqML2WERQa5SaXvoO9/ixWZH X3MhNuh/1h0mW7Acxs2iFvNDIM6ERXwyj2BRShQltHa6WUd7bMG8qibl Jb3now==
;; Received 1170 bytes from 192.33.4.12#53(c.root-servers.net) in 871 ms
#==》.com顶级域服务DNS解析, b.gtld-servers.net DNS负责了此次解析
jd.com. 172800 IN NS ns1.jdcache.com.
jd.com. 172800 IN NS ns2.jdcache.com.
jd.com. 172800 IN NS ns3.jdcache.com.
jd.com. 172800 IN NS ns4.jdcache.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20190823044446 20190816033446 17708 com. vE2XEWsaCsdwx5su+mhL57TIJdzPDZpKddTh/P8eOeEmv7LlvcP9V2F1 SpxZrxlnlSRvcCmtJFOOkzOvKuEWDQgTKN2jdLWACI+h5yo8MGwzL+0D cD33o+b3aHWPH8/7uZXky07s5/yC28mfqPi6MBiymNL3TOGrQIKyU5Vo X5Y=
VCN61V6E8RJN4R24GKDTFMUBGC610E4P.com. 86400 IN NSEC3 1 1 0 - VCN77CSSQ0F81UJ2JQ85RQR2AF15I71Q NS DS RRSIG
VCN61V6E8RJN4R24GKDTFMUBGC610E4P.com. 86400 IN RRSIG NSEC3 8 2 86400 20190824044936 20190817033936 17708 com. Xc3BYu7UH9eCgwLhNMvW1By7P5Jzj6z62aKdRgWmO0YWuPoXJ5k5tv9Z xEpNMUZ7AmK99hExCAT1Nu3vGT3ACIBqHAW3IgNWfS+lmptdnamurXlv X7oZkSGCwL8B7+9PbXERFIGDpjqkwMnHmvklPyzqgaIfDvWtfJCKfJNg gKg=
;; Received 668 bytes from 192.33.14.30#53(b.gtld-servers.net) in 108 ms
#==》解析jd.com一共有4个DNS服务器,此网站做了A记录类型和CNAME类型,ns4.jdcache.com负责了此次解析记录
www.jd.com. 120 IN CNAME www.jd.com.gslb.qianxun.com.
www.jd.com.gslb.qianxun.com. 60 IN CNAME www.jdcdn.com.
www.jdcdn.com. 720 IN A 112.91.125.129
jdcdn.com. 720 IN NS ns3.jd.com.
jdcdn.com. 720 IN NS ns2.jd.com.
jdcdn.com. 720 IN NS ns1.jd.com.
jdcdn.com. 720 IN NS ns4.jd.com.
;; Received 253 bytes from 106.39.177.32#53(ns4.jdcache.com) in 44 ms
二、TCP/IP协议
1、什么是TCP/IP协议?
TCP/IP(传输控制协议/互联网协议)协议是一组协议,包括TCP协议,UPD协议,IP协议,ARP协议,ICMP协议等。网络传输,软件应用等都要使用到TPC/IP协议簇。
2、OSI七层参考模型

3、TCP/IP 四层模型

4、TCP报文格式

5、使用wireshark软件抓包分析
标注:使用ssh远程登录抓TCP包分析
TCP三次握手


#==》客户端发送连接请求
1、10.0.0.1 10.0.0.150 TCP 66 53978 → 22 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
#==》服务端回复客户端口发送的连接请求
2、10.0.0.150 10.0.0.1 TCP 66 22 → 53978 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460 SACK_PERM=1 WS=128
#==》客户端收到服务端的响应,并发送确认信息
3、10.0.0.1 10.0.0.150 TCP 54 53978 → 22 [ACK] Seq=1 Ack=1 Win=131328 Len=0
TCP四次挥手


#==》客户端发送断开请求
·1、10.0.0.150 10.0.0.1 TCP 60 22 → 53978 [FIN, ACK] Seq=3654 Ack=2650 Win=32128 Len=0
#==》服务端回应客户端发送的断开请求
2、10.0.0.1 10.0.0.150 TCP 54 53978 → 22 [ACK] Seq=2650 Ack=3655 Win=131328 Len=0
#==》服务端再次回应客户端发送的断开请求
3、10.0.0.1 10.0.0.150 TCP 54 53978 → 22 [FIN, ACK] Seq=2650 Ack=3655 Win=131328 Len=0
#==》客户端收到服务端回应同意断开请求
4、10.0.0.150 10.0.0.1 TCP 60 22 → 53978 [ACK] Seq=3655 Ack=2651 Win=32128 Len=0
三、HTTP协议
1、什么是HTTP协议
HTTP协议,全称HyperText Transfer Protocol,中文名为超文本传输协议,是互联网中最常用的一种网络协议。HTTP最重要的应用之一是www服务(World Wide Web),常称Web(万维网)。设计HTTP协议最初的目的就是提供一种发布和接收HTML(一种页面标记语言)页面的方法。HTTP协议的www服务的默认端口80和443(加密)。HTTP协议版本有HTTP/1.0的HTTP/1.1,而HTTP/1.1为当前使用的主流版本。
2、HTTP请求方法
在HTTP通信中,每个HTTP请求报文都包含一个方法。用以告诉web服务器需要执行哪些具体的动作,这些动作包括:获取指定WEB页面、提交内容到服务器、删除服务器上资源文件等,这些HTTP请求报文中包含的方法被称为HTTP请求方法。
![]()
3、HTTP状态码
标注:Linux 查看状态码的命令
[root@master ~]# curl -I -s -w "%{http_code}\n" -o /dev/null www.baidu.com
200
HTTP状态码(HTTP Status Code)是用来表示web服务器响应客户端HTTP请求方法的数字代码。每当web客户端向web服务器发送一个HTTP请求时,web服务器会返回一个状态码。这个状态码是一个三位数字代码,作用是告知web客户端此次请求是否成功或者是否要采取其它动作。以下是状态码的大概范围。

HTTP的状态码种类很多,但实际工作场景中,经常会遇到的状态码不多,以下是一些常用的状态码信息。

4、HTTP报文格式
HTTP报文中有很多内容,这些行的字段都是由一些ASCII码串组成,但各个字段的长度是不同的。HTTP报文可分为两种,一种是从web客户端发往web服务端的HTTP报头,称为请请求报文,另外一种是web服务端发往web客户端HTTP报文,称为响应报文。HTTP的请求报文和响应报文的报文格式类似。

(1)、HTTP请求报文格式

使用wireshark抓包工具抓HTTP协议包

(2)、HTTP响应报文格式


网友评论