【Coursera】Seventh Week

Application Layer:Use the services of the TCP layer

Quick Review

Link Layer(Ethernet):gets the data onto the link,and manages collisions(冲突) on a single hops.
Internet Layer(IP):moves the data over one hop,trying to get it "closer" to its destination.
Transport Layer(TCP):Assumes that the Internet Layer may lose data,so request retransmission when needed -provide a nice reliable pipe from source to destination.

Application Protocol,Client-Server

在 TCP 给我们提供了可靠的管道传输(pipe)之后,接下来我们要根据它做什么呢?我们接下来要解决什么问题呢?

  • Mail
  • World Wide Web
  • Stream kitty videos


左边的方框(也就是我们的主机)的顶端 的应用程序 是 Client Application,右边的方框的顶端 的应用程序 是 Server Application。Client 就像:Hey,老兄,给我一些信息。Server 就有义务回复相关的信息。
Client 经常发出请求,而 Server 经常回复 Client 的请求。
所以,这种Client Server 机制,Application-to-Application communication,使得我们能够利用它 实现 Mail,World Wide Web,Stream Kitty Videos 等等。

Two Questions for Application Layer

Which application gets data?

  • Ports.

What are the rules for talking with that application?

  • Protocols.

Which application gets data? 我们通过使用 一种叫做 Ports 的机制解决了这个问题。ports 允许 IP地址,或者是一台主机,或者是一个服务器,同时使用多个 services。而且对于 Client 来说,ports 使得它 能够 dial up 就像电话分机一样,并且使用它们感兴趣的设备。
也就是说,通过端口号(ports number)来识别应用程序,把数据发送到对应的应用程序中。

Ports

Like extensions in telephone number.
The IP address network number(the area code) gets to the LAN(Local Area network).
The IP address host number(the telephone number) gets you to the destination machine.
The ports number(the extension) gets you to a specific application.

Ports 就像 telephone extension number 一样,更进一步的细化所属的对象。IP地址的 网络号,子网号,主机号,再到 现在的端口号,就是一步步细分的过程。

141.211.144.188 Port 25

TCP,Ports and connections


我们添加了一个服务器:www.umich.edu,它有一个IP地址:74.208.28.177 连接到网络上,在这个服务器上跑着许多的进程:比如sending email,Login to that server,检索网页等等。
有许多的端口号,比如接收的邮件在端口25实现···,所以这些个人电脑,不是连接到IP地址上,而上连接到这些IP地址的端口上。

Common TCP ports

Telnet(23) -login
SSH(22) -Secure login
HTTP(80)
HTTPS(443) -Secure
SMTP(25) (Mail)
IMAP(143/220/993) -Mail Retrieval(检索)
POP(109/110) -Mail Retrieval
DNS(53) -Domian Names
FTP(21) -File Transfer

Application Protocols:rules for conversations

在 TCP 给我们提供了可靠的管道传输(pipe)之后,接下来我们要根据它做什么呢?我们接下来要解决什么问题呢?

  • Mail
  • World Wide Web
  • Stream kitty videos

World Wide Web

HTTP -Hypertext Transport Protocol

在 Internet 上占优势的(dominant) Application Layer 协议。
为了 Web 而发明,检索(Retrieve) HTML, images, Documents 等等。
Extended to be data in addition to documents,-like RSS,Web Services,etc.
非常基础的概念:Creat a connection - Request a document - Retrieve the document - Close the connection.

World Wide Web Client 与 World Wide Web Sever 之间的连接使用 HTTP 协议。The client requests a document,the server feeds out the document. 这叫做 HTTP Request/Response Cycle.

你在游览器的网页上点击了一个链接,然后 游览器 建立了一个连接到服务器上,发送 HTTP Request,向服务器提要求:我要打开这个网页。服务器 审查了 HTTP Request,做出了回应,返回了一个文件,然后这个文件就在你的游览器上运行了,显示在你的屏幕上。
在我点击链接的瞬间,触发了以上的内容。
More details. 游览器 通过我点击的链接(URL),得到了命令。从服务器发回的 HTTP Response 文件实际上 是 HTML 文件,然后在游览器上运行。

Internet Standards

内部工作的 Internet 协议 的标准,是由 Internet Engineering Task Forces (IETF) 编写的。
www.ietf.org
这些标准,叫做 RFCs,Request for Comments.

Hacking HTTP

在 Windows 下需要安装 Telnet。或者直接在 MAC 上运行终端。

使用了 GET http://www.baidu.com HTTP/1.0命令,使得服务器误以为我们是游览器,发送一些信息。
哈哈,第一次尝试“黑客攻击”网站。

Bonus:Accurate Hacking Movies

Matric Reloaded
Bourne Ultimatum
Die Hard 4
你可以使用 Telnet 进行一些 hack 的尝试。

Application Layer Summary

We start with a "pipe" abstraction(抽象) -we can send and receive data on the same "socket". 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
We can optionally(随意地) add a security layer to TCP using SSL, Security Socket Layer (also known as TLS -Transport Layer Security).
We use well known "port number" so that applications can find a particular application within a server such as a mail server, web service, etc.

The Architecture of the Internet

1970s 时的一些思想,仍然在我们今天适用。NSFnet 发明之后,不断的进行了一些调整,但是持续性的 关键的 调整发生在 1980s 晚期。计算机领域爆炸性地增长,从1969年的6台 发展到 2011 年的 亿台,其中最令人难忘的是,这些简单的 层型结构,无论是六台 还是到现在的 亿台,仍然工作的很棒。
看着现在的网络,你就会觉得,它很像只动物,拥有 静脉结构,神经结构,甚至还有脉搏:

The Internet: An Amazing Design

Hundreds of millions of computers.
Thousands of routers inside the Internet.
Hundreds of millions of simultaneous(即时的) connections.
Trillions of bytes of data moved per second around the world.
And it works.

Internet 是有系统的,它并不完美,但是却结构完整。

End,but we are not done experimenting···

我们从 最初的大型计算机,二战使用的破译密码的机器,到在键盘上敲一些字母 用打字机打出来,再到目前,我们使用手机随时随地通过WiFi上网观看视频等等,层型的TCP/IP协议簇,层型的连接。
而这一切都还没有结束,在不久的将来,网络又会发展成为什么模样?再一次对 Van 的采访提出了一种可能性:Content-Centric Networking

Van Jacobson

我们现在面临着大量的拓展性问题,我们想把以信息为中心的网络模型与以主机为中心的TCP/IP协议簇整合到一起。
网络的发展过程:电脑的一个电话系统(使用电话线来建立通讯,交换系统通过节点间的联系,构建起长的链路) ---(通话的需求)---> ARPANET 能够应对不同带宽的网络,只需要确定下一个节点,把数据发送出去即可 -> 2000年左右,互联网大发展,根据人们在网络上的需求网络发生了巨大的改变。

网络让我们第一次看到,如果我们摒弃了沿用非常久的电话模型,把注意力集中在发送的数据上而不是电线本身 会怎么样。
Web的结构使得我们能够给数据做一些命名的工作。
我们目前所做的事情99%都与Web有关,这给重新设计一个 作为通讯基础 的模型带来了一定的困难。
例如,你可以在你的个人网站上面发布一个视频,但是你必须得寄希望于它的点击量不是特别大,因为如果点击量过大,你的链接配额将完全饱和。那么你的互联网供应商(ISP)就会马上关闭它,这就是 Slashdot 效应。
目前,Facebook,Twitter等等著名网站都有庞大的用户群,它们都是用一个IP地址表示自己,看起来就像只有一个地点一样。但是对于一个拥有过亿用户的地点,在对话模式下,通信量不断增长,比如你在Twitter上更新内容,你想让数亿的用户看到,但是你无法把它放到对话模型中。

信息的特定名称:URL,端口号,源地址的整合体

所以,Van 他们花了许多的时间来让网络误以为只有一个地点,网络层的信息在性质上与姓名,身份信息一致,只是它随机的分散在整个分组里。
我们有了源地址和目的地址(网络层IP数据报),它的前部被网络层调用,端口作为更深层次的应用层调用,以及序列号,让应用重新组装成一个大的单元。URL,应用的整个分层都要使用它。
如果你把源地址,端口,序列号,URL均整合到了一起,这些就是信息的特定名称(the name of the information)。
如果每一个分组都有一个名字在上面,所有的信息都包含在其中,你随时可以查看它,只需要保证数据的前端工作是正常的。

只考虑数据本身,不考虑来源 的发展趋势

如果你只关心数据本身,不关心数据是从哪里过来的,那么在网络中负责管理 多路传输 的网关,就会变成了数据的另外一种来源。
如今,如果你在观看一个Youtube视频,意味着有一些数据离开了Youtube的服务器,送到了网关的内存中,然后又从网关的内存中取出发送往网络链路中,又到了下一站的网关内存中,就这样一直下去到达你的地方。
如果有两个人同时在观看同一个视频,那么离他们最近的网关会进行数据的复制,分别发送给他们,这些数据都需要通过这个网关的内存,但是这个网关本身不知道对话的存在。看的是相同的视频,但是它看到的是两个不同的对话进程,也就是说上面黑体字的内容无法实现,网关没有办法观察它的内存,说:Hey,哥们,我有这个片,我直接发送给你。它必须拿到一份从Youtube传送下来的重新的内容拷贝。
这种糟糕的拓展性的原因是:数据只有一个来源。但是我们只要只关心数据本身,而不关心来源,只要你从它传输过来的途径找到了这份数据的拷贝,那么就意味着你拥有了这份拷贝,不用大费周章地返回发送端重新拿到一份拷贝了。

2016/8/7

posted @ 2016-08-07 12:43  Wasdns  阅读(207)  评论(0编辑  收藏  举报