`
jacksonren1987
  • 浏览: 37513 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

浅谈web请求过程--《深入分析Java_Web技术内幕》试读

 
阅读更多

       网络在生活中无处不在,购物、看书、浏览新闻、聊天,我们几乎把大部分的时间都用在了网络上。那么,当你输入一个网址开始浏览的时候,你有想过这个url请求的处理过程么?

 

       工作之中,无论是在做web安全,还是做网站性能,对于上面的问题,都要有一个基本的认识。本书的试读章节详细的介绍了这个web请求过程。

 

       当一个用户在浏览器里输入一个个URL 时,将会发生很多操作。首先它会请求DNS 把这个域名解析成对应的IP 地址,然后根据这个IP 地址在互联网上找到对应的服务器,向这个服务器发起一个get 请求,由这个服务器决定返回默认的数据资源给访问的用户。在服务器端实际上还有很复杂的业务逻辑:服务器可能有很多台,到底指定哪台服务器来处理请求,这需要一个负载均衡设备来平均分配所有用户的请求;还有请求的数据是存储在分布式缓存里还是一个静态文件中,或是在数据库里;当数据返回浏览器时,浏览器解析数据发现还有一些静态资源(如CSSJS 或者图片)时又会发起另外的HTTP 请求,而这些请求很可能会在CDN 上,那么CDN 服务器又会处理这个用户的请求,大体上一个用户请求会涉及这么多的操作。每一个细节都会影响这个请求最终是否会成功。

 

       所以尽管我们看到的是发出一个url,最终返回一个网页,但是中间的过程却是很复杂的,涉及着http协议、dns解析、cdn工作等一系列服务单元和处理。

 

       我对于web安全方面关注的更多一些,所以我在这就谈谈http协议的相关内容。

       HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。

 

       为了更好的了解http协议,我们可以用telnet并打开回显功能,来观察http协议的通讯过程。

比如说我们举个简单例子:

 

1、打开telnet

1.1 打开telnet

运行-->cmd-->telnet

 

1.2 打开telnet回显功能

set localecho

 

2、连接服务器并发送请求

2.1 open

www.guet.edu.cn

80  //注意端口号不能省略

 

    HEAD /index.asp HTTP/1.0

    Host:www.guet.edu.cn

   

   /*我们可以变换请求方法,请求桂林电子主页内容,输入消息如下*/

    open

www.guet.edu.cn

80

  

    GET /index.asp HTTP/1.0  //请求资源的内容

    Host:www.guet.edu.cn 

 

2.2 open

www.sina.com.cn

80  //在命令提示符号下直接输入telnet

www.sina.com.cn

80

    HEAD /index.asp HTTP/1.0

    Host:www.sina.com.cn

 

3 实验结果:

 

3.1 请求信息2.1得到的响应是:

 

HTTP/1.1 200 OK                                              //请求成功

Server: Microsoft-IIS/5.0                                    //web服务器

Date: Thu,08 Mar 200707:17:51 GMT

Connection: Keep-Alive                                

Content-Length: 23330

Content-Type: text/html

Expries: Thu,08 Mar 2007 07:16:51 GMT

Set-Cookie: ASPSESSIONIDQAQBQQQB=BEJCDGKADEDJKLKKAJEOIMMH; path=/

Cache-control: private

 

//资源内容省略

 

3.2 请求信息2.2得到的响应是:

 

HTTP/1.0 404 Not Found       //请求失败

Date: Thu, 08 Mar 2007 07:50:50 GMT

Server: Apache/2.0.54 <Unix>

Last-Modified: Thu, 30 Nov 2006 11:35:41 GMT

ETag: "6277a-415-e7c76980"

Accept-Ranges: bytes

X-Powered-By: mod_xlayout_jh/0.0.1vhs.markII.remix

Vary: Accept-Encoding

Content-Type: text/html

X-Cache: MISS from zjm152-78.sina.com.cn

Via: 1.0 zjm152-78.sina.com.cn:80<squid/2.6.STABLES-20061207>

X-Cache: MISS from th-143.sina.com.cn

Connection: close

 

 

失去了跟主机的连接

 

 

上面就是http协议通讯的过程,我们可以看到相应的一些报头信息,从而更清楚明白的了解http协议。

 

除去http协议,我最感兴趣的便是负载均衡工作,因为在工作中网站流量过大时,必然需要上CDN(虽然成本略高~呵呵),但其实我对其工作原理并不甚了解。读完本章了解到CDN的工作原理如下:

 

一个用户访问某个静态文件(如CSS 文件),这个静态文件的域名假如是cdn.taobao.com,那么首先要向Local DNS 服务器发起请求,一般经过迭代解析后回到这个域名的注册服务器去解析,一般每个公司都会有一个DNS 解析服务器。这时这个DNS 解析服务器通常会把它重新CNAME 解析到另外一个域名,而这个域名最终会被指向CDN 全局中的DNS 负载均衡服务器,再由这个GTM 来最终分配是哪个地方的访问用户,返回给离这个访问用户最近的CDN 节点。

拿到 DNS 解析结果,用户就直接去这个CDN 节点访问这个静态文件了,如果这个节点中所请求的文件不存在,就会再回到源站去获取这个文件,然后再返回给用户。

 

 

这本书原理讲的非常清晰透彻,也期待本书中其他更为详尽的技术框架原理介绍,相信对于每个人都能学到很多知识。

分享到:
评论

相关推荐

    样章_Web开发秘方

    《Web开发秘方》是一本专门探讨Web开发技术的专业书籍,其试读样章提供了对全书内容的初步了解。样章通常包含书籍的目录、前言以及每一章节的开头部分,让潜在读者能够评估书中的主题覆盖范围、作者的写作风格以及...

    Java Web开发技术大全(电子书)

    本书《Java Web开发技术大全》无疑是深入学习这一领域的宝贵资源。以下将详细阐述Java Web开发中的核心知识点。 1. **Java基础**:在进入Web开发之前,首先需要掌握Java语言的基础知识,包括类、对象、接口、异常...

    竹林蹊径:深入浅出Windows驱动开发--试读样章

    《竹林蹊径:深入浅出Windows驱动开发》是一本专为想要深入了解Windows驱动程序开发的读者准备的技术书籍。试读样章可能包含了书中的关键章节,如第一章、第五章和附录B,分别以02.pdf、06.pdf和附录B .pdf的形式...

    Cortex-M3权威指南(中文)_opt1

    在翻译过程中,译者宋岩遵循了几个原则,以确保内容既准确又易于理解。首先,他力求使用简短、口语化的句子,以便于读者理解和吸收复杂的概念。其次,他运用多种修辞手法和生动的词汇,甚至融入网络用语和流行歌词,...

    [试读]Web组件分离 - 节选

    本文将深入探讨Web组件分离的重要性,分析其背后的逻辑,并提出具体的实施策略。 #### 组件分离:因材施教的Web世界 如同教育领域中的因材施教原则,Web组件分离强调根据每个组件的独特属性定制优化方案。在构建...

    实战Java高并发程序设计-试读

    《实战Java高并发程序设计》是一本专注于Java并发编程实践的书籍,试读版提供了前两章的内容,为读者提供了一个初步了解并发编程基础的窗口。在Java领域,并发编程是构建高性能、高效率系统的关键技术,对于软件开发...

    Web开发秘方_66页抢鲜试读_七印部落译.pdf

    《Web开发秘方》是一本专注于Web开发实用技巧的工具书,旨在帮助读者快速掌握Web设计和开发中所需的各种技巧。这本书内容全面,涵盖了用户界面设计、测试方法、CSS、jQuery等多个方面,非常适合C#和Web开发人员阅读...

    网络规划设计师考试考点分析与真题详解_试读.pdf

    网络规划设计师考试考点分析与真题详解_试读.pdf

    Java程序设计大学教程试读+课件(PDF)

    以Java语言为载体,通过讨论Java程序设计的一般过程和方法,重点讲述程序设计基础、面向对象程序设计、算法与数据结构、GUI程序设计和Web程序设计的知识,并涉及计算机科学基础、数据和控制、程序设计理论、软件工程...

    JESD209-4B_LPDDR4 中文注释解读.pdf

    数年经验化成一篇解读,不要让时间浪费在不断地寻找spec标准含义的过程中,而是站在经验者之上更上一层楼! 祝每个看过此文档的人都可以为"被某国打压的dram技术"增加技术储备! 解读示例: 1 Byte Mode: 什么是...

    Java语言程序设计(基础篇)(英文版·第10版)试读版

    《Java语言程序设计(基础篇)(英文版·第10版)》是...通过这个试读版,读者可以对Java编程有一个初步的认识,为进一步深入学习打下坚实的基础。如果对Java编程感兴趣,建议购买完整版教材,以便系统学习所有内容。

    USB应用开发实例详解-试读

    - **中止 I/O 端点的请求接口 IOCTL_ADAPT_ABORT_PIPE**:该接口用于中止指定 I/O 端点的请求,通过 `DeviceIoControl` 函数调用。 - **断开 USB 设备接口 IOCTL_ADAPT_CYCLE_PORT**:用于将 EZ-USB 设备从 USB ...

    java程序设计大学教程试读+课件.rar

    《Java程序设计大学教程》是一本专为大学学生和初学者设计的编程教材,它深入浅出地介绍了Java编程语言的基础知识和高级特性。通过学习这本教程,读者可以掌握编写高质量Java应用程序所需的关键技能。 在"Java程序...

    Developing Web Services with Apache CXF and Axis2_3rd Edition

    《开发Web服务:使用Apache CXF与Axis2》不仅是一本详尽的技术指南,也是一部实践手册,它通过丰富的示例和深入浅出的解释帮助读者快速掌握Web服务的核心技术和最佳实践。无论是初学者还是有经验的开发者,都能从中...

    玩转我的Android手机_目录_试读

    资源名称:玩转我的Android手机_目录_试读书本内容简介: 《玩转我的Android手机》内容简介:Android作为移动智能操作系统的杰出代表,具有无比强大的功能可扩展性。如何快速上手Android手机,让其为生活增添绚丽...

    Java程序设计大学教程试读+课件

    以Java语言为载体,通过讨论Java程序设计的一般过程和方法,重点讲述程序设计基础、面向对象程序设计、算法与数据结构、GUI程序设计和Web程序设计的知识,并涉及计算机科学基础、数据和控制、程序设计理论、软件工程...

    sunxin-Struts2试读

    Struts2是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化和可扩展的方式来构建动态网站。本试读资料可能包含了Struts2的基础概念、核心组件以及实际应用...

Global site tag (gtag.js) - Google Analytics