web和http协议
1.1 HTTP服务的重要基础
1.1.1 用户访问网站基本流程
我们每天都会使用Web客户端上网浏览网页。最常见的Web客户端就是Web浏览器,如通用的微软Internet Explorer ( IE),以及技术人员偏爱的火狐浏览器、谷歌浏览器等。当我们在Web浏览器里输入网站地址(例如: www.baidu.com)时,很快就会看到网站的内容这一切似乎看起来很神奇,那么在其背后到底是怎样的实现流程呢?也许普通的上网者无需关注,但作为一个IT技术人员,特别是合格的Linux运维人员,就需要清晰的掌握了。
下面我们就来揭晓从客户端用户在Web浏览器里输入网站地址,到看到网站内容的完整访问流程。

第一步:客户端用户在浏览器里输入www.baidu.com网站地址,回车后,系统首先会查找系统本地的DNS缓存及hosts文件信息,确定是否存在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.kgc.cn域名的解析,并针对各个层级的DNS服务器系统进行一系列的查找,最终会找到www.baidu.com域名对应的授权DNS服务器,而这个授权DNS服务器正是企业购买域名时用于管理域名解析的服各器,这个授权服务器会有www.baidu.com对应的IP解析记录。如果此时没有,就表示企业的域名管理人员没有为www.baidu.com域名做解析设置,即网站还没架设好。

第四步:www.baidu.com域名的授权DNS服务器会把www.baidu.com对应的最终IP解析记录(例如: 1.1.1.1)发给LDNS。

第五步: LDNS把来自授权DNS服务器www.baidu.com对应的IP解析记录发给客户端浏览器,并且它会把该域名和IP的对应解析缓存起来,以便下一次更快地返回相同解析请求的记录,这些缓存记录在指定的时间(DNS TTL值控制)内不会过期。

第六步:客户端浏览器获取了www.baidu.com的对应IP地址,接下来,浏览器会请求获得IP地址对应的网站服务器,网站服务器接收到客户的请求并响应处理(此处的处理可能是数百台集群的服务器系统,也可能是一台云主机),将客户请求的内容返回给客户端浏览器。到现在为止,一次访问浏览网页的完整过程就完成了。

提示:上述仅仅是客户端用户第一次访问网站的基本过程,连续访问后,系统本地和LDNS层级都会有缓存记录,再访问时流程就会有些变化,会直接取本地缓存记录,这样访问过程就很快了。
(1)查看windows客户端本地缓存的DNS解析记录的命令
C:\Users\benet> ipconfig /displaydns //display the contents of the DNS Resolve Cache
Windows IP 配置

conf.wsm.360.cn

记录名称. . . . . . . : conf.wsm.360.cn
记录类型. . . . . . . : 1
生存时间. . . . . . . : 26
数据长度. . . . . . . : 4
部分. . . . . . . . . : 答案
A (主机)记录 . . . . : 221.130.200.53

  1. 清除windows客户端本地缓存的DNS解析记录的命令
    C:\Users\benet>ipconfig /flushdns
    Windows IP 配置
    已成功刷新 DNS 解析缓存。

1.2.1 HTTP协议
HTTP协议,全称为HyperText Transfer Protocol,中文名为超文本传输协议,是互联网中最常用的一种网络协议。HTTP的重要应用之一是www服务。设计HTTP协议最初的目的就是提供一种发布和接收HTML (一种页面标记语言)页面的方法。
HTTP协议是互联网上常用的通信协议之一。它有很多的应用,但最流行的就是用于Web浏览器和Web服务器之间的通信,即www应用或称Web应用。
WWW,全称为World Wide Web,常称为Web,中文译为“万维网”。它是目前互联网上最受用户欢迎的信息服务形式。HTTP协议的www服务应用的默认端口为80,另外一个加密的www服务应用https的默认端口为443,主要用于网银、支付等和钱相关的业务。
TCP:传输控制协议,
UPD:用户数据报协议

1.2.2 HTTP协议版本
HTTP协议从诞生之初到现已经经历厂若干个版本,其中最主要的版本为HTTP/1.0, HTTP/1.1。HTTP/1.0是第一个得到广泛使用的版本,而HTTP/1.1为当前伸用的主流版本。
1、HTTP/1.0简介
HTTP/1.0是第一个得到广泛使用的HTTP版本,HTTP/1.0在HTTP/0.9的基础上增加了HTTP请求头,可支持更多的请求方法,并且能对多媒体对象进行处理。HTTP/1.0使得包含生动图片的Web页面和交互式表格成为可能,而正是这些页面和表格促使互联网被人们广泛地接受。HTTP/1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立个TCP连接,服务器完成请求处理后即断开TCP连接,服务器不跟踪每个客户,也不记录过去的请求。
2. HTTP/1.1简介
HTTP 1.1的重点是修复HTTP设计中的缺陷,从可扩展性、缓存处理、带宽优化、持久连接、host头、错误通知、消息传递、内容协商等多个方面都做了相关改进。HTTP/1.1是当前互联网主流的HTTP版本。
在连接方面,HTTP/1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和时间延迟。
在请求头方面, HTTP/1.1增加了更多的请求头和响应头信息,用以增强HTTP功能。例如: host主机头功能,可以让Web浏览器使用主机头名来明确表示要访问服务器上的哪个Web站点,这样就可以使用Web服务器在同一个IP地址和端口号上配置多个虚拟Web站点。
HTTP/1.1的持久连接,也需要增加新的请求头来帮助实现,例如, Connection请求头的值为Keep-Alive时,表示客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,表示客户端通知服务器返回本次请求结果后关闭连接。HTTP/1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头等。

1.2.3 HTTP请求方法
在HTTP通信中,每个HTTP请求报文都包含一个方法。用以告诉Web服务器端需要执行哪些具体的动作,这些动作包括:获取指定Web页面、提交内容到服务器、删除服务器上资源文件等,这些HTTP请求报文中包含的方法被称为HTTP请求方法。
HTTP方法有以下几种:

  1. 、GET: 客户端请求指定资源信息,服务器返回指定资源。
  2. 、HEAD:只请求响应报文中的HTTP首部。
  3. 、POST:将客户端的数据提交到服务器。
  4. 、PUT:用从客户端向服务器传送的数据取代指定的文档内容。
  5. 、DELETE:请求服务器删除Request-URI所标识的资源
  6. 、MOVE:请求服务器将指定的页面移至另一个网络地址。

1.2.4 HTTP状态码
1、HTTP状态码介绍
HTTP状态码( HTTP Status Code)是用来表示Web服务器响应HTTP请求状态的数字代码。每当Web客户端向Web服务器发送一个HTTP请求时,Web服务器都会返回一个状态响应代码。这个状态码是一个三位数字代码,作用是告知Web客户端此次请求是否成功,或者是否要采取其他的动作方式。
HTTP协议1.1版本中的状态码可以分为五大类。
状态码范围:
100~199:用于指定客户端应相应的某些动作
200~299:用于表示请求成功
300~399:用于已经移动的文件,并且常被包含在定位头信息中指定的地址信息
400~499:用于指出客户端的错误
500~599:用于指出服务器的错误

HTTP响应的状态码种类很多,但是在实际生产环境中,经常遇到的状态码却不是很多,我们来看看常见的一些状态码。
200 – OK :服务器成功返回页面,这是成功的HTTP请求返回的标准状态码
301 – Moved Permanently :永久跳转,所请求的网页将永久跳转到被设定的新位置,例如:从www.kgc.cn跳转到www.kgc.com
403 – Forbidden :禁止访问,虽然这个请求是合法的,但是服务器端因为匹配了预先设置的规则而拒绝响应客户端的请求,此类问题一般为服务器或服务权限配置不当。
404 – Not Found : 服务器找不到客户端请求的指定页面,可能是客户端请求了服务器上不存在的资源。
500 – Internal Server Error :内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求。这是一个较为笼统的报错,一般为服务器的设置或内部程序问题导致例如:SELinux开启,而又没有为HTTP设置规则许可,客户端访问就是500。
502 – Bad Gateway :坏的网关,一般是代理服务器请求后端服务时,后端服务不可用或没有完成响应网关服务器。这通常为反向代理服务器下面的节点出问题所致。
503 – Service Unavailable : 服务当前不可用,可能是服务器超载或停机维护导致的,或者是反向代理服务器后面没有可以提供服务的节点。
504 – Gateway Timeout : 网关超时,一般是网关代理服务器请求后端服务时,后端服务没有在特定的时间内完成处理请求。多数是服务器过载导致没有在指定的时间内返回数据给前端代理服务器。

  1. HTTP状态码的命令行查看
    可以通过curl命令,curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
    [root@localhost ~]# curl -I www.baidu.com // -I:只显示请求头信息
    HTTP/1.1 200 OK
    Server: openresty
    Date: Thu, 22 Feb 2018 03:37:31 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 127686
    Connection: keep-alive //保持连接
    Vary: Accept-Encoding //访问权限
    Last-Modified: Thu, 22 Feb 2018 02:22:47 GMT //上次最后修改时间
    Vary: Accept-Encoding //访问状态
    ETag: “5a8e2977-1f2c6”
    X-Server: www.baidu.com
    Accept-Ranges: bytes
    X-Server: izwz95kki96pw0j3ilyld1z

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

  1. HTTP请求报文(Request Message)介绍
    HTTP请求报文由请求行、请求头部(header)、空行和请求报文主体几个部分组成
    (1)请求行
    请求行是请求报文的第一行,用来说明客户端想要做什么。内容由请求方法字段、URL字段和HTTP协议版本字段组成,它们之间用空格分隔。

(2)请求头部
请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“.”分隔。请求头部的作用是通过客户端把请求的相关信息告诉给服务器。与请求报文相关的最常用的请求头是Content-Type和Content-Length。

(3)空行
最后一个请求头部信息之后是一个空行,通过发送回车符和换行符,通知Web服务器空行以下不会有请求头部的信息了。

(4)请求报文主体
请求报文主体中包括了要发送给Web服务器的数据信息。请求报文主体不会应用于HTTP的GET命令方法,而是应用于POST方法。 POST方法适用于需要客户填写表单的场合。

  1. HTTP响应报文(Response Message)介绍
    HTTP响应报文由起始行、响应头部(heder)、空行和响应报文主体这几个部分组成,和HTTP请求报文格式类似。
    (1)起始行
    响应报文的起始行也叫状态行,用来说明服务器响应客户端请求的状况。一般为协议及版本号、数字状态码、状态情况。例如: HTTP/1.1 200 OK。

(2)响应头部
和请求报文类似,起始行的后面一般有若干个头部字段。每个头部字段都包含一个名
字和一个值,两者之间用冒号分隔。头部结尾也是以一个空行结束的。常见的头部信息有:
Content-Type: text/html; charset-utf-8等 键值对

(3)空行
最后一个响应头部信息之后是一个空行,通过发送回车符和换行符,通知客户端空行下文无头部信息了。

(4)响应报文主体
响应报文主体中装载了要返回给客户端的数据。这些数据可以是文本,也可以是二进制的(如图片、视频)。

Web服务器接受到请求后,返回一条HTTP响应报文,这条响应报文中包含了HTTP的版本号 (HTTP/1.1 )、成功的状态码( 200)、状态描述(OK),以及 若干个响应头部字段,,在所有这些内容之后跟着包含了所请求资源的响应主体。Content-Length首部说明响应主体的长度,Content-Type 首部说明文档的MIME类型。

1.2.6 HTTP协议原理及重点分析
HTTP协议属OSI模型中的第七层应用层协议。HTTP协议的重要应用就是www服务应用。以HTTP协议进行通信时,需要有客户端(即终端用户)和服务器端(即Web服务器),在Web客户端问Web服务器发送请求报文之前,先要通过TCP/IP协议在Web客户端和服务器
之间建立一个TCP/IP连接。
• 整个HTTP协议请求的工作流程:
(1)终端客户在Web浏览器地址栏输人访问地址http://www.kgc.cn/index.html
(2)Web浏览器请求DNS服务器把域名www.kgc.cn转换成Web服务器的IP地址,此处的解析过程就是DNS解析的原理流程。
(3)Web浏览器将端口号 (默认是80)从访问地址(URL)中解析出来。
(4)Web浏器通过解析后的IP地址及端11号与Web服务器之间建立一条TCP连接。
(5)建立TCP连接后,Web浏览器问Web服务器发送一条HTTP请求报文。
(6)Web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。
(7)Web服务器关闭HTTP连接,关闭TCP连接,Web浏览器显示访问的网站内容到屏幕上。

1.3 HTTP资源
1.3.1 媒体类型
互联网上的数据有很多不同的类型, Web服务器会把通过Web传输的每个对象都打上MIME类型(即MIME type)的数据格式标签。最初设计MIME ( Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME在电子邮件系统中工作得非常好,后来,HTTP也支持了这个功能,用它来描述数据并标记不同的数据内容类型。
当Web服务器响应HTTP请求时,会为每一个HTTP对象数据加一个MIME类型。当Web浏览器获取到服务器返回的对象时,会去查看相关的MIME类型,并进行相应处理。
MIME类型存在于HTTP响应报文的响应头部信息里,它是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。
MIME 类型 文件类型
text/html html、htm文本类型
text/css css文本类型
image/xml xml文本类型
Image/json 交互式文档
image/gif gif图像类型
image/jpeg jpeg、jpg图像类型
video/mp4 MP4视频类型
video/quicktime mov视频
application/javascript js文本类型
video/x-msvideo avi视频类型
… …
常见的几种MIME类型 还有很多

1.3.2 URL介绍
URL,全称为Uniform Resource Location,中文翻译为统一资源定位符,也被称为,网页地址(网址)。如同门牌一样,它是因特网上标准的资源唯一地址。通俗地说, URL是Internet上用来描述信息资源的字符串,主要用在各种www客户端和服务器程序上。URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。严格来讲,每个URL都是一个URI,它标识一个互联网资源,并指定对其进行操作或取得该资源的方法。
URL的格式由下列三部分组成:
第一部分是协议,例如:http。
第二部分是主机资源服务器IP地址或域名(端口号),例如: www.kgc.cn
第三部分是主机资源的具体地址,如目录和文件名等,例如: teacher/index.html
第一部分和第二部分之间用“

web和httpd协议相关推荐

  1. Apache Web Server - httpd 的文档根目录 及 访问控制

    Apache Web Server -> httpd 的文档根目录 及 访问控制 1 文档根目录  DocumentRoot 2 默认页面的定义 DirectoryIndex 3 页面的访问属性 ...

  2. Web 和http协议

    Web 和http协议 1.1HTTP服务的重要基础 1.1.1 用户访问网站基本流程 DNS hosts ---- 本地缓存-----LDNS----根DNS 1.1HTTP服务的重要基础 1.1. ...

  3. NFS共享存储(用于内网) httpd协议 nginx 两种上传方式 区别

    文章目录 NFS共享存储(用于内网) 什么是NFS 为什么使用NFS 常见的数据存储方式 NFS的作用 测试:nginx页面展示 NFS原理 NFS配置详解 开机自动挂载 案例(nginx上传) ba ...

  4. CHAPTER 3 Web Server - httpd配置(二)

    Web Server - httpd配置二 3.1 httpd配置 3.1.1 基于用户的访问控制 3.1.2 basic认证配置示例 1. 添加用户 2. 添加网页文件 3. 定义安全域 4. 修改 ...

  5. Docker安装Apache与运行简单的web服务——httpd helloworld

    Docker运行简单的web服务--httpd helloworld目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker运行简单的web ...

  6. Exchange Web Service(EWS) 协议同步邮件

    Exchange Web Service(EWS) 协议 EWS是微软实现的一种客户端和服务器之间的交换信息的协议.Exchange Server提供了包括从电子邮件.会议安排.团体日程管理.任务管理 ...

  7. python 全栈开发,Day66(web应用,http协议简介,web框架)

    一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...

  8. java web七:http协议

    HTTP协议用于定义客户端与web服务器通讯的格式. telnet 还可以这么玩: 1. 首选启动一个tomcat.  2. 然后如下命令连接. 3. 按下clrl+] 组合键,再按回车键, 再输入如 ...

  9. linux安装web服务器httpd,Linux_linux构建动态WEB服务器安装篇,基本配置 安装web服务器:httpd-2. - phpStudy...

    linux构建动态WEB服务器安装篇 基本配置 安装web服务器:httpd-2.X.X 先优化吧 根据CPU设置变量 #export CFLAGS="-O2 -march=pentium4 ...

最新文章

  1. windows 下使用caffy_折腾下Windows下的Elasticsearch安装与使用
  2. 【Java源码分析】Vector源码分析
  3. hdu1589(枚举+并查集)
  4. 【CentOS7】【docker】常用操作命令
  5. OA(part2)--Outlier Evaluation Techniques
  6. Tensorflow——placeholder(矩阵运算小实例)
  7. 二建公路工程知识总结_2020二建公路实务:专题突破+高分攻略,拿分90稳过二建...
  8. 沟通的重要工具——乔哈里视窗
  9. 无线路由器破解教程-CDlinux(by 星空武哥)
  10. java 罗马数字_罗马数字 | 学步园
  11. 学习java 的第一节课
  12. 计算机系统关机后自动重启,小白教你电脑关机后自动重启是什么原因
  13. Go语言和Java的面向对象比较
  14. 典型竞赛关卡结构分析
  15. wxpython问卷调查界面_7步教你搭建智能问卷调查系统
  16. [VisualStudio实战]VS2013 ERROR C2011 C2375 C2059 C3805 C3861问题解决
  17. 利用mkdocs部署静态网页至GitHubpages(更新版)
  18. 全新ThihkPHP开发聚合支付系统兼容易支付系统网站源码
  19. kindeditor支持视频flv, mp4格式视频上传播放
  20. 泛型的拆箱与装箱解读

热门文章

  1. 1148: 组合三位数之一 C语言
  2. 剩余运算符和展开运算符
  3. SAP采购订单控制价格是否可以修改增强 LV69AFZZ
  4. html5微信自动播放视频,科技常识:HTML5页面音视频在微信和app下自动播放的实现方法...
  5. STM32 CAN模块问题:1、CAN收发器断电后重新上电,CAN模块死机(离线)现象;2、过滤器配置完之后没有过滤效果
  6. 遇到类似的问题,linux cp 参数过长问题---转载
  7. [BZOJ2069][POI2004]ZAW
  8. 科林明伦杯 - B Time
  9. TestCenter测试管理工具功能详解三(H)
  10. Claymore挖矿软件参数说明