首发于 计算机专业基础知识
第二章:应用层 |《计算机网络:自顶向下方法》

第二章:应用层 |《计算机网络:自顶向下方法》

一、应用层协议原理

1、网络应用程序体系结构

客户-服务器体系结构(C-S):Web

点对点结构(P2P):迅雷

混合结构:Napster

2、进程通信

客户和服务器进程

进程与计算机网络之间的接口:进程通过套接字(socket)软件接口向网络发送报文和从网络接收报文。

进程寻址:主机的地址由IP地址标识,进程的位置由端口号标识。

3、可供应用使用的运输服务

运输服务的衡量标准:可靠数据传输、吞吐量、定时、安全性

4、因特网提供的运输服务

TCP服务:特点是面向连接和可靠的数据传送

UDP服务:特点是无连接的最小服务(非可靠)

5、应用层协议

应用层协议(application layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文。

(1)交换的报文类型,如请求报文和响应报文;

(2)各种报文类型的语法,如报文中的各个字段公共详细描述;

(3)字段的语义,即包含在字段中信息的含义;

(4)进程何时、如何发送报文及对报文进行响应。


二、Web和HTTP

1、HTTP

HTTP即超文本传输协议,是Web的应用层协议。

Web是由对象组成的,比如一个Web页面包含一个HTML文本和5个JPRG图形,那么这个Web就包含了6个对象。

HTTP使用TCP作为它的支撑运输协议。

HTTP不保存关于客户的任何信息,所以我们说HTTP是一个无状态协议。


2、非持续连接和持续连接

参考链接: 面试时如何优雅的谈论HTTP/1.0/1.1/2.0

HTTP 1.0

HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。但是,这也造成了一些性能上的缺陷,例如,一个包含有许多图像的网页文件中并没有包含真正的图像数据内容,而只是指明了这些图像的URL地址,当WEB浏览器访问这个网页文件时,浏览器首先要发出针对该网页文件的请求,当浏览器解析WEB服务器返回的该网页文档中的HTML内容时,发现其中的图像标签后,浏览器将根据标签中的src属性所指定的URL地址再次向服务器发出下载图像数据的请求。显 然,访问一个包含有许多图像的网页文件的整个过程包含了多次请求和响应,每次请求和响应都需要建立一个单独的连接,每次连接只是传输一个文档和图像,上一次和下一次请求完全分离。即使图像文件都很小,但是客户端和服务器端每次建立和关闭连接却是一个相对比较费时的过程,并且会严重影响客户机和服务器的性能。当一个网页文件中包含JavaScript文件,CSS文件等内容时,也会出现类似上述的情况。


HTTP1.1

为了克服HTTP 1.0的这个缺陷,HTTP 1.1支持持久连接(HTTP/1.1的默认模式使用带流水线的持久连接),在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。


HTTP2.0

HTTP/2.0 时代拥有了「多路复用」功能,意思是: 在一条连接上,我可以同时发起无数个请求,并且响应可以同时返回。


3、HTTP报文格式

参考链接: HTTP请求、响应报文格式 - CSDN博客

请求报文:HTTP请求报文主要由请求行、请求头部、请求正文3部分组成。

响应报文:HTTP响应报文主要由状态行、响应头部、响应正文3部分组成。


4、用户和服务器的交互:cookie

参考链接: 计算机网络应用层之cookie - CSDN博客

1)cookie技术的组成

在了解cookie的工作原理之前,我们先来了解一下cookie技术的组成,它由4部分组成,如下:

  1. 在HTTP响应报文中有一个cookie首部行;
  2. 在HTTP请求报文中有一个cookie首部行;
  3. 在用户端系统中保留有一个cookie文件,由用户浏览器管理;
  4. 在Web站点有一个后端数据库;


2)cookie的工作原理

在了解了cookie技术的组成之后,我们来看看cookie是怎么工作的。下面就以主机A中的浏览器访问网站xxx作为例子来分析cookie的工作原理吧。

首先主机A使用浏览器上网,当主机A第一次访问xxx网站时,当请求报文到达xxx的Web服务器时,该Web服务器将产生一个唯一识别码(例如:12345),并以此作为索引在它的后端数据库中产生一个表项,并用Set-cookie:首部行和刚才产生的值为设置HTTP响应报文的首部。这样在HTTP响应报文的首部,我们就可以看到这样的一个首部行——Set-cookie: 12345.

当主机A的浏览器收到该HTTP响应报文时,它会看到Set-cookie:首部,然后浏览器在它的本地cookie文件上加入一行,其中包括Set-cookie:首部行中的识别码。

由于主机A的cookie文件已经有了用于xxx网站的表项,因此当主机A的浏览器继续浏览xxx网站时,每请求一个Web页面,其浏览器就会从它的cookie文件中获取到xxx网站的识别码,并放入HTTP请求报文中cookie首部行中,即加入了首部行Cookie: 12345。

当xxx网站的服务器收到该包含Cookie首部行的HTTP请求报文后,服务器通过查询后端服务器,确定cookie标识码对应的用户,从而可以直接知道用户的信息(即知道确实有一个这样的用户,不久前登陆过该网站)。

注意,在cookie的方式下,xxx网站的服务器可以跟踪主机A在该站点的活动,xxx Web站点并不需要知道主机A的用户是谁,但是,它确切地知道用户12345访问了哪些页面,按照什么顺序,在什么时间。

简单点来说,cookie用于标识用户,用户首次访问站点时,可能需要提供一个用户标识,但在后继的访问中,浏览器向服务器传递一个cookie首部,供服务器识别该用户。因此cookie可以在无状态的HTTP上建立一个用户会话层,允许服务器通过用户与应用程序之间的会话对用户进行验证。

5、Web缓存器(代理服务器)

1)使用Web缓存器的2个主要原因:


2)工作过程


Web缓存器有缓存


Web缓存器无缓存


6、条件get方法

参考链接: 应用层-3、web缓存和代理服务器技术 - CSDN博客

上述实现方式还有一个问题就是无法保证本地存储器内的内容是最新的,所以需要采用一种方式——(条件性GET方法)来保证数据是最新版本。这个方法的基本思想就是本地代理服务器向URL目标服务器发送一个GET请求消息,这个消息里面包括了本地存储资源的更新时间,在URL目标服务器中,会用这个时间与最新版本的时间进行比对,如果时间一致就返回 304 Not Modified , 否则就返回 200 OK 和最新版本的资源。代理服务器接收到返回信息后会判断这个返回码,如果是304,就直接返回给客户给本地代理服务器存储的资源;如果是200就把新接收到的资源返回给用户,同时更新代理服务器存储的内容。


三、文件传输协议FTP

FTP的特点:同HTTP一样,也是运行在TCP上的协议,但它采用了两个并行的TCP连接来传输文件,一个用于控制连接,一个用于数据连接,所以我们称其为带外(out-of-band)传输。另外,控制链接和持续整个过程,而每传输一个新文件,都需要新开一条数据连接。


四、因特网中的电子邮件

参考链接: [计算机网络-应用层] 因特网中的电子邮件

电子邮件的组成部分:

用户代理、邮件服务器和简单邮件传输协议。


用户代理允许用户阅读、回复、转发、保存和撰写报文。

邮件服务器组成了电子邮件体系结构的核心。每个接收方在其中的某个服务器上有一个邮箱。邮箱包含用户的到达报文、离开(将发送)邮件报文的报文队列;在发送电子邮件报文的邮件服务器之间采用SMTP协议。

SMTP是因特网电子邮件中主要的应用层协议。它使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。

1、SMTP

使用TCP从客户机到服务器可靠地传输电子邮件报文,用端口25

直接传输:发送服务器到接收服务器。

传输的三个阶段:握手 (欢迎)、报文的传输、关闭。

命令/响应交互

命令: ASCII文本

响应: 状态码和短语

报文必须以7比特ASCII格式


为了描述SMTP的基本操作,下面来模拟一下Alice给Bob发送一封简单的ASCII报文的过程:



1) Alice使用UA写作报文并向 bob@someschool.edu 发送

2) Alice的UA向其邮件服务器发送报文;报文放置在报文队列中

3) SMTP的客户机侧打开与Bob的邮件服务器的TCP连接

4) SMTP通过TCP连接发送Alice的报文

5) Bob的邮件服务器将该报文放入Bob的邮箱

6) Bob调用其用户代理来读报文


2、SMTP与HTTP的对比

HTTP: 拉协议 SMTP: 推协议

SMTP要求全部7位ASCII码格式传输,HTTP无此要求

HTTP: 每个对象封装在其自己的响应报文中 SMTP: 所有报文对象放在一个报文中

两者都有ASCII 命令/响应交互,状态码


3、邮件报文格式

一个典型的报文首部如下:

在报文首部之后,紧接着是一个空白行,然后是以ASCII格式表示的报文主体。

MIME:

由于在RFC 822中描述的报文首部只适合于发送普通ASCII文本,不能充分满足多媒体报文(如带有图片、音频和视频的报文)或携带有非ASCII文本格式(例如,非英语语言所使用的字符)的报文的需求。为发送非ASCII文本的内容,发送方的用户代理必须在报文使用附加的首部行。这些额外的首部行定义在RFC 2045和RFC 2046中,多用途因特网邮件扩展(MIME)是对RFC 822的扩展。

支持多媒体的两个关键MIME首部是Content-Type:Content-Transfer-Encoding:

Content-Type:首部行允许接收用户代理对报文采取适当的动作。

Content-Transfer-Encoding:首部行提示接收用户代理该报文主体已经使用了ASCII编码,并指出了所用的编码类型。



接收服务器一旦接收到具有RFC 822和MIME首部行的报文,就在该报文的顶部添加一个Received:首部行;该首部行定义了发送该报文的SMTP服务器的名称(from),接收该报文的SMTP服务器的名称(by),以及接收服务器接收到的时间。

有时一个邮件有多个Receive:行,这是因为有的邮件在发送方和接收方之间的路径要经过不止一个SMTP服务器转发。


4、邮件访问协议

在上述分析中,有一个疏漏的环节,那就是在Alice向Bob发送邮件的过程中,Bob是如何通过运行在他本地PC上的用户代理,获得位于某ISP的邮件服务器上的他的邮件呢?注意到Bob的用户代理不能使用SMTP来取回邮件,因为取邮件时一个拉操作,而SMTP是一个推协议。因此我们要引入邮件访问协议。

POP

POP协议支持“离线”邮件存储转发处理:客户端程序连接服务器,下载所有未阅读的电子邮件;一旦将邮件从邮件服务器端送到客户端上,邮件服务器上的邮件将会被删除。

POP3

POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。

IMAP,以及和POP3的区别

IMAP像POP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP和POP3是邮件访问最为普遍的Internet标准协议。不同的是:


五、DNS:因特网的目录服务

参考链接: [计算机网络-应用层] DNS:因特网的目录服务

DNS提供的服务主要为主机名到IP地址。

1、DNS提供的其他服务:

2、DNS的工作原理

DNS采用分布式的设计方案。

下面是DNS服务器的部分层次结构(由上到下,每层分别是根服务器、TLD服务器、权威服务器):



1)分布式、层次数据库

大致来说,有3种类型的DNS服务器:根DNS服务器顶级域(Top Level Domain,TLD)DNS服务器权威DNS服务器

假设一个DNS客户机要确定主机名 amazon.com的IP地址。粗略来讲,将发生下列事件:

·客户机请求根服务器以发现com TLD服务器 ·客户机请求com TLD服务器以得到 amazon.com 权威服务器 ·客户机请求 amazon.com 权威服务器以得到对 amazon.com的IP地址

下面来详细介绍一下这三种类型的DNS服务器:

·根DNS服务器

在因特网上有13个根DNS服务器(标号为a到m),尽管我们将这13个根DNS服务器中的每个都视为单个的服务器,但每台“服务器”实际上是冗余服务器的群集,以提供安全性和可靠性。



·顶级域(TLD)服务器

负责com, org, net, edu等,以及所有顶级国家域 uk, fr, ca, jp.

·权威DNS服务器

组织的DNS服务器为组织的服务器(如Web和电子邮件)提供对IP映射的权威主机名。 能够由组织或服务提供商维护。

·本地DNS服务器

本地DNS服务器严格来说并不属于DNS服务器的层次结构,但它对DNS层次结构是很重要的。


图1、迭代查询
图2、递归查询

在图1的例子中用到了递归查询迭代查询。从 cis.poly.edudns.poly.edu发出的查询是递归查询,因为该查询请求 dns.poly.edu以自己的名义获得该映射。而后继的三个是迭代查询,因为所有的回答都是直接返回给 dns.poly.edu

从理论上,所有的DNS查询既可以是迭代的也可以是递归的。例如,图2显示了一条DNS查询链,其中所有查询都是递归的。

实际中,查询通常遵循图1中的模式:从请求主机到本地DNS服务器的查询是递归的,其余查询是迭代的。

2)DNS缓存

为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛使用缓存技术。

原理:当一个DNS服务器接收一个DNS回答(例如,包含主机名到IP地址的映射)时,DNS服务器能将回答中的信息缓存在本地存储器。由于主机与主机名的IP地址映射决不是永久的,所以DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。


3)域名解析过程



3、DNS记录和报文

1)DNS记录:

实现DNS分布式数据库的所有DNS服务器共同存储着资源记录(Resource Record,RR),RR提供了主机名到IP地址的映射。下面是RR的基本格式:



Type=A name 是主机名,Value是IP地址

Type=NS name 是域 (如 foo.com), Value是该域的权威名字服务器的IP地址

Type=MX Value是与name相联系的邮件服务器

Type=CNAME Value是别名为name的主机对应的规范主机名

注:通过使用MX记录,一个公司的邮件服务器和其他服务器(如它的Web服务器)可以使用相同的别名

2)DNS报文:

DNS只有两种报文,即查询和回答报文,并且这两种报文有着相同的格式。

下图是DNS报文格式:


6、P2P应用

问题 : 从一个服务器向N个节点分发一个文件需要多长时间?

客户机/服务器:服务器串行地发送N个副本

P2P:服务器必须发送一个副本


C/S模式和P2P模式对比


PS:

广告时间啦~

理工狗不想被人文素养拖后腿?不妨关注微信公众号:

欢迎关注~

玻璃钢生产厂家香港玻璃钢树池公司吉林玻璃钢树池坐凳多少钱安徽玻璃钢坐凳定做眉山玻璃钢装饰工程生产厂家莱芜玻璃钢制品公司达州玻璃钢雕塑厂阜阳玻璃钢摆件定制阳泉不锈钢雕塑批发北海不锈钢家具批发海东玻璃钢人物雕塑生产厂家随州玻璃钢装饰工程制造浙江玻璃钢景观雕塑厂家直销洛阳玻璃钢卡通雕塑多少钱十堰玻璃钢垃圾桶制造新余玻璃钢动物雕塑厂家酒泉玻璃钢座椅廊坊玻璃钢医疗外壳毕节玻璃钢动物雕塑加工长沙玻璃钢休闲椅生产厂家中山玻璃钢花瓶福州不锈钢花盆多少钱亳州玻璃钢装饰造型价格惠州商场美陈定做衢州玻璃钢制品淮安玻璃钢制品价格云南不锈钢雕塑厂家海口玻璃钢卡通雕塑哪家好周口商业美陈批发安庆玻璃钢动物雕塑多少钱南阳玻璃钢花盆厂香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化