计算机网络 应用层

本文深入探讨应用层协议,包括HTTP的非持久和持久连接、HTTP请求和响应报文格式,FTP、SMTP的邮件传输机制,以及DNS的工作原理。HTTP的无状态特性通过Cookie实现用户识别,DNS作为分布式数据库提供主机名到IP地址的转换,确保网络通信的顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

各层的数据包名称:

应用层--报文

传输层--报文段

网络层--数据报

链路层--帧


一、应用层体系结构:

  客户机/服务器, P2P体系结构,前两者的混合的体系结构;


客户机/服务器:总有一台打开的服务器等待客户机的连接请求,服务器拥有周知的固定的IP地址;  例如:web,文件传输,远程登录,电子邮件

为了应对众多的连接请求,一般服务器会用多台服务器建立一个主机群集;


P2P体系结构:网络上任意一对主机形成的对等方直接通信,不通过服务器(Peer to Peer),每台主机都有可能变更IP地址;不要求任何一台主机打开;

特点:高度可扩展性; 高度分布,分散性;


客户机/服务器与P2P的混合体:

如即时聊天软件,两个用户之间传送文本是P2P,而寻找在线的好友时,要与服务器联系,是客户机/服务器模式;


不同端系统上的进程通过网络交换报文;


在给定的一对进程中,发起连接的是客户机,等待连接的是服务器;


SOCKET 是应用层与传输层之间的接口,是在网络上建立网络应用程序的编程接口即API;


应用层协议

定义了不同端系统上的应用程序如何传递报文;


应用层协议与网络应用:

应用层协议只是网络应用的一部分;


应用程序对传输层提供的服务要求:

1. 对传输可靠性的要求:如web, SMTP,金融等要求可靠传输;

2. 对宽带的要求:网络电话是带宽敏感的应用,要求数据以固定的速率进行编码;

3. 对传输时延的要求:如网络电话,网络实时游戏等


TCP:可靠连接,拥塞控制机制;

UDP:不可靠连接,不提供拥塞控制机制;


二、web应用与HTTP协议

web:按需操作

web应用利用的应用层协议是HTTP;  HTTP定义了报文的格式,以及交换方式,


web页也叫文档,是由各种对象组成如图片、JAVA小程序、HTML文件等,这些对象可以通过URL地址对对象进行引用;

URL地址由两部分组成:存放对象的主机名与路径名,如www.someSchool.edu/someDepartment/pircture.gif

web浏览器即客户机,是web应用的用户代理,用于显示所请求的文档。


HTTP:HyperText Transfer Protocol 超文本传输协议

HTTP协议是一个无状态协议,不会保留关于客户机的任何有关信息;

HTTP协议并不管客户机如何解释该协议,只定义了HTTP客户机与HTTP服务器程序之间的通信协议。


非持久连接:

每个HTTP申请的TCP连接在获得请求的对象后,TCP连接直接关闭;每个TCP连接只传输一个请求报文和一个响应报文;

一个web页有多少个对象,就要申请多少个TCP连接;

TCP连接的申请可以是并行也可以是串行(并行度为1),这个可以在浏览器中设置;


RTT往返时间:报文发送出去,到响应之间的时间;包括:传输时延,路由器与交换机上的排队时延,分组处理时延;


HTTP连接过程:(先由三次握手建立连接,再则服务器发送文件)

1. 浏览器发送一个TCP请求报文段;

2. 服务器发送响应TCP连接报文段;

3. 浏览器将一个HTTP请求报文与三次握手的最后一次个确认报文段一起发送给服务器

4. 服务器开始向客户端发送文件;

(总时间=2*RTT + 文件传输时间)


持久连接:

持久连接就是不用为每个对象进行一次TCP连接请求,整个web页使用同一个TCP连接,如果这个连接在一定时间间隔内仍没被使用,则关闭;

1. 非流水线式

每个对象发送一个请求,且只有当前对象的请求得到服务器的响应后,才发送下一个对象的请求;因此每个对象消耗1个RTT;同时,服务器在发送完当前对象后,处于闲置状态;

2. 流水线式

客户机遇到一个对象就会产生一个请求,因此HTTP客户机会为引用对象产生连接的请求,服务器也连续的响应;因此所有对象消耗一个RTT;


HTTP请求报文格式:

第一行是请求行
后面是首部行
实体主体

HTTP响应报文格式:

一个状态行

6个首部行

实体主体


用户与服务器交互:Cookie

HTTP是一个无状态协议,不记录客户机的信息,这样会简化服务器的设计,提高性能;但很多网站希望能够识别用户,或是把内容与用户关联起来,web利用Cookier实现这一目地;

Cookie技术有4个组成部分:

1. HTTP响应报文中有一个Cookie首部行;

2. HTTP请求报文中有一个Cookie首部行;

3. 用户端系统中保留有一个Cookie文件,由用户的浏览器管理;

4. web站点有一个后端数据库;每一个用户生成唯一的一个识别码,以此作为一个索引在它的后端数据库产生一个项;用户浏览器同样会为用户保留一个在该站的Cookie,以后再次访问时,请求报文中会加上cookier首部行;


HTTP内容:

web页中的对象;XML文件;P2P文件共享中HTTP协议常被当作文件传送协议使用;


WEB缓存器(代理服务器)

所谓代理服务器就是在本地局域网中,配置一个服务器,配置浏览器;
1. 用户使用HTTP请求时,首先指向该缓存器,与代理服务器建立TCP连接,并向其发送一个HTTP请求;
2. 缓冲器先检查本地是否存储了该对象的拷贝,如果有,则直接向用户发送响应报文;
3. 如果没有,则由代理服务器与起始服务器建立一个TCP连接,并请求获得该对象;建立接连后,起始服务器向代理服务器发送对象响应;
4. 在拷贝了该对象在本地缓存器后,web缓存器向用户转换该对象;


使用代理服务器能大大减少本地网与互联网间接入的带宽要求!


条件GET

If-modified-since:时间

每次从起始服务器获得拷贝时,都有一个Last-Modified:时间    首部行,当一段时间后,用户请求该对象时,缓存服务器会向起始服务器发送一个条件GET,检测对象是否已经被更新;


三、FTP 文件传输协议

本地FTP客户机与远程主机FTP服务器之间建立一个TCP连接,并使用了两具TCP连接:控制连接、数据连接;控制连接传送用户标识、密码、更改远程目录等;数据连接发送一个文件;控制信息是带外传送的,而HTTP协议传送的文件是在TCP连接中发送请求与响应首部行,所以是带内发送控制信息;

过程:
1. FTP客户机在21端口发起一个用于控制的TCP连接;通过该连接发送用户标识与密码;
2. FTP服务器在该连接上收到一个文件传输的命令后,就向FTP客户机发起一个TCP数据连接;
3. FTP服务器通过该数据连接向客户机发送文件,传输完成后,直接关闭该数据连接;如果同时还有另外一个文件请求,服务器再次打开一个连接,并行发送!


FTP协议是状态协议,会保留用户的信息,必须将用户帐户与控制连接联系起来;


四、电子邮件

1.SMTP

电子邮件系统由:用户代理,邮件服务器,SMTP三部分组成;

每个接收方在其服务器上有一个邮箱; 

邮件过程:

邮件从用户代理发送到邮件服务器,由邮件服务器发送对对方的邮件服务器,再被分到对方的邮箱中;

SMTP是基于TCP接连,一端是邮件发送服务器上的客户机,另一端是邮件接收服务器的服务器;


特点:

SMTP一般不使用中间邮件服务器发送,而是直接由2个服务器直接相连;如果接收方邮件服务器没有开机,则发送方会等待一段时间再发送;

SMTP是持久连接,如果还有其它报文要发送,依然是用这个TCP连接,而不会断开当前连接后再次建立一个新的TCP连接;


SMTP vs  HTTP

SMTP:从web客户端到web服务器,传送对象; 是一个拉协议,即要的时候向服务器取信息;TCP是由想要获取文件的一方发起;

HTTP:从一个邮件服务器到另一个邮件服务器,传送邮件报文; 是一个推协议,即将邮件发送到接收方服务器;TCP是由要发送文件的一方发起;

SMTP报文必须使用7位ASCII码格式;HTTP不用;

HTTP每个对象会封装在自己的响应报文中,而SMTP发送的所有对象放在一个报文中!


MIME(multipurpose internet mail extension):多用途因特网邮件扩展

对SMTP协议报文首部行进行了扩展,使其能够发送非ASCII文本内容如图片、视频等;原先的主体只能包含7位ASCII码的值,要传送其它文件如图片、视频,必须使用编码;

支持多媒体的两个关键首部:

Content Type:      // 文件类型如jpg

Content-Transfer-Encoding:   // 文件编码类型如base64   


Received:首部行,是在邮件由中间SMTP服务器转恬时,在报文的顶部添加的;这样可以看到邮件的访问的服务器的踪迹;


2. 邮件访问协议

使用用户代理与STMP服务器的原因:

邮件要的发送是基于TCP连接的,而不可能将STMP服务器放置于用户的PC端,因为用户不可能一直在线,如果不在线,则无法建立连接,邮件就无法从客户接收端;因此要使用专门的SMTP服务器,一般服务器是由ISP提供,

可以做到一直开着,这样,用户要发送文件时就会通过SMTP协议把邮件发送到他的服务器上,之后SMTP服务器给接收方的服务器发送邮件,如果对方服务器没有在线,则会选择过一段时间再次发送; 


在PC端获取服务器上的邮件时,存在一个问题:SMTP是个推协议,文件是由连接发起端推向文件接收端,无法从PC端通过SMTP协议来获取服务器上的邮件;因此需要一个特殊的协议来获取邮件;

2.1 POP3 (Post office Protocol version 3)  第三版邮局协议

是一个简单的邮件访问协议,POP3通过端口110与服务器建立TCP连接,分三个步骤:特许、事务处理、更新;

特许:即身份验证阶段;

事务处理: 即对邮件进行操作阶段如删除标记、取消删除标记;

更新:即在客户quit后,服务器对之前用户操作过的邮件进行更新;

命令:

list, retr, dele , quit, 


POP3操作简单,但是只能将邮件下载到本地操作(分下载删除、下载保留2种工作方式),无法建立远程服务器的层次上进行文件夹,而用户会更喜欢远程服务器上层次上的操作,这样可以在不同PC端处理;

为些产生了另一个协议:IMAP;


2.2 IMAP (Internet Mail Access Protocal)

提供了远程文件夹的服务,可以在服务器上建立新的文件夹或是移动邮件;因此,IMAP服务器必须为用户维护状态信息如文件夹以及对应的邮件的改变;

另外IMAP还提供只读取邮件组件的功能,比如只读取文件中的文字而不读取视频;

上两种邮件读取协议都是在接收邮件时用到,发送邮件仍然使用SMTP协议


2.3 HTTP (基于web)

HTTP获取邮件是实现了web浏览器上读取或是发送文件的方式;

用户发送或是收取邮件都通过HTTP协议而不是SMTP协议,只是服务器间发送邮件才是利用SMTP协议;

该方式可以如IMAP一样在建立远程文件夹,其实现方式就是通过HTTP服务器上的脚本与IMAP服务器通信;很多基于web的电子邮件都是通过IMAP服务顺来实现文件夹的功能;


五、DNS

主机的标识方式:

主机名hostname如 www.yahoo.com     // 只提供了很少的地理位置信息,如中国,法国等,且名字长度不,不易处理

IP地址:  32位数字表示;  /// 地理位置与长度固定


1. DNS简介

DNS 是应用层协议,因此:1. 是客户端/服务器模式, 要用传输层的协议在端系统间通信,传输报文;  // UDP协议,53号端口

特性:

1、 由分层的DNS服务器实现的分布式数据库;

 2、一个允许主机查询分布式数据库的应用层协议


DNS 主要是为其它应用层程序提供主机另名与IP地址间的转换;

例子:

当用户在浏览器端输入URL:www.somschool.edu/index.html 时会发生下面的步骤

1、 在用户主机上运行着DNS应用客户端;

2、浏览器从URL中提取出主机另名:www.somschool.edu,将它转交给DNS客户端

3、 DNS客户端向DNS服务器发送一个包含该主机名的请求

4、DNS服务器返回该主机名与IP地址;

5、HTTP协议通过该IP地址建立与HTTP服务器间的TCP连接;


DNS提供的服务:

1、主机名与IP地址的转换;

2、由主机别名获得规范主机名与IP地址;   

3、邮件服务器别名转换成规范主机名与IP地址;  // 允许邮件服务器与web服务器使用相同的主机名;

4、负载分配:即对于繁忙的站点,有是多台服务器提供服务,每台服务器由自己的IP地址,但是这些IP地址集合对应一个规范主机名;

当DSN发送该主机名时,服务器会返回这些IP地址的集合,但每次返回会对集合进行旋转,而客户机通常会将IP地址排在最前面的服务器发送HTTP请求报文,这样就实现了负载的均匀分配;


2. DNS工作机理

在应用程序上通过主机名IP可以直接调用函数gethostbyname();  这个过程是调用了主机上的DNS客户端程序,之后客户端向网络发送一个DNS查询报文,使用UDP数据报经端口53号发送;

之后会收到一具DNS回答报文,结果返回给调用DNS的应用程序;


这个函数背后是分布于全球的大量DNS服务器与定义了DNS服务器与查询主机间如何通信的应用层协议;

全球DNS服务器是以层次方式组织,分布在全世界范围内。

DNS服务器分三种:

1. 根DNS服务器:通过主机名的com, org, edu等返回顶级域名服务器的IP地址;

2. 顶级域名服务器(TLD):负表顶级域名服务器对应的权威服务器地址;

3. 权威DNS服务器:那些具有公开可以访问的主机必须提供公共可访问的DNS记录,这些记录将这些主机名映射成IP地址;

附: 本地DNS服务器:不属于DNS服务器层次结构中,但具有重要的实际意义;

当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理作用,将该请求转发到DNS服务器层次结构中;


例:主机查询www.gaia.cs.umass.edu的IP地址

迭代查询:  // 即每次返回报文是直接返回给本地服务器,由本地服务器再次向下一级DNS服务器发送查询报文;

1. 主机向本地DNS服务器发送请求报文;

2. 本地DNS服务器向根服务器转发该报文;根服务器根据edu前辍返回负责edu的TLD服务器IP地址;

3. 本地DNS依次向这些IP地址发送查询报文;对应的TLD服务器通过umass.edu前辍,返回对应的权威DNS服务器IP地址;如该权威DNS服务器是dns.umass.edu;

4. 最后本地DNS向权威DNS服务器转发查询报文,服务器用gaia.cs.umass.edu对应的IP地址;

上面的查询过程,总共发送了8个报文来获得一个IP地址,因此可以利用DNS缓存来减少这种查询流量;

当然实际中,可能会经过中间DNS服务器才能知道最终的权威服务器;


递归查询:  // 返回的报文并不直接给要地服务器,而是由当前服务器直接转换给下一级服务器,之后依次返回;

就是从根服务器交不是返回给本地服务器,而是直接转发到TLD服务器,TLD服务器转换到权威服务器,之后依次返回到根服务器再返回到本地服务器;


DNS缓存:

即当一个DNS服务器接收到DNS回答时,将回答中的信息缓存在本地存储器中,这样下次有对相同主机名进行查询时会直接返回对应的IP地址而不必查询其它DNS服务器;

同样可以缓存TLD服务器的地址,这样就可以直接绕开根DNS服务器查询权威服务器;(如com, edu等等前辍是经常使用,因此本地服务器是有缓存的)


所有的DNS共同存储着资源记录(RR)即主机名到IP的地址映射;每条DNS回答报文包含了一条或是多打资源记录;

RR是一个四元组:(Name, Value, Type,TTL)    // TTL代表的是RR从缓存中删除的时间

Name和Value的值取决于Type:

Type = 

A,该类型记录是标准的主机名到IP地址的映射;(relay1.bay.foo.com, 154.37.93.128, A)

NS,该类型记录的Name是域如foo.com,Value 是知道该如何获得该域中主机IP的权威DNS服务器主机名。(foo.com, dns.foo.com, NS)

CNAME,此时Value对应别名为Name的主机的规范主机名,该记录向请求主机返回主机别名对应的规范主机名。(foo.com, relay1.bay.foo.com, CNAME)

MX,Value是别名为Name的邮件服务器的规范主机名。该记录就允许邮件服务器具有简单的别名,可以同web服务器同名。(foo.com, mail.bay.foo.com, MX)
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值