Internet History,Technology,and Security -Technology: Application Protocols(Week7)

Week7

Technology: Application Protocols

This week, we’ll be covering application protocols. With reliable “pipes” available from the Transport layer, we can build applications like web browsers, file transfer applications, or email clients and servers.前端

时间飞逝,这周咱们将学习技术层次的最后一周,在这周里,教授讲解了最后一层Application Layer的内容,同时也说到了我之前的特别感兴趣的”Hacker”,正如每一个男生内心都有一个武侠梦,每个IT男内心都有一个Hacker梦。哈哈哈web

Layer 4: Applications


 

Application Layer

学习了前三周,咱们知道,TCP/IP模型前三层,层层相扣,互相弥补,缺一不可。哪么你其实也能够推测出,第四层也是这样的,依赖于第三层TCP层。TCP层的服务为应用层提供了可靠、有序的端到端数据流。能够从一台电脑中一个应用程序开始,到另外一台电脑的应用中结束并可提供双向交流。在咱们获得了这样的框架后,咱们应该怎么去使用它?在平常通讯中,咱们该如何请求数据?浏览器

在上图中,两侧都有Application方框。通常来讲,一侧表明用户,另外一侧表明服务器。客户端给咱们信息,而服务器负责给客户端提供信息,因此客户端常常要发出请求,而后服务器回应请求,这之间的消息传递就是咱们以前所学习的四个层次。所以,咱们能够基于这个原理创建邮件系统、万维网或者咱们能够观看流视频。这时候就要重点提一下万维网了,它基于上面所说的原理,总体简洁且优雅,能够说是最为人所熟知的一个概念,虽然也有不少其余的协议存在,可是万维网协议是最广泛的协议。服务器

Application Layer有两个基本问题:网络

1.Which application gets the data?并发

  • Ports

2.What are the rules for talking with application?app

  • Protocols

Ports

所谓的端口,就好像是门牌号同样,客户端能够经过ip地址找到对应的服务器端,可是服务器端是有不少端口的,每一个应用程序对应一个端口号,经过相似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每一个端口进行了编号,这就是端口号框架

IANA(Internet Assigned Number Authority,互联网地址分配机构)维护了端口分配列表,分三类:学习

第一类:0-1023,众所周知的端口。由IANA控制和分配,特定的网络程序使用,例如:TCP协议使用80端口来完成http协议传输。优化

第二类:1024-49151,登记端口。不禁IANA控制,但IANA维护了登记表,不该该在程序中使用,若是没有冲突状况下也是能够由用户程序使用。

第三类:49152-65535,私有端口。能够由普通用户程序使用。

经常使用的端口

Application Protocols

服务器有许多端口,分别起着不一样的做用。而一旦咱们和网络服务器、邮箱服务器或邮局服务器有了链接,咱们就得了解如何和它进行沟通,这就是所谓的应用协议(Application protocols)。这也就是咱们要面对的第二个问题,与应用程序交谈的规则是什么?TCP提供了可靠的链接,咱们如今能够经过端口连向想要的的服务器,而如今的问题是:咱们在整次链接中要说些什么?说什么?谁先说?须要发送些什么内容?而这取决于你进行对话的是哪类服务器,例如在视频中,就是使用万维网服务器。

HTTP - Hypertext Transport Protocol

HTTP,超文本传输协议,是一个简单的请求-响应协议,它一般运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及获得什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具备一个相似MIME的格式。万维网服务器和客户端的交流就是采用了HTTP协议。下面老师给咱们演示了一下HTTP协议响应机制。

当你点击一个运行在你电脑中的客户端client的一个link,浏览器就会和web server 链接并发送一个请求,web server看到了就会返回请求,返回的document就会出如今客户端的桌面上。

Hacking HTTP

咱们知道,在现实生活中网络彷佛渐渐变得无所不能。但网络终究是死的,人是活的。在咱们了解协议的内容后,咱们就能够尝试去“攻击”网站,由于HTTP基本上是一个公共协议,它并无被高度保护,因此它也是较为容易被攻击的,Windows系统须要下载Telnet,其最终的目的就是欺骗服务器,让它认为咱们是浏览器,从而向咱们发送数据。若是你看过黑客帝国,你必定会被Hacker这么名词所吸引,it is so cool!小的时候,我也想过若是当一名Hacker必定很是精彩。哈哈哈。

Application Layer Summary

应用层,基于底部的三层,不考虑底部技术细节,把它们抽象一个简单的管子,连通客户和服务器。

应用层是一个体量丰富的层次,在这一层就有许许多多的应用了。咱们使用端口号,这样咱们就能够链接到同一服务器上面的不一样服务。

The Internet: An Amazing Design

介绍完Application Layer,咱们也讲完了四层模型。但很是难以想象的是,这些大部分都来自1970年代的研究工做,且如今都还在使用,随着NSFnet的出现,会有必定的调整,但关键性的调整也都是上个世纪八十年代的事了。但另外一方面,计算机的数量则大幅度增加,从1969年的6台到2011年的几十亿级别,他们仍在使用这最初的六台所使用的框架。当你看着如今的网络的时候,你可能会以为它像一个生物,有着鲜活的生命,它从蹒跚的小孩慢慢成长为腾飞的巨龙。

俗话说不完美的才是完美的。互联网诞生开始就是不完美的。在互联网诞生之际,咱们并无给它设置一个上限,而是让它慢慢的成长,给他良好的扩张性,而这样也使得它慢慢变得无比巨大。这很像在修仙小说里修道同样。每一个人的道都是不同的,一味的模仿就像给它设置了一个限制。模仿永远不会有超越。只有经过本身的成长,才能有本身的道。

Van Jacobson - Content Centered Networking


当咱们写到这里,咱们对互联网技术层次的介绍就要接近尾声了。咱们讲了互联网的历史,互联网现有的技术,在接近尾声之际,教授则想要引起咱们对互联网将来的展望,对互联网将来的思考。你知道的,过去终究是过去,咱们只有面向将来才会有更好的发展。在三十年以前,你根本没法想象,互联网的的出现会给世界带来如此大的变化,固然你也没法想象将来20年世界是怎么样的,所以咱们须要不断的进步,不断地优化,不断地推陈出新。这也是教师给咱们看这个视频的意义所在。你知道的,Van Jacobson 是一个天才,他的想法不少时候都领先于当时的世界,如今就让咱们来看看他的想法。

Van在当时,提出了一个对将来互联网的设想——Content Centric Networking(内容中心网络),Van认为咱们如今面临着大量的关于拓展性问题,他想把以信息为中心的网络模型,和以主机为中心的TCP/IP模型整合到一块儿。

网络最开始只是电脑的一个电话系统,但随着需求的增长,ARPnet诞生了,它能够不须要像电话线路同样知道全部结点,它只须要知道消息发送的下一个结点,就能把数据发送出去,而到了二十一世纪后,网络又有了新的发展。

但这些彷佛都和最开始的电话模型没什么关系,这给Van带来了很大的冲击,这让他发出疑问:若是咱们放弃18世纪的电话模型,把注意力放在电线里传输的信息,而不是电线自己,会怎么样? 咱们能不能把web看成通信的基础,而不只仅是一个覆盖在TCP/IP上的一层? 例如,你能够在你的我的网站上面发布一个视频,可是你必须得寄但愿于它的点击量不是特别大,由于若是点击量过大,你的连接配额将彻底饱和。那么你的互联网供应商(ISP)就会立刻关闭它,这就是 Slashdot 效应。现现在,你能够看到像YouTube、谷歌、亚马逊、脸书、推特都拥有着庞大的用户群,它们都是用一个IP地址代表本身,看起来就像只有一个地点,可是对于一个拥有数亿用户的单一地点来讲,在对话模型下,它的通讯量将跟用户数量同比增加,好比你正在更新推特或者上传视频,你想让数百万人看到,但你无法把它放到对话模型中。

因此,Van 他们花了许多的时间来让网络误觉得只有一个地点,网络层的信息在性质上与姓名,身份信息一致,只是它随机的分散在整个分组里。这样他们有了源地址和目的地址,它的前部被网络层调用,端口做为更深层次的应用层调用,以及序列号,让应用从新组装成一个大的单元,URL的整个分层都要使用它,而不是只有传输的部分。若是你把源地址,端口,序列号,URL均整合到了一块儿,这些就是信息的特定名称(the name of the information)。若是每个分组都有一个名字在上面,全部的信息都包含在其中,你随时能够查看它,只须要保证数据的前端工做是正常的。

你没必要关心这些数据是从哪里得到的,你只须要关心数据自己,而不是它的来源。若是咱们有两我的同时在看同一个视频,那么最靠近咱们的上游网关会把一份拷贝发给我,把另外一份如出一辙的视频拷贝发给你,它们都要经过那一个网关的内存,由于这个对话的抽象概念的存在,网关并不知道,咱们看的是相同的视频,它看到的是两个不一样的对话,它无法看着它的内存,而后说:“哦!我有这个数据,我能够直接给你。”它必需要从新拿到一个新的拷贝,并且要从YouTube那里一路传下来,致使这种槽糕的拓展性的缘由,是由于负载的拓展性或者说用户数量严格地跟数据有关,并且数据只能有一个源头。反过来若是你只关心数据自己 那么你沿着数据的源头方向去找。只要你在路上找到了这个数据,意味着你已经有了它的拷贝,那么这个数据的传送任务也就完成了。

Think after class

  • 化繁为简。在Week5中,咱们提到了Packet-switching,它的核心理念就是将一个庞大的数据分解成一个个小的数据,解决了网络堵塞的问题。其实在生活中咱们也能够贯彻这样的想法。好比你要求天天被50个单词,哪么你就能够分红早上10个,中午10个,旁晚10个,晚上10个,睡觉10个。在生活中,这是一个很适用的方法。
  • 分而化之,专而一之。在TCP/IP的模型中,咱们知道每层都趋于专门化,这层只负责这个功能,哪层只负责哪层功能,这样极大的提升了效率而且也使得每层更专业,这让我想到了一句话,术业有专攻。人的精力是有限的,若是咱们想要作出什么成就,应该专注且坚决不移地坚持下去。若是老是囫囵吞枣,终究上不得台面。
  • .若是要解决一个问题,就要了解事物的本质。在Hacking HTTP这节中,咱们知道了协议的内容,咱们就能够根据协议内容而攻击服务器,正所谓,知彼知己,百战不殆。

PS:(时间过的好快,转眼间技术层次就学完了。在这三周里,学到了不少干货。在计算机导论课堂上,老师也提到了TCP/IP模型等内容,但只是说了专有名词,而在这三周的内容则是加深和扩张了我对网络的了解。还有课后思考,如今的我只能作出哲理型思考,而不能作出技术型思考,你知道的技术须要专业的知识,并且只是一个嗷嗷待哺的小雏鹰,但愿我在将来能早日作出对技术的思考,同时将思考转化为成果。加油!)

相关文章
相关标签/搜索