http://hi.baidu.com/ywqme/item/b5297014b2e58f4e6826bb74

概述

  普通网民打开网页,访问网站,并不需要了解所谓HTTP协议。作为软件工程师,了解一下浏览器的工作过程还是一件比较有意思的事情。我向大家介绍一下当我们在浏览器的地址栏里面回车的时候,浏览器如何和Web服务器通信。

  DNS域名解析

  浏览器第一步做的是DNS域名解析。域名解析的主要作用是将域名转换成IP地址。例如www.sina.com.cn就是域名,202.108.33.81就是IP地址。Windows有个命令叫nslookup,就是域名解析命令。

  

  通过nslookup,我们发现新浪域名解析出好多IP地址,新浪Web网站规模大,所以Web服务器比较多,通过多台Web服务器解决负载问题。

  建立Socket连接

  第二步是和Web服务器建立Socket连接。Web服务器缺省是80端口。我们在地址栏里面输入http://www.sina.com.cn,浏览器连接202.108.33.81服务器的80端口。如果Web服务器不是80端口,例如8080端口,我们需要输入http://www.sina.com.cn:8080。

  HTTP请求和响应

  第三步是浏览器通过Socket向Web服务器发送HTTP请求,接收HTTP响应。HTTP协议比较复杂,下面是一个HTT请求的例子:

  Host:rss.sina.com.cn

  User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14

  Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

  Accept-Language:zh-cn,zh;q=0.5

  Accept-Encoding:gzip,deflate

  Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7

  Keep-Alive:300

  Connection:keep-alive

  Cookie:userId=C5bYpXrimdmsiQmsBPnE1Vn8ZQmdWSm3WRlEB3vRwTnRtW <-- Cookie

  If-Modified-Since:Sun, 01 Jun 2008 12:05:30 GMT

  Cache-Control:max-age=0

  HTTP 响应消息头部实例:

  Status:OK - 200

  Date:Sun, 01 Jun 2008 12:35:47 GMT

  Server:Apache/2.0.61 (Unix)

  Last-Modified:Sun, 01 Jun 2008 12:35:30 GMT

  Accept-Ranges:bytes

  Content-Length:18616

  Cache-Control:max-age=120

  Expires:Sun, 01 Jun 2008 12:37:47 GMT

  Content-Type:application/xml

  Age:2

  Connection:close

  下载网页文本内容

  第四步浏览器下载网页文本内容,网页文本中标记着图片、CSS文件和Flash等等。浏览器分析出这些内容后开4个线程对这些内容进行下载,显示在屏幕上。

[转]浏览器如何和Web服务器通信的更多相关文章

  1. 无法在Web服务器上启动调试,与Web服务器通信时出现身份验证错误

    问题描述: 我使用的是修改hosts,模拟真实网址来进行调试的.具体是这样的:我修改hosts文件,把某个域名,如www.163.com映射为127.0.0.1,然后在IIS信息管理器中,创建一个网站 ...

  2. 利用XMLHttpRequest(XHR)对象实现与web服务器通信

    XMLHttpRequest对象:XMLHttpRequest是一个JS对象,页面利用它与web服务器通信.XHR对象的基本思想是让JS代码自己发送请求,以便随时获取数据,这种请求是异步的,也就是说请 ...

  3. 网络安全从入门到精通(第一章-1)Web服务器通信原理

    本文内容 IP地址 域名 端口 HTTP协议 从访客角度看网页浏览器流程 常见服务器系统 路径 Web容器 常见的Web容器 !!!多动手,多动手,只看只听是不行的!!! 1,IP地址:就是计算机在互 ...

  4. http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤

    http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: (1)    建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成 ...

  5. 关于Web服务器的认识

    马上就要毕业了,也要开始找工作了,大学写了这么多代码了,却没有好好总结一下常用的概念很是遗憾额,就通过这篇博客记录一下我最常用的一些知识好了. 说到Web服务器,有很多文章都介绍的很好,之前看到一篇非 ...

  6. 【WEB】一个简单的WEB服务器

    WEB 服务器如何工作的?   HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从H ...

  7. C#中使用Socket实现简单Web服务器

    上一篇博客中介绍了怎样使用socket访问web服务器.关键有两个: 熟悉Socket编程: 熟悉HTTP协议. 上一篇主要是通过socket来模拟浏览器向(任何)Web服务器发送(HTTP)请求,重 ...

  8. C#中使用Socket请求Web服务器过程

    最开始我们需要明白一件事情,因为这是这篇文章的前提: HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的.因此,浏览器访问Web服务器的过程必须先有“连接建立”的发生. 而有人或许会问: ...

  9. 详谈socket请求Web服务器过程

    最开始我们需要明白一件事情,因为这是这篇文章的前提: HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的.因此,浏览器访问Web服务器的过程必须先有“连接建立”的发生. 而有人或许会问: ...

随机推荐

  1. PL/SQL Developer远程连接Oracle数据库

    首先打开电脑,到pl/sql安装的指定目录[D:\app\DZL\product\11.2.0\dbhome_1\NETWORK\ADMIN]找到[tnsnames.ora]     打开[tnsna ...

  2. iOS如何准确获取通知

    iOS获取通知需要注意以下三个地方iOS 设备收到一条推送(APNs),用户点击推送通知打开应用时,应用程序根据状态不同进行处理需在 AppDelegate 中的以下两个方法中添加代码以获取apn内容 ...

  3. Java设计模式(学习整理)---工厂模式

    1.工厂模式 1.1 为什么使用工厂模式? 因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时 ...

  4. SGU 134.Centroid(图心)

    SGU链接: 时间限制:0.25s 空间限制:4M 题意: 给出一个树(节点数<=16000),一个节点的重量定义为从树中去除这个点后,新得到的所有树中节点最多的树的节点数.树的中心定义为所有节 ...

  5. 代码bug

    1.webstorm ide未配置basePath本地会加入根路径 2.点击一次就销毁可以给标签设置一个值data-val="0" 某个函数只执行一次的方法,或者也可以考虑绑用on ...

  6. js中的潜伏者之Arguments对象

    argument 说明: 在JavaScript中,arguments是对象的一个特殊属性.arguments对象就像数组,但是它却不是数组.可以理解为他是潜伏者,通俗的说,就是你传的参数不一定按照参 ...

  7. Android 应用层知识纲要

    Java基础 * 面向对象 * Java集合框架 * 异常处理 * Java反射, Spring框架,通过反射实现 * 泛型, 静态变成语言 * 文件操作 Android基础 * Activity * ...

  8. 利用Python读取Matlab的Mat文件内容

    手头有别人写的Matlab程序,其中用到了Mat文件.现在不想安装Matlab,却又想读取Mat文件内容,该怎么办呢? 感谢scipy!!! import scipy.io data = scipy. ...

  9. Notepad++插件之TextFX

    Technorati 标记: notepad   Notepad++插件TextFX Characters是一款默认安装的插件,由于功能强大,被编程爱好者认为是最好的Notepad++插件,第二名是L ...

  10. 在Eclipse中安装m2e插件遇到的问题

    最近自己想使用maven来搭建自动化测试框架,当中遇到了很多问题,其中之一就是安装m2e(Maven Integration for Eclipse). 其实原来的eclipse中已经安装好了m2e, ...