From 84719da93b51388c28cf16be445e49b2782b1a0b Mon Sep 17 00:00:00 2001 From: astaxie Date: Wed, 5 Sep 2012 10:27:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=843.1=E5=B0=8F=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3.1.md | 52 +++++++++++++++++++++++++++++++++++++++------ images/3.1.dns.png | Bin 0 -> 7066 bytes 2 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 images/3.1.dns.png diff --git a/3.1.md b/3.1.md index 9698eaba..404f6304 100644 --- a/3.1.md +++ b/3.1.md @@ -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请求,把需要的资源从服务器请求回来,然后浏览器就会宣布渲染出来,这样就是完整展现在我们面前的一个网页了。 diff --git a/images/3.1.dns.png b/images/3.1.dns.png new file mode 100644 index 0000000000000000000000000000000000000000..895e91cf142eccdf169e56f162b62acf2de76ad7 GIT binary patch literal 7066 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 TpkV@_v<7-2uPRsi$Ry}LpL@>q literal 0 HcmV?d00001