人人都能看懂的网络访问之HTTP、HTTPS

准备写几篇文章,通过一些通俗的方式,聊聊我们整个网络访问的过程是怎么样的,HTTP,HTTPS,TCP,DNS等协议又有哪些设计巧妙的地方。这个主要说明HTTP请求的流程和一些细节。

浏览器访问域名

绝大多数用户都应该 不止一次的用过百度,那咱就从浏览器输入 www.baidu.com 去访问百度主页说起。一般我们普通用户,要访问 www.baidu.com,是需要有个web浏览器的,比如说ie浏览器,Google浏览器等等,这些浏览器归根到底都是一个普通的应用,也就是应用层,人如其名,对于用户来说就是一个普通的客户端软件。当然它除了访问一些地址主页,还可以上传、下载文件等等。在移动终端上也是一样,比如各个手机厂家自带的浏览器,百度浏览器,UC浏览器等等,也是一样的,就是一个应用,Application。所以我们后面 就通过电脑浏览器来说明。

1.URL

上面提到了一个词“网址”,也就是URL(Uniform Resource Locator 统一资源定位符),虽然我们在浏览器输入的是 www.baidu.com,但是实际上在 浏览器在前面会自动加上一个 http:// 这样一个开头,当然还有其他开头,比如上面说的通过浏览器上传下载时可能会用到“ftp:”,“file:”等。整个“http://www.baidu.com”就是一个URL。

通过URL的实际意思,大概可以明白,它就是以用来查找某个资源的,只是这个资源在你想要访问的服务器上。我把它理解成一个路径,这个路径下面保存着我们想要看的某些文件,比如我们的电脑C盘里面有很多文件,每个文件都有自己唯一的路径。URL 中 会包含服务器的域名和要访问的文件的路径名、用户名、密码、服务器端口号等,其中部分可以省略 。一个完整 的URL如下:

 

2. 浏览器怎么处理URL

我们通过浏览器是想看到百度主页的,不是看 www.baidu.com 域名的,浏览器想要显示主页,就需要按照URL的组成和规则去解析,看到底是访问什么资源。因为全世界的URL是一样的,就像全世界的5号电池一样大,我们的兰博基尼在生产的时候只知道自己安装5号电池,不需要考虑电池匹配的问题,因为所有人都是按照这个规格来生产5号电池的。解析URL其实就是按照URL的组成部分来挨个做处理,去哪里找-web服务器名,找什么-资源文件的路径。如下图:

但是有个疑问,我们开始访问百度主页的时候也没有这些什么文件路径啊?这里是因为URL可以设置默认的访问资源,当我们不输入完整的文件路径时,就去找默认的文件,设计的精妙之处就在这里,因为URL知道大家 要找某个资源,而且拿百度来说,大家都访问的是主页,那我们就设置一个默认的,默认的当然可以不用写,我们普通用户也不需要知道默认的是什么,只知道可以打开百度主页就可以了。这样不仅便于大家记忆,最重要的是可以节省非常多的数据传输。

一般省略的情况有下面这些:

        (1)http://www.baidu.com/dir/

        这里其实是在 dir 文件夹下面有个默认的文件,一般是 index.html或者default.html。

        (2)http://www.baidu.com/

        同理,这里是在根目录 / 下面有个默认的文件,一般是 index.html或者default.html。

        (3)http://www.baidu.com

        跟第(2)中情况一样,这里是在根目录 / 下面有个默认的文件,一般是 index.html或者default.html。能省则省。

        (4)http://www.baidu.com/test

        这种情况有点特殊,这个test不一定是文件夹还是文件,都有可能,一般服务器会在访问的时候会先按照 test 是文件去查找,如果test这个文件存在,那按照文件处理,不存在的话在按照文件夹去找,都找不到,那就报错404-找不到网。

这里可能还有个问题,怎么通过域名就能找到服务器呢,大家知道,我们上网用的是IP地址,我们可以把它理解成一个一个的计算机,那服务器也对应着一个IP,其实就是一个计算机。如何通过web服务器的名字,也就是域名,找到这个IP地址,这里涉及到DNS域名解析,在其他文章再详细说明。

3. HTTP协议到底是怎么回事

HTTP协议,也就是访问网络必须要遵守的一种规则,这个规则规定了客户端和服务器消息交互的内容和处理步骤。也就是说所有的HTTP请求必须按照这个规则来,传什么内容,通过那几部传输。

消息内容,主要包含两部分:对什么进行怎样的操作。 对什么,就是说我们处理的资源是什么。进行怎样的操作,是指通过什么方式访问这些资源,即让服务器怎么处理。因为HTTP提供了很多访问资源的方式,见下图:

 比如我们访问百度主页,内容就是百度主页,即默认的 /index.html。进行的操作,也就是获取这个内容,一般是GET,的访问过程大概就是这样的:首先,在请求消息中写上 GET 方法, 然后在 URI 中写上存放网页数据的文件名“/index.html”,这就表示我 们需要获取 /dir1/file1.html 文件中的数据。当 Web 服务器收到消息后,会 打开 /dir1/file1.html 文件并读取出里面的数据,然后将读出的数据存放到 响应消息中,并返回给客户端。最后,客户端浏览器会收到这些数据并显 示在屏幕上。

4. HTTP的格式

HTTP有非常严格或者说严谨的格式要求,不是随便输入一个“http:/kajljshflihrgi”就可以正常请求的,我们看下HTTP的格式具体是什么样的,如下图:

分为三部分:请求头,消息头,消息体。

        请求行:请求消息的第一行,主要是说明请求的内容,格式为

        <方法> <空格> <URI> <空格> <HTTP版本号>

        比如: GET www.baidu.com/index.html HTTP/1.1,大概已经说明了 对什么,进行怎么样的操作

        消息头:虽然请求行里面大致说明了这次请求想要做什么,但是一次请求,肯定还需要记录其他详细的信息,比如访问时间(哪天哪小时哪分哪秒),消息体的编码格式,客户端名称和版本(百度浏览器还是Google浏览器还是什么浏览器),身份认证数据等等。格式为

        <字段名>:<字段值>

        注意,最后必须留一个空行,来表示消息头结束。

        消息体:表示整个请求消息的主体。是可以省略的,比如GET请求,通过请求行和消息头就可以明白这个请求想要做什么,不需要有消息体。但是像淘宝购物这些就不行,商品的品牌,分类,价格,颜色等等都需要在消息体里面增加。

5. HTTPS又是什么

通过上面我们大概了解了什么是HTTP,但是HTTPS是什么呢,简单理解就是更加安全的HTTP。现在互联网环境非常复杂,只通过HTTP请求不够安全,有很多专业方法可以截取请求,重组后请求等等来获取我们的请求数据,HTTPS就是在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性,主要是HTTP + TLS/SSL。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值