zoukankan      html  css  js  c++  java
  • 网站是怎么显示出来的(转)

    首先用户要在浏览器上输入一个网址,然后浏览器会解析这个网址, 首先就要解析这个网址是以什么协议访问的,比如 http://www.baidu.com 这样的域名,这个域名就代表我们以HTTP协议来解析URL,在大学时我们常用FTP,比如 ftp://172.31.214.196 ,就代表以ftp发的方式发送请求。不同的协议有不同的解析网址的方式。比如http之后的一串英文就代表Web服务器域名,而mailto后面的一串英文就代表邮件地址。HTTP协议使我们日常上网的时候用的最多的协议,之后只以这个协议为例,不再说明。

    这里先简单介绍一下HTTP协议,HTTP协议是一套定义了客户端和服务器之间如何交互的协议,比如客户端发送请求的信息是什么格式,服务器如何解析对应的数据,服务器返回的数据应该是什么格式之类的。

    以客户端向服务器发送请求来说,HTTP协议定义了请求信息中要有两个东西,一个是对服务器哪个资源发送请求,一个是对这个资源发送什么样的请求。

    比如说,我们向http://www.baidu.com/loginl发送一个GET请求,一般表明我们要获取http://www.baidu.com/login这个资源,如果我们向这个路径发送一个POST请求,一般是我们要向服务器更新一些资源。

    HTTP协议中有哪些类型的请求以及发送的请求信息是什么样的,请读者自己查询网络资料。

    注:一般来说GET请求是获取某些资源,POST请求是向服务器更新某些资源,不过这都由服务器的管理者来决定,管理者可以决定你向这个资源发GET请求表明着向服务器更新信息,也可以让你发POST请求代表获取信息,各种请求只是HTTP协议中定义了这些,GET代表获取,POST代表更新是约定俗成而已,并不一定是这样的操作。

    浏览器获解析完URL就可以获取到资源路径,也就是上面说的“对哪个资源发送请求”,然后就要知道我们发送的是一个什么请求,如果什么都没定义,那默认就是GET请求,想要发送其他的请求,比如POST请求,PUT请求,一般是要填写网站给出的表单,表单具体发送请求由网站代码编写者来定义,比如登录表单,程序员可以定义为POST请求,那你填写完就会发送一个POST请求,如果定义为PUT请求,那你填写完就是发送了一个PUT请求。

    有了资源路径和请求类型,我们就要生成请求信息了,就是让服务器知道你要对哪个资源发送请求和请求类型。这个请求信息包含很多东西,比如请求类型,资源路径,HTTP版本等等等等,很多的东西,同时HTTP协议对这个请求信息的格式有很严格的要求,这个信息放哪里,那个信息放哪里,他们在哪一行等等,都有很严格的要求,请求信息格式本来是很重要的,但是本文重点不在于此,读者若有兴趣请自行了解。

    接下来我们就要将这个请求信息发送给服务器了,可是怎么发呢,如果读者有了解,可能会知道一个域名后面可能有很多服务器,那我们要发送给哪一个服务器呢?我们现在只有一个域名,我们要通过域名获取到服务器的IP地址,才能成功的将请求信息发出去。接下来我们就要向DNS服务器来查询Web服务器的IP地址了。

    最简化的流程:你的机器向离你机器最近的DNS服务器发出询问:“域名为xxxxxx的服务器的IP地址是多少”,DNS服务器就告诉你它的IP地址了。

    注:一般地理位置最近的服务器速度是最快的

    这个询问的过程依靠的是操作系统的Socket库,你可能在很多编程语言中都见过这个库的名字,因为篇幅原因这里不多介绍,感兴趣的读者可以自行了解。

    我们有了IP地址就可以发送请求信息了,信息发送出去之后,服务器接收到信息,服务器根据HTTP协议对请求信息的定义规则来解析这个请求信息,然后服务器会返回给客户端一个响应信息,里面也有很多信息,里面有我们很常见的状态码,比如我们常见的404错误,或者500错误,这都是状态码的一部分。响应信息还有服务器决定返回给客户端的数据,除此之外响应信息还有很多很多东西,同时响应信息的格式也是由HTTP协议定义的,具体内容和格式我们不讲,请读者自行了解。

    服务器给你返回了响应信息,你的浏览器就开始按照HTTP协议对响应信息的定义规则解析响应信息了,之后判断是什么文件,如果是HTML文件要显示在哪儿,如果是JS文件一般要执行,是图片文件一般要放在页面上,最终就显示在了你的页面上。

     原文地址:https://www.yuque.com/realsky/anything/aa3yaf

  • 相关阅读:
    第二十九课 循环链表的实现
    第二十八课 再论智能指针(下)
    第二十七课 再论智能指针(上)
    第二十六课 典型问题分析(Bugfix)
    普通new和placement new的重载
    leetcode 581. Shortest Unsorted Continuous Subarray
    leetcode 605. Can Place Flowers
    leetcode 219. Contains Duplicate II
    leetcode 283. Move Zeroes
    leetcode 217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/cyx-b/p/12940237.html
Copyright © 2011-2022 走看看