zoukankan      html  css  js  c++  java
  • 浏览器向服务器请求页面的原理

    我们经常用浏览器上网,但是大家想过没有在浏览器和服务器之间是怎么交互的吗?

    接下给大家说说web页面请求的原理(高手直接跳过)。

    首先我们不要把服务器想的太神圣了,其实他也就是一台 没有显示器的电脑,处理速度比普通电脑快罢了。

    服务器端安装的IIS软件,在客户端是浏览器;

    客户端: 

    当我们在浏览器输入网址并回车后,如果你是第一次访问这个网址例如www.itcast.cn,

    你的浏览器并不知道这个网站的IP,所以第一次请求时发向DNS服务器,

    DNS服务器查询到该网址对应的IP后,再给你发回,然后浏览器根据IP地址向www.itcast.cn对应的web服务器发送请求。

    服务器端:

    首先在服务器端有一个监听请求的东东,那是什么呢?是Socket,负责监听请求的Sockets发现有请求到达,

    他会根据socket.Accept()立即创建一个socket负责与发送请求的 浏览器进行通信(浏览器本来就是用socket与服务器通信的,

    因此浏览也就是一个socket),因为监听请求的的socket占用一个线程,因此我们也创建另一个线程专门处理客户端浏览器的请求。

    接下来分析请求的页面的路径和页面的类型:如果发现请求的是静态页面,我么直接读取静态页面页面,

    并生成响应报文头(text/html),通过socket发回给浏览器;如果请求的是图片的话,生成响应报文头(image/jpeg),

    和图片内容一起发回给客户端,想css,js之类的都是基本一样的处理方式;

    如果发送来的请求是动态页面,那服务器该怎么处理请求呢(IIS没有直接处理动态页面的能力),其实IIS是通过可扩展插件来处理的,

    例如asp.net做的动态页面是通过 netframework来处理的 ,其他的暂时不理会(偶不会啊)!当页面处理完毕后,

    将处理完的结果交给socket,由socket 发回给浏览器。

    如果客户端请求的页面在服务器端不存在,服务器给客户端发回的响应报文中提示有错误信息404,

    还有其他一些错误信息代码,在这里就不再多说了!

    关于.netFramework内部是怎么处理动态页面的,接下来的文章我会讲解的,敬请关注! 

  • 相关阅读:
    如何更改Linux yum源?
    Vsftp设置为PASV mode(被动模式传送)
    CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)
    centos6.3搭建FTP服务器图文教程
    Linux关闭/开启防火墙命令
    linux下火狐浏览器安装flash player插件
    判断网站织梦DedeCms版本的方法
    PHP获取当前url路径的函数及服务器变量
    leetcode 205 Isomorphic Strings
    leetcode 70 Climbing Stairs
  • 原文地址:https://www.cnblogs.com/linchong/p/2151735.html
Copyright © 2011-2022 走看看