美文网首页python学习实践
Django新手教程3,从URL开始,聊聊网络服务 (1)

Django新手教程3,从URL开始,聊聊网络服务 (1)

作者: 立而人 | 来源:发表于2017-06-10 09:51 被阅读49次

    终于,我们要开始django的征程了,才怪,本教材作为一本高大上的系列文章,就是要剑走偏锋,咱们先聊聊别的。
    就聊聊URL吧。因为,对于任何网络项目来说,这很关键。
    URL,Universal Resource Locator 统一资源定位符,你对计算机,对网络知识接触比较多的话。或许还听说过URI啥的,其实差不多一个意思,那到底都是什么玩意呢,通俗地讲,根据这个东西,你可以找到你想要的资源,所有的资源都可以通过它来定位。
    咱们先说说一台独立的计算机的资源(文件和文件夹)如何定位。请按win+E

    image.png

    如果你点击那个栏目,你就可以看到一个这东西

    无标题.jpg

    这个就是所谓的资源定位符,帮助我们定位计算机的资源包括文档,图片,视频等。
    为什么叫统一定位符呢,因为一个资源对应一个路径,一个路径对应一个资源,不可能存在一个资源两个路径,如果你复制一个资源到别的路径,那么这个复制品会被当成另一个资源,而一个路径定位到唯一的文件,
    值得注意的是,对于URL来说,文件夹和文件是统一的,他们是一样的表示方式,我们都把他们称之为资源。

    比如,我们在D盘的根目录,新建一个存放我们这次项目代码的文件夹,那么我们的项目文件夹,对应的URL
    D:/django_project
    假如我们将来在你里面放了一张图片,比如我们的logo.png
    那么它对应的的URL,就是
    D:/django_project/logo.png

    就这样,通过URL,文件系统可以定位存在硬盘中的文件和文件夹,插入的优盘的文件,放入的光盘的文件,可以说,整个的文件系统就是建立在URL的基础之上的,无论是windows还是linux都是这样的基本的理论,只是他们实现的方法不一样。实际上,这些文件系统的思想是源于生活中的收纳系统的,或者说是容器系统,一个容器(文件夹)里面装着很多小容器(文件夹)或者小玩意(文件),而容器本身又包含在一个更大的容器之中,最后,所有的容器都包含在一个巨大的容器中(根目录),我们的C盘,D盘,E盘就是一个个巨大的容器。事实上,图形界面也是这样设计的,一开始,我们看到了桌面。实际上处在的是c:/user/me/desktop 这个文件夹中,我们在桌面看到的文件和文件夹,都是desktop的子目录。

    再谈谈联网的资源定位。
    联网的目的就是资源共享,说白了就是我有好东西想给你看。那么别人就得依靠定位符来定位放在网络上的文件,这样才能访问这个资源,其实联网的资源定位也很好理解,无非就是在单机版的URL前面加上区分不同计算机的标识符就可以了,这些前缀标识符可以当作是所有根目录的父目录,一个比巨大容器更大的容器,比如我们的django项目的定位就是
    ”我的计算机/D:/django_project/mysite“,既然是我们自己的计算机,那么我们可以简称为
    ”D:/django_project/mysite“
    如果隔壁老王也在做这个项目,那么项目文件夹的定位符就应该是
    ”老王的计算机/D:/django_project/mysite“
    问题来了,这世界上的隔壁老王千千万万,出现重名是个大问题,于是,我们不用计算机名来定位资源,而是用IP地址,因为IP是分配的不是自己起的,每个人分配到的ip都不一样,所以就不会重名了,假设我们ip是192.0.0.2
    那么我们的项目文件夹的定位符就是
    192.0.0.2/D:/django_project
    还是简称
    D:/django_project
    隔壁老王ip是192.0.0.3,那么项目资源的URL就是
    192.0.0.3/D:/django_project
    远一点的老李家ip是192.0.0.20,项目资源的URL就是
    192.0.0.20/D:/django_project
    你在自己的浏览器或者资源管理器的输入栏里敲入
    D:/django_project
    可以进入到我们自己的项目文件夹。
    但是,你在浏览器,或者资源管理器的输入栏里敲入
    192.0.0.3/D:/django_project
    理论上,就可以进入老王家的项目文件夹了。
    想得太美了。
    你真的能进入到隔壁老王的项目文件夹吗?肯定是不行的,这涉及到隐私问题,万一隔壁老王不务正业,项目搭起后就放弃了,悄悄在里面下载了不少葫芦娃的影片呢,他不想共享这些好看的资源的。
    我们把计算机比作一座大房子,URL记载了各个房间物品,比如,我们想看一本书《演员的自我修养》,那么我们就要根据URL找到书房在哪,然后还是得依靠URL得知《演员的自我修养》在书架的哪个地方。
    出了房子就不是我们的势力范围之内了,比如说隔壁老王家,首先,你不知道他家房子里面长啥样(是widnows样式的房子还是linux样式的房子,从外面看不出来的,都是铁皮疙瘩),一般来说,个人计算机都是windows系统,但是即使老王也用windows,我们还是不知道老王家各个房间是怎么设计的,有多少间房间(说不定老王家只有C盘,一间房),C盘上有哪些文件夹(就像我们知道正常人家都有厨房厕所一样,老王家的C盘肯定会有Program Files,Windows等文件夹,而其他的就不得而知了),造成这些未知的主要的原因,就是我们不能进入老王家,准确的说不能随便进入老王家(能这么做的我们称之为黑客)。因为就算我们能进老王家,那也只能待在特定的区域,比如客厅,撑死了给你去卫生间上一下厕所,当然,你要是修理工,或清洁工,老王就会开放权限,让你到各个房间转转,当然这时候比较敏感的东西都藏起来了,如若不然,请参考人民摄影艺术家陈先生的悲痛教训。
    我们之前提过,之所以要联网,是因为需要资源共享,或者说,你所以在市政筹钱修路的时候愿意交钱,也愿意把路修到家门口,是因为想四处转转,接触好的资源,我们进一步分析上网这件事,我们要从两方面去考究,资源发布方和资源享受方。
    老王(资源发布方)才华横溢,写的诗很好,于是装裱起来,挂在客厅里,吸引游客(资源享受方)来观看(是的,家用住宅的客厅可以当展厅用,对应的,个人windows家用计算机实际上也能提供网络服务),游客络绎不绝,老王便可以在客厅出卖广告位赚些润稿费,不过,随着来的人越来越多,他家要被挤爆,人山人海,大家卡在客厅进退两难,甚至路也很窄,卡在一起门都进不去,而且人多手杂,容易失窃,隐私也比较成问题(这就是为什么我们一般不用自己的计算机提供网络服务,个人电脑力不从心啊)。于是老王必须买或者租更大的房子,或者说是展馆,这种房子不仅大,设计上跟我们平常的家用房子不太一样(这种系统要么是windows server,要么是linux系统,反正不是家用windows系统),比如,这房子没有或者很少有卧室,而客厅非常大,厕所分男女,而且门口接的是宽敞的大道(这就是我们常规意义上的服务器,实际上,服务器也是计算机,只不过性能更强,容量更大,带宽更高,网速更快,装的是专门为网络服务的系统),有时候呢,老王要展示的诗不多,并不需要一整个展馆,于是只租展馆的一个展厅,甚至一个展位,他图的是这里宽敞的大道,有人清理厕所等公共服务(这就是所谓的VPS虚拟主机服务,服务器厂商将一个物理服务器分割成一个个虚拟主机,租给不同的公司,提供网络服务,比较适合资金紧缺的初创公司,和学生学习使用)。
    咱们再聊聊IP和端口。IP就是地址,用来寻找老王的展馆用的,Ip地址是四个数,比如老王家IP就是192.0.0.3,太难记了,很多人想拜访老王的展馆,但是,记不住IP号码啊,要是纯靠IP来找老王,实在是太反人类了,于是一个叫DNS,域名服务商的东西出现了,老王到域名服务商那里登记一下,把laowang.com和IP192.0.0.3绑定到一起,我们想访问老王只要敲入laowang.com然后我们的浏览器就是到域名服务商那里询问一下就得到老王的ip,这样就可以顺利访问老王的展馆了,你不禁要问了,为什么不直接靠域名laowang.com来定位,还要域名服务商中间插一手呢,这个我们之前说过的,URL就是靠IP来定位的,这是基本规则,也是路由器内部寻找其他计算机的基本规则(详情请自学思科的相关教程),域名啥的完全是为了符合人类的习惯创造出来的,对计算机来说利用价值不大,用它来做URL的规则计算机就会抗议,这玩意太反机器了,坚决抵制,还是四个数字字符比较优美。所以,机器层面,计算机之间相互寻找的时候靠的是ip,我们人类想找老王家的展馆就靠域名,DNS就是人类和机器调和的产物。
    而且,一台机器可以对应多个域名,这样就对不起URL统一的名号了,为什么一台机器我们需要对应多个域名?那是因为,万一有人访问老王的时候手残敲成lvmaowang.com,中间不小心多打了一两个字母,不就到别人的展馆去了吗,万一那人写的诗很烂,而游客以为是老王写的,这不是无意之间伤害了老王的名声了吗,所以老王越是有名越是要担心这些,索性,一股脑把跟wang字有关的域名全注册了,全部绑定到一个ip上来,这样你再怎么手残也会进入同一个展馆了,不仅网上这样,线下不也是一样的吗,公司的工商注册号是唯一的,但是,某公司几乎把跟米字有关的商标都注册了,像极了农民企业,粮食厂商:).此外,人家域名服务商可不是仅仅绑定域名和ip绑定,还能提供A记录服务,就是说,我对老王的主页上的诗(www.laowang.com)不感兴趣,但是我对老王展馆提供的物品存放服务(yunpan.laowang.com)计较感兴趣,于是我能够通过yunpan.laowang.com直接找到老王的物品寄放服务,这也是域名服务商的功劳。还值得一提的是,虽然每台机器只有一个IP,但是同样的网络服务可能需要多台机器,比如,老王名气越来越大,尤其是受到广大妇女的追捧,访问量之高,一个展馆已经已经接待不了这么多的访问了,于是,老王干脆买了很多展馆,展示的内容是一模一样的,这样可以分走客流量,为了让各个客流量较为平均,否则旱的旱死,涝的涝死,于是老王专门利用一个展馆,或者至少一个展馆的大房间做接待工作,把客人指引到不同的展馆去,这个负责接待的展馆就叫做负载均衡器。像马云家为了能满足双十一那样可怕的访问量,负载均衡做得妥妥的。

    相关文章

      网友评论

      • d243b9c0eadb:写的真的很好,通俗易懂,感觉稍微有一点这方面知识的人都可以看懂。举例也举得特别恰当。

      本文标题:Django新手教程3,从URL开始,聊聊网络服务 (1)

      本文链接:https://www.haomeiwen.com/subject/hiucfxtx.html