完善3.1小节

This commit is contained in:
astaxie
2012-09-05 10:27:55 +08:00
parent 7bee147d97
commit 84719da93b
2 changed files with 45 additions and 7 deletions

52
3.1.md
View File

@@ -17,15 +17,50 @@ Web服务器的工作原理简单的可以归纳为
一个简单的事务处理事件就是这样实现的,看起来很复杂,做起来其实是挺简单的,需要注意的是客户机与服务器之间的通信是非连接的,也就是当服务器发送了应答后就与客户机断开连接,等待下一次请求。
##URL和DNS解析
我们浏览网页都是通过URL访问的那么URL到底是怎么样的呢
##HTTP协议
HTTP是一种让Web服务器与浏览器(客户端)通过Internet发送与接收数据的协议。它是一个请求、响应协议--客户端发出一个请求服务器响应这个请求。HTTP运用可靠的TCP连接通常用TCP的80端口。
URL(Uniform Resource Locator)地址用于描述一个网络上的资源, 基本格式如下
在HTTP中客户端总是通过建立一个连接与发送一个HTTP请求来发起一个事务。服务器不能主动去与客户端联系也不能给客户端发出一个回调连接。客户端与服务器端都可以提前中断一个连接。例如当用一个浏览器下载一个文件时你可以通过点击“停止”键来中断文件的下载关闭与服务器的HTTP连接。http协议使Web服务器和浏览器可以通过Web交换数据。它是一种请求/响应协议即服务器等待并响应客户方请求。HTTP不维护与客户端的连接它使用可靠的TCP连接通常采用TCP的80端口。
schema://host[:port#]/path/.../[?query-string][#anchor]
scheme 指定低层使用的协议(例如http, https, ftp)
host HTTP服务器的IP地址或者域名
port# HTTP服务器的默认端口是80这种情况下端口号可以省略。如果使用了别的端口必须指明例如 http://www.cnblogs.com:8080/
path 访问资源的路径
query-string 发送给http服务器的数据
anchor 锚
因为HTTP协议是建立在TCP协议之上的因此TCP攻击一样会影响HTTP的通讯例如比较常见的一些攻击SYN Flood是当前最流行的DoS拒绝服务攻击与DdoS分布式拒绝服务攻击的方式之一这是一种利用TCP协议缺陷发送大量伪造的TCP连接请求从而使得被攻击方资源耗尽CPU满负荷或内存不足的攻击方式
DNS( Domain Name System)是“域名系统”的英文缩写是一种组织成域层次结构的计算机和网络服务命名系统它用于TCP/IP网络它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”它的基本工作原理可用下图来表示
##HTTP请求信息(浏览器信息)
![](images/3.1.dns.png?raw=true)
DNS解析的过程如下这个过程有助于我们理解DNS的工作模式
1、在浏览器中输入www.qq.com域名操作系统会先检查自己本地的hosts文件是否有这个网址映射关系如果有就先调用这个IP地址映射完成域名解析。
2、如果hosts里没有这个域名的映射则查找本地DNS解析器缓存是否有这个网址映射关系如果有直接返回完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系首先会找TCP/IP参数中设置的首选DNS服务器在此我们叫它本地DNS服务器此服务器收到查询时如果要查询的域名包含在本地配置区域资源中则返回解析结果给客户机完成域名解析此解析具有权威性。
4、如果要查询的域名不由本地DNS服务器区域解析但该服务器已缓存了此网址映射关系则调用这个IP地址映射完成域名解析此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效则根据本地DNS服务器的设置是否设置转发器进行查询如果未用转发模式本地DNS就把请求发至13台根DNS根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后如果自己无法解析它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后就会找qq.com域服务器重复上面的动作进行查询直至找到www.qq.com主机。
6、如果用的是转发模式此DNS服务器就会把请求转发至上一级DNS服务器由上一级服务器进行解析上一级服务器如果不能解析或找根DNS或把转请求转至上上级以此循环。不管是本地DNS服务器用是是转发还是根提示最后都是把结果返回给本地DNS服务器由此DNS服务器再返回给客户机。
通过上面的步骤我们最后获取的是IP地址也就是浏览器最后发起请求的时候是基于IP来和服务器做信息交互的。
##HTTP协议详解
HTTP协议是Web工作的核心所以要了解清楚Web的工作方式就需要详细的了解清楚HTTP是怎么样工作的。
HTTP是一种让Web服务器与浏览器(客户端)通过Internet发送与接收数据的协议,它建立在TCP协议之上一般采用TCP的80端口。它是一个请求、响应协议--客户端发出一个请求服务器响应这个请求。在HTTP中客户端总是通过建立一个连接与发送一个HTTP请求来发起一个事务。服务器不能主动去与客户端联系也不能给客户端发出一个回调连接。客户端与服务器端都可以提前中断一个连接。例如当浏览器下载一个文件时你可以通过点击“停止”键来中断文件的下载关闭与服务器的HTTP连接。
HTTP协议是无状态的同一个客户端的这次请求和上次请求是没有对应关系对HTTP服务器来说它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态。
>HTTP协议是建立在TCP协议之上的因此TCP攻击一样会影响HTTP的通讯例如比较常见的一些攻击SYN Flood是当前最流行的DoS拒绝服务攻击与DdoS分布式拒绝服务攻击的方式之一这是一种利用TCP协议缺陷发送大量伪造的TCP连接请求从而使得被攻击方资源耗尽CPU满负荷或内存不足的攻击方式。
###HTTP请求信息(浏览器信息)
- 请求行GET/POST(流的组织(请求)方式) URL(地址+目录) 版本号
- 请求头:
@@ -37,7 +72,7 @@ HTTP是一种让Web服务器与浏览器(客户端)通过Internet发送与接收
- 空行:分割请求头和消息体
- 消息体:请求的参数
##HTTP响应信息(服务器信息)
###HTTP响应信息(服务器信息)
- 状态行HTTP版本 服务器状态(比如404找不到...) 描述信息
- 响应头
@@ -46,9 +81,12 @@ HTTP是一种让Web服务器与浏览器(客户端)通过Internet发送与接收
Server服务器类型
- 消息体:服务器发送给客户端的页面内容
##请求实例
![](images/3.1.web.png?raw=true)
上面这张图我们可以了解到整个的通讯过程同时细心的读者是否注意到了一点一个URL请求但是左边栏里面为什么会有那么多的资源请求。
上面这张图我们可以了解到整个的通讯过程同时细心的读者是否注意到了一点一个URL请求但是左边栏里面为什么会有那么多的资源请求(这些都是静态文件go对于静态文件有专门的处理方式)
这个就是浏览器的功能第一次请求url服务器端返回的是html页面然后浏览器开始渲染html当解析到src里面的img资源、css资源、js资源浏览器就会自动发起http请求把需要的资源从服务器请求回来然后浏览器就会宣布渲染出来这样就是完整展现在我们面前的一个网页了。

BIN
images/3.1.dns.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB