1,概述

当你打开一个浏览器则会进入一个主页,也许你会想只是打开了浏览器罢了,但是浏览器默默的把这个主页默认的网址发送出去,你只是不知道而已,你只是没有输入而已。我们来做个实验。

1,双击打开

2,可以看到

注意输入网址的框中会显示百度的首页的网址。

实际上看这里

看到常规这一栏里面有我设置的默认主页。

因此当打开一个浏览器时,它会根据设置的默认主页的的网址向服务器发送请求。

那么平常我们说的这个网址到底是什么呢?实际上在计算机科学术语里面叫URL.

ULR(Uniform Resource Locator):统一资源定位符。它的功能就是定位因特网上的资源,并可使用不同的协议去访问。一般来说一个URL本身只代表了某个资源在服务器上的位置,并不能获取资源,当你使用浏览器输入某个ULR时,浏览器会代我们向服务器发送一个请求,请求的正是这个ULR所定位的资源,如果一切正常,服务器则会向我们返回我们需要的结果,正像你输入https://www.baidu.com/ 那么你会看到服务器给你返回一个百度首页面。

我来举个例子说明一下。假如你有一个电话本,里面有许多电话号码,这些电话号码会定位不同的人吧?对了URL其实也可以类比这里的电话号码。因为URL其实定位的是许多资源。

电话号码------URL

1,电话号码可以定位某个人;URL可以定位某个资源。

2,电话号码不拨出去的话根本得不到别人的应答;URL如果没有通过浏览器发送出去自然也得不到任何结果。所以这两者有个重要的特点,就是只标识某个人或者资源,必须通过拨打或者发送请求才可以通知到对方。

3,由第二条我们想到把这些发送号码或者URL发送出去需要一个介质,即就是电话和浏览器。

4,打电话的时候假如这个号码被注销了(以前还在使用),类比到URL现在所定位的那个资源现在不存在(以前存在过),那么电话自然也打不通,使用浏览器访问的资源也访问不到。

5,第四条只是举个简单的例子,但是实际上打电话和访问某个资源过程是大不相同的,总体来讲就是出现某种情况打不通电话,也会有访问不到某个资源,这是一种发送URL不成功的例子。

6,大多数情况电话打通了,你就和那个电话号码定位的人建立了连接,自然如果正常的情况,你使用浏览器发送的URL达到了服务器,也就是那个资源存在的地方,那么你和服务器也建立了连接。

7,当双方建立了连接,自然双发可以打电话,也可以访问服务器上的资源。

2,URL的语法

上面说明了使用URL就可以获取服务器上的资源,那么这个过程是怎么样的呢?这就需要知道URL的语法。

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

上面的URL的内容比较多,其实一般不会都用到的,你看百度首页呢?https://www.baidu.com/只是一个协议和主机。

说明:

scheme:方案,也许大家很奇怪这个方案是什么,其实就是我们经常看的比如说http协议这样的。它规定了只能使用某些协议。

https://www.baidu.com/ 比如这个https就是一个方案,他是https协议,有一点需要注意的是协议名称不区分大小写。

用户名和密码:某些协议需要使用用户名和密码。比如ftp协议。如下图,假如不输入用户名和密码,会有个提示输入的窗口。

其实也可以按照URL的格式来:这里没有输入端口号,其实ftp协议有自己默认的端口号21,所以可以不输入。

当一切输入完成的时候可以发送请求进入网页,此时我们关注这里:

主机和端口:主机就是可以标识一个服务器的标志,可以是个主机名称(比如说百度首页URL:https://www.baidu.com/的主机就是www.baidu.com),也可以是个IP,其实这个www.baidu.com实际上和某个IP是对应的,在发送这个URL的时候会把www.baidu.com解析成IP。主机和端口定位某个资源的大体位置,端口对本服务器某个服务进行监控,外界也只有通过这个端口才可以和这个服务器进行通信。如下图,一个服务器有两个服务,各有一个端口,每个服务都有一些资源。如何要访问到服务器的服务2中的资源2?首先要访问到该服务器,用IP,何如访问到服务2呢?使用端口2,如何找到资源2呢?其实资源存放的是有路径的,这就需要使用下面的这种格式:<scheme>://<host>:<port>/<path>;比如:http://liulanqi.baidu.com/80/index.html这个URL使用http协议,通过主机liulanqi.baidu.com访问到某个服务器,这里端口没有,http协议的端口默认为80,可以不写上。通过主机和端口可以访问到服务,后面的80/index.html可以找到某个特定的资源。

参数:通过上面的分析,我们已经可以访问到某个资源了,其实事实上还有诸多问题,比如某个协议访问某个资源使用不同的方式,就可能导致出错。比如图片在服务器使用二进制存放,而ftp协议传输资源如果使用文本形式,那就会出错,这个时候要说明一下我们要用二进制形式传输资源,这个时候参数就很重要。

ftp://prep.ai.mit.edu/pub/gnu;type=d  这里面的type=d就是参数,他是由参数名称和相对应的值组成。其中使用分号“;”和前面的路径区分开。

查询字符串:主要的功能是如果查询某个资源,可以使用特殊的方式减少搜索范围,比如资源是数据库的内容,可以通过查询字符串来使得判断范围更小。

http://www.joes-hardware.com/inventory-check.cgi?item=12731 这里面的item=12731就是查询字符串,他是由名称和相对应的值组成。其中使用问号“?”和前面的内容区分开。多个名值对使用&隔开。

片段:其实这里面的这个片段的作用就是减少显示的内容。假如一个资源比较大,比如说某个html页面有很多内容,我们只需要让其显示某些指定的内容,这就需要使用片段。但是要注意的是:从服务器发送过来的HTML资源是完整的,只是显示在浏览器上是按照指定的内容显示。

最新文章

  1. CSS3动画属性animation的用法
  2. iOS Xcode 调试技巧 全局断点这样加才有意思
  3. 二维数组的传输 (host &lt;-&gt; device)
  4. Java I/O学习(一)
  5. 【二分】XMU 1587 中位数
  6. ionic for mac 新建与调试
  7. 第二部分 条件控制执行语句、循环语句、switch语句、跳转语句和其它语句
  8. bzoj2125 最短路
  9. linux 用户密码到期导致ftp业务失败
  10. SpringBoot的幕后推手...
  11. Linux并发执行很简单,这么干就对了
  12. python import win32clipboard 报错DLL load failed: %1 不是有效的 Win32 应用程序。
  13. java中的URLConnection和HttpURLConnection有什么区别(因为我自己搜到别人写的区别看下来都没有什么区别)
  14. Maven核心简析
  15. listener单点登录和在线人数
  16. Chosen三级联动
  17. BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡:贪心【最小匹配代价】
  18. js 正则表达式 验证小数点后几位
  19. MySql基础学习-Sql约束
  20. python 生成器与迭代器(yield 用法)

热门文章

  1. JS中数组Array的用法
  2. 3.Sqrt(x)
  3. Mantis 1.2.19 on Windows Server 2012 r2 datacenter 安装及配置随笔
  4. uploadify图片上传发生Security Error
  5. HTTP 权威指南
  6. oracle必须启动哪些服务?
  7. zookeeper节点失效重连机制
  8. 开发常用小demo 整理
  9. python3抓取到的拉勾数据统计
  10. Mysql 存储过程基本语法