计算机网络2——网络应用、应用层(上)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaocong1993/article/details/82851624

一、网络应用的基本原理

        1、网络应用的体系结构        2、网络应用进程通信        3、网络应用的需求与传输层服务

二、Web应用

        1、Web应用概述        2、HTTP协议        3、Cookie技术        4、Web缓存/代理服务器技术

三、Email应用

        1、Email应用的构成        2、SMTP协议        3、邮件访问协议

四、DNS应用

        1、DNS概述        2、DNS记录        3、DNS协议与消息        4、注册域名


课程来自中国大学MOOC《计算机网络》哈尔滨工业大学https://www.icourse163.org/course/HIT-154005

一、网络应用的基本原理

1、网络应用的体系结构

网络应用与单机应用本质性不同,网络应用需要网络的基础环境,一部分应用运行在自己的计算机,数据信息等运行在互联网的某个硬件服务器,两部分软件互相交互。

(1)客户机/服务器结构(Client-Server,C/S)

服务器:7*24小时提供服务;永久性访问的地址/域名;利用大量服务器实现可扩展性(大量服务器分布式,同时处理大量用户的并发请求)。

客户机:与服务器通信,使用服务器提供的服务;间接性接入网络;可能使用动态IP地址;不会与其它客户机直接通信。  

(2)点对点结构(Peer-to-peer,P2P)

没有永远在线的服务器;任意端系统/节点之间可以直接通讯;节点间歇性接入网络;节点可能改变IP地址。

高度可压缩,但难于管理。

    

(3)混合结构(Hybrid)

Napster:文件传输使用P2P结构;文件搜索采用C/S结构(集中式),每个节点向中央服务器登记自己的内容,每个节点向中央服务器提交查询请求,查找感兴趣的内容。

2、网络应用进程通信

进程是指主机上运行的程序。同一主机上运行的进程之间通信,操作系统提供进程间通信机制;不同主机上运行的进程间通信,消息(报文)交换。客户机进程是发起通信的进程,服务器进程是等待通信请求的进程。

不同主机的进程间通信利用套接字(Socket)机制发送/接收消息,socket是操作系统提供的一种抽象,把网络的硬件基础设施及网络协议栈抽象。类似于寄信,发送方将消息送到门外邮箱,依赖门外的传输基础设施将消息传到接收方门外,接收方从门外获取消息。

传输基础设施向进程提供网络的API——socket,传输协议的选择,参数的设置。

(1)寻址进程

不同主机上的进程间通信,那么每个进程必须拥有标识符。

通过IP地址寻址主机,为主机上每个需要通信的进程分配一个端口号Port number。已经约定的端口号,如HTTP Server 80、Mail Server 25。

进程的标识符,IP地址+端口号。

(2)应用层协议

网络应用需遵循应用层协议。

公开协议,由RFC(Request For Comments)定义,允许互操作,HTTP, SMTP, ……。想要详细研究协议需要看其RFC文档https://www.ietf.org/standards/rfcs/

私有协议,多数P2P文件共享应用。

(3)应用层协议的内容

消息的类型(type):请求消息、响应消息;

消息的语法(syntax)/格式:消息中有哪些字段(field)、每个字段如何描述;

字段的语义(semantics):字段中信息的含义;

规则(rules):进程何时发送/响应消息、进程如何发送/响应消息。

3、网络应用的需求与传输层服务

(1)网络应用对传输服务的需求

数据丢失(data loss)/可靠性(reliability):某些网络应用能够容忍一定的数据丢失,如网络电话、看视频;某些网络应用要求100%可靠的数据传输,如文件传输、网上银行、telnet。

时间(timing)/延迟(delay):有些应用只有在延迟足够低时才“有效”,如网络电话、网络游戏。

带宽(bandwidth):某些应用只有在带宽达到最低要求时才“有效”,如网络视频;某些应用能够适应任何带宽——弹性应用,如email。

其它要求:安全性等。

(2)Internet提供的传输服务

① TCP服务

面向连接:客户机/服务器进程间需要建立连接。

可靠的传输:不丢包、不乱序。

流量控制:发送方不会发送速度过快,超过接收方的处理能力。

拥塞控制:当网络负载过重时能够限制发送方的发送速度。

不提供时间/延迟保障,不提供最小带宽保障。

② UDP服务

无连接,不可靠的数据传输,不提供可靠性保障、流量控制、拥塞控制、延迟保障、带宽保障。

二、Web应用

1、Web应用概述

World Wide Web由Tim Berners-Lee发明。

Web由网页构成,网页互相链接,形成极其庞大的信息、内容、服务网络。网页(Web Page)包含多个对象(objects),html文件、图片、视频文件、动态脚本等,其中基本的html文件包含对其它对象引用的链接。

对象的寻址(addressing):统一资源定位器URL(Uniform Resoure Locator)(RFC1738),使Web上所有的资源都有唯一的标识符。格式Scheme://host:port/path

2、HTTP协议

(1)概述

Web应用遵循超文本传输协议(HyperText Transfer Protocol,HTTP)。HTTP版本,1.0(RFC 1945),1.1(RFC 2068)。

采用C/S结构:客户Browser请求、接收、展示Web对象,服务器Web Server响应客户的请求,发送对象。最典型的服务器软件Apache。

使用TCP传输服务:服务器在80端口等待客户的请求;浏览器发起到服务器的TCP连接(创建套接字Socket);服务器接受来自浏览器的TCP连接;浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息;关闭TCP连接。

无状态(stateless):服务器不维护任何有关客户端过去所发请求的信息。有状态的协议更复杂,需维护状态(历史信息),如果客户或服务器失效,会产生状态的不一致,解决这种不一致代价高。

(2)HTTP连接

① 非持久性连接(Nonpersistent HTTP):每个TCP连接最多允许传输一个对象,HTTP 1.0版本使用非持久性连接。

响应时间(Response time):发起、建立TCP连接,1个RTT;发送HTTP请求消息到HTTP响应消息的前几个字节到达,1个RTT;响应消息中所含的文件/对象传输时间;Total=2RTT +文件发送时间。RTT(Round Trip Time)从客户端发送一个很小的数据包到服务器并返回所经历的时间。

非持久性连接的问题:每个对象需要2个RTT以上时间获得;操作系统需要为每个TCP连接开销资源(overhead)。

浏览器会怎么做?打开多个并行的TCP连接以获取网页所需对象,给服务器端造成什么影响?

② 持久性连接(Persistent HTTP):每个TCP连接允许传输多个对象,HTTP 1.1版本默认使用持久性连接。发送响应后,服务器保持TCP连接的打开,后续的HTTP消息可以通过这个连接发送。

无流水(pipelining)的持久性连 接,客户端只有收到前一个响应后才发送新的请求,每个被引用的对象耗时1个RTT

带有流水机制的持久性连接,客户端只要遇到一个引用对象就尽快发出请求,理想情况下,收到所有的引用对象只需耗时约1个RTT。HTTP 1.1的默认选项。

(3)HTTP消息格式

① 请求消息(request)

用ASCII码编写,人直接可读。

   

上传输入的方法:POST方法,网页经常需要填写表格(form),在请求消息的消息体(entity body)中上传客户端的输入;URL方法,使用GET方法,输入信息通过request行的URL字段上传www.somesite.com/animalsearch?monkeys&banana

HTTP/1.0:GET, POST, HEAD(请Server不要将所请求的对象放入响应消息中,测试用)。

HTTP/1.1:GET, POST, HEAD, PUT(将消息体中的文件上传到URL字段所指定的路径),  DELETE(删除URL字段所指定的文件)。

② 响应消息(response)

HTTP响应状态代码:200 OK,301 Moved Permanently,400 Bad Request,404 Not Found,505 HTTP Version Not Supported

体验一下HTTP:利用telnet登录到某个Web服务器telnet www.hit.edu.cn 80,输入一个HTTP请求GET /about/profile.htm HTTP/1.1,Host: www.hit.edu.cn,查看HTTP服务器所返回的响应消息。

3、Cookie技术

HTTP协议无状态,不记录客户的历史行为,但很多应用需要服务器掌握客户端的状态。Cookie技术,某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)(RFC6265)。

Cookie是架设在HTTP上的组件:HTTP响应消息的cookie头部行;HTTP请求消息的cookie头部行;保存在客户端主机上的cookie文件,由浏览器管理;Web服务器端的后台数据库。

Cookie原理:客户端访问服务器时,首先发送不包含Cookie头部行的常规HTTP请求消息;服务器端收到该消息发现是一个新用户,创建id,并将id与客户信息如IP地址放到数据库;在返回的响应消息头部加Set-cookie:1678;浏览器收到响应消息,在Cookie文件中增加amazon:1678。再次发送消息时,有头部消息cookie:1678;服务器再收到消息时可识别1678用户,并作出面向该用户的特定动作。

Cookie能够用于身份认证、购物车、推荐、Web e-mail等,但存在隐私问题。正在研究Cookie的替代技术。

4、Web缓存/代理服务器技术

(1)概述

缓存是为了在不访问服务器的前提下满足客户端的HTTP请求。Cookie解决功能上的问题,缓存为了性能优化(缩短客户请求的响应时间、减少机构/组织的流量、在大范围内Internet实现有效的内容分发)。

在客户和服务器之间架设Web缓存/代理服务器,用户设定浏览器通过缓存进行Web访问,浏览器向缓存/代理服务器发送所有的HTTP请求。如果所请求对象在缓存中,缓存返回对象,否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象。缓存既充当客户端,也充当服务器。一般由ISP(Internet服务提供商)或组织架设。

(2)性能分析

假定对象的平均大小=100,000比特,机构网络中的浏览器平均每秒有15个到原始服务器的请求,从机构路由器到原始服务器的往返延迟=2秒。

局域网(LAN)的利用率=(100,000*15bit/s)/(10Mbps)=15%,接入互联网的链路的利用率=100%,总的延迟=互联网上的延迟+访问延迟+局域网延迟=2秒+几分钟+几微秒。

    

解决方案1:提升互联网接入带宽=10Mbps。局域网的利用率=15%,接入互联网的链路的利用率=15%,总的延迟=2秒+几微秒+几微秒。成本太高,需要买线路。

解决方案2:安装Web缓存,假定缓存命中率是0.4(0.2~0.7)。40%的请求立刻得到满足,60%的请求通过原始服务器满足。接入互联网的链路的利用率下降到60%,从而其延迟可以忽略不计,例如10微秒。总的平均延迟=0.6×2.01秒+0.4×n微秒<1.4秒。

(3)条件性GET方法

如果缓存有最新的版本,则不需要发送请求对象。

缓存,在HTTP请求消息中声明所持有版本的日期If-modified-since: <date>

服务器,如果缓存的版本是最新的,则响应消息中不包含对象HTTP/1.0 304 Not Modified

三、Email应用

1、Email应用的构成

(1)邮件客户端(user agent)

读、写Email消息,与服务器交互,收、发Email消息。Outlook, Foxmail, Thunderbird,Web客户端。

(2)邮件服务器(Mail Server)

Email应用的核心。邮箱,存储发给该用户的Email。消息队列(message queue),存储等待发送的Email。邮件服务器一直开着,确保任何时候都可以收、发邮件。

(3)SMTP协议(Simple Mail Transfer Protocol)

邮件服务器之间传递消息所使用的协议,客户端是发送消息的服务器,服务器是接收消息的服务器。

2、SMTP协议

(1)概述

Email消息的传输/交换协议(RFC 2821)。使用TCP进行email消息的可靠传输,持久性连接。

与HTTP对比:HTTP,拉式(pull),每个对象封装在独立的响应消息中;SMTP,推式(push),多个对象在由多个部分构成的消息中发送;都使用命令/响应交互模式,命令和状态代码都是ASCII码。

(2)SMTP交换过程

(异步应用,发送和接收不需要同时。)

传输过程的三个阶段:握手、消息的传输、关闭。端口25。

命令/响应交互模式:命令(command)ASCII文本,响应(response)状态代码和语句。Email消息只能包含7位ASCII码。SMTP服务器利用CRLF.CRLF确定消息的结束。

S-Server,C-Client(发邮件)

S: 220 hamburger.edu

C: HELO crepes.fr

S: 250 Hello crepes.fr, pleased to meet you(已建立连接)

C: MAIL FROM: <[email protected]>

S: 250 [email protected]... Sender ok

C: RCPT TO: <[email protected]>

S: 250 [email protected] ... Recipient ok

C: DATA

S: 354 Enter mail, end with "." on a line by itself

C: Do you like ketchup?

C: How about pickles?

C: .

S: 250 Message accepted for delivery

C: QUIT

S: 221 hamburger.edu closing connection

动手尝试SMTP交互,telnet servername 25,服务器返回代码220,输入以下命令与SMTP服务器交互HELO、MAIL FROM、RCPT TO、DATA、QUIT。

(3)消息格式

文本消息格式标准(RFC 822)。头部行(header),To From Subject,与SMTP命令不同。消息体(body),Email消息内容,只能是ASCII字符。

MIME:多媒体邮件扩展(RFC 2045, 2056),通过在邮件头部增加额外的行以声明MIME的内容类型。

  

3、邮件访问协议

从服务器获取邮件的协议。POP(Post Office Protocol,RFC 1939),认证/授权(客户端←→服务器)和下载。IMAP(Internet Mail Access Protocol,RFC 1730),更多功能、更加复杂、能够操纵服务器上存储的消息。HTTP,浏览器中的163, QQ Mail等。

(1)POP3协议

认证过程:客户端命令,User声明用户名,Pass声明密码;服务器响应+OK/-ERR。

事务阶段:一些命令。List列出消息数量,Retr用编号获取消息,Dele删除消息,Quit。

S: +OK POP3 server ready

C: user bob

S: +OK

C: pass hungry

S: +OK(user successfully logged on)

C: list

S: 1 498(邮件编号、大小)

S: 2 912

S: .

C: retr 1

S: <message 1 contents>

S: .

C: dele 1

C: retr 2

S: <message 2 contents>

S: .

C: dele 2

C: quit

S: +OK(POP3 server signing off)

“下载并删除”模式,用户如果换了客户端软件,无法重读该邮件。“下载并保持”模式,不同客户端都可以保留消息的拷贝。

POP3是无状态的。

(2)IMAP协议

所有消息统一保存在服务器;允许用户利用文件夹组织消息;支持跨会话(Session)的用户状态,文件夹的名字,文件夹与消息ID之间的映射等。

四、DNS应用

1、DNS概述

Internet上主机/路由器的识别是通过IP地址(由数字组成)或域名(www.baidu.com更易识别、记忆)。域名解析系统(Domain Name System,DNS),将域名解析为IP地址。DNS是Internet核心功能,用应用层协议实现,之上有应用软件完成名字的解析,非常庞大复杂。

DNS服务:域名向IP地址的翻译;主机别名;邮件服务器别名;Web服务器负载均衡(对于服务器农场,进行域名向IP地址的映射时,可以提供多个服务器地址,没有新服务时可以把服务器地址的顺序进行调整,服务器轮流出现在第一名,客户端使用排在最前面的服务器实现负载均衡)。

(1)分布式层次式数据库

DNS是多层命名服务器构成的分布式数据库,为什么不使用集中式的DNS?单点失败问题(网络瘫痪)、流量问题、距离问题、维护性问题。总之,不可伸缩。

客户端想要查询www.amazon.com的IP。客户端查询根服务器,找到com域名解析服务器;客户端查询com域名解析服务器,找到amazon.com域名解析服务器;客户端查询amazon.com域名解析服务器,获得www.amazon.com的IP地址。为了获得域名的IP地址进行了3次查询。

① DNS根域名服务器:本地域名解析服务器无法解析域名时,访问根域名服务器。根域名服务器如果不知道映射,访问权威域名服务器,获得映射,向本地域名服务器返回映射。

② 顶级域名服务器(TLD, top-level domain):负责com, org, net, edu等顶级域名和cn, uk, fr等国家顶级域名。Network Solutions维护com顶级域名服务器,Educause维护edu顶级域名服务器。

③ 权威(Authoritative)域名服务器:组织的域名解析服务器,提供组织内部服务器的解析服务。组织/服务提供商负责维护。

④ 本地域名解析服务器:不严格属于层级体系。每个ISP有一个本地域名服务器,即默认域名解析服务器;当主机进行DNS查询时,查询被发送到本地;域名服务器作为代理(proxy),将查询转发给(层级式)域名解析服务器系统。

(2)DNS查询

cis.poly.edu的主机想获得gaia.cs.umass.edu的IP地址。迭代查询,被查询服务器返回域名解析服务器的名字,“我不认识这个域名,但是你可以问题这服务器”。递归查询,将域名解析的任务交给所联系的服务器。

例题:如果本地域名服务器无缓存,当采用递归方法解析另一网络某主机域名时,用户主机、本地域名服务器发送的域名请求消息数分别为(一条、一条)。【解析】域名递归解析过程中,主机向本地域名服务器发送DNS查询,被查询的域名服务器代理后续的查询,然后返回结果。所以,递归查询时,如果本地域名服务器无缓存,则主机和本地域名服务器都仅需要发送一次查询。

2、DNS记录

(1)缓存与更新

只要域名解析服务器获得域名(IP映射),即缓存这一映射,降低查询次数,提高响应速度。一段时间过后,缓存条目失效(删除)。

本地域名服务器一般会缓存顶级域名服务器的映射,因此根域名服务器不经常被访问。

记录的更新/通知机制(RFC 2136),Dynamic Updates in the Domain Name System(DNS UPDATE)。

(2)格式

资源记录(RR, resource records)格式(name, value, type, ttl)。

Type=A,Name:主机域名,Value:IP地址。

Type=NS,Name:域(edu.cn),Value:该域权威域名解析服务器的主机域名。

Type=CNAME,Name:某一真实域名的别名,Value:真实域名。如www.ibm.com对应servereast.backup2.ibm.com。

Type=MX,Value是与Name相对应的邮件服务器。

3、DNS协议与消息

DNS协议是查询(query)和回复(reply消息)式协议,查询和回复消息格式相同。

消息头部Identification,16位查询编号,回复使用相同的编号;flags查询或回复、期望递归、递归可用、权威回答。

4、注册域名

假设你刚刚创建了一个公司“Network Utopia”,在域名管理机构(如Network Solutions)注册域名networkutopia.com。需要向域名管理机构提供你的权威域名解析服务器的名字和IP地址,域名管理机构向com顶级域名解析服务器中插入两条记录。

(networkutopia.com, dns1.networkutopia.com, NS)

(dns1.networkutopia.com, 212.212.212.1, A)

在权威域名解析服务器中为www.networkuptopia.com加入Type A记录,为networkutopia.com加入Type MX记录。

猜你喜欢

转载自blog.csdn.net/yaocong1993/article/details/82851624