美文网首页
HTTP 服务基础

HTTP 服务基础

作者: DB哥 | 来源:发表于2019-08-20 09:16 被阅读0次

用户访问网站流程图

用户访问网站流程

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响应报文格式


相关文章

  • HTTP 服务基础

    用户访问网站流程图 用户访问网站流程 1、用户浏览器输入网站www.happy.com回车,完成域名解析过程(DN...

  • 2019-04-26

    目录 第4章 Web服务基础 4.1 http服务重要基础 4.1.1用户访问网站基本流程 4.1.2 DNS系统...

  • go http学习笔记

    go http学习笔记 @[goweb, go, http] 1.go http基础 go http服务器简例 h...

  • 【Consul基础】服务发现-HTTP

    HTTP协议服务发现调用接口即可 查询所有服务http://localhost:8500/v1/catalog/s...

  • Golang构建HTTP服务(二)--- Handler,Ser

    Golang标准库http包提供了基础的http服务,这个服务又基于Handler接口和ServeMux结构的做M...

  • http请求响应随记

    关于HTTP请求与响应的基础总结 http请求 浏览器向服务器发送服务器http请求方式主要有get和post,其...

  • 【一起来烧脑】底层HTTP深入笔记

    了解Web和网络基础,了解HTTP协议,HTTP报文内的HTTP信息,返回结果的HTTP状态码,了解Web服务器,...

  • Idea使用详解

    基础信息 Idea主页安装教程 激活服务器 http://idea.qinxi1992.cn http://www...

  • 漏洞学习篇:CVE漏洞复现

    漏洞原理 Apache HTTP Server 是 Apache 基础开放的流行的 HTTP 服务器。在其 2.4...

  • Android网络安全配置

    基础概念 HTTP HTTP协议工作于 客户端-服务端架构上。通常,由HTTP客户端发起一个请求,建立一个到服务器...

网友评论

      本文标题:HTTP 服务基础

      本文链接:https://www.haomeiwen.com/subject/okcusctx.html