应用与分层的体系结构
协议、服务和分层示例
协议的概念:协议是控制两个或多个通信体之间进行交互的一组规则;协议的目的是提供多种类型的通信服务。
计算机中的服务器进程监听来自端口的服务请求。**端口就是一个地址,用来表明哪一个进程将要接收发往特定机器的消息。**应用广泛的应用程序都有其服务器指定的公认端口号,以便其他计算机的客户端进程能够容易地按要求发送请求,服务器对这些请求做出响应。
通过万维网进行浏览
通过万维网(WWW)框架我们可以访问已经连接到Internet上的计算机中的文件,这些文件以**超文本标记语言(HTML)**编写而成,可以包括文本、图表和其他媒体格式,并通过文件中的链接互相联系起来。
通过浏览器程序访问Web页,浏览其中所显示的文档,并可以单击链接来访问其他文档。每一个链接都为浏览器提供了统一资源定位符(URL),URL可以指定存储文档的机器名和包含请求文档的文件名。
超文本传输协议(HTTP)详细规定了客户端和服务器端交互与文件读取有关的规则,这些规则还制定了表达请求和响应时的措辞方式。协议假定客户端和服务器端能够直接交换消息。通常情况下,客户端软件需要在HTTP请求之前建立起双向连接。
从Web上获取文档:
1、用户单机链接,以表明需要获取哪份文档,浏览器必须确定包含此份文档的计算机的网络地址。为此,浏览器要向本地域名服务器发送一个查询。
2、一旦获得该地址,浏览器就会同指定机器的服务进程建立起连接,通常是TCP连接,为了使连接建立成功,这个指定的机器必须做好接受TCP连接的准备。
3、浏览器运行HTTP的客户端版本,生成一个请求,规定文档名和可处理的文档格式。
4-6、包含所请求文档的机器运行HTTP的服务器端版本。发送包含以正确格式存储的所需文档HTTP响应,以此来响应HTTP请求。
7-8、用户开始浏览文档。在指定时间后,TCP连接断开。
从Web上获取文档:HTTP消息交换
事件 | 消息内容 |
---|---|
1、用户选取文档 | |
2、客户端网络软件定位服务器主机,建立双向连接 | |
3、HTTP客户端发送请求文档的报文 | GET /comm.html HTTP/1.1 |
4、HTTP驻留程序TCP端口80侦听并解释报文 | |
5、HTTP驻留程序发送给客户端结果代码和信息描述 | HTTP /1.1 200 OK DATE : Tuesday,29 Jan 2020 14:00 GMT Server : Apache/ 1.3.23(UNIX) Last Modified : 28 Jan 2020 14:00 GMT Content-Length : 9999 Content_Type : text/html |
6、HTTP驻留程序读取文件并通过TCP端口发送该文件 | < html > < head >< title >< /title >… < font face=“Arial” >What is Communication? < /font > |
7、客户浏览器解释HTML格式并显示文本 | |
8、连接一旦空闲一段时间后,HTTP驻留程序断开本次连接 |
注:
1)步骤五中,驻留程序发送状态行和所要发送信息的描述,结果代码200表示客户请求成功。接下来开始发送文件,该消息还包含服务器软件信息、文档长度(9999字节)和文档内容的格式(text/html格式)。如果请求时一幅图片,则它可能是image/gif格式。如果请求失败,服务器将发送另一个不同的结果代码,该代码通常表示失败的类型,如404表示找不到所请求的文件。
2)步骤六中,HTTP驻留程序通过TCP连接来发送文件,与此同时客户端接受该文件并加以显示(步骤七)。服务器保持TCP连接为活动状态,以此接受来自客户端的其他请求。如果TCP连接空闲时间达到某一特定值,服务器将断开本次TCP连接。
HTTP协议仅仅参与到两个对等进程(客户端和服务器端)之间的交互,协议假设对等进程间的交换是直接的,但事实上客户端机器和服务器端通常并不是直接相连的**(两个对等进程的交互是虚拟的,通过TCP间接发生)**,TCP协议提供了网络生两个机器进程间的通信服务(以正确顺序无差错传输字节流的双向连接)。
每一个HTTP进程都将自己的消息插入缓冲区,TCP以信息块(段segment)的形式将缓冲区的内容传输到其他的TCP。每一段都包含有端口号和HTTP消息信息,HTTP调用低于该层的TCP所提供的服务。
HTTP应用协议调用TCP
当HTTP客户端软件首次需要建立TCP连接时,客户端软件即通过一系列的**套接字系统调用(socket system call)**建立起连接。这些调用除了在套接字系统调用时要将控制权交给操作系统内核外,其他都类似于函数调用。*套接字系统调用规定了特定的动作,还可能包含了套接字类型(如TCP或UDP)和地址信息等参数。*这样HTTP层与TCP层之间的交互就可以通过这些套接字系统调用来实现。
DNS查询
在HTTP执行前,客户端首先要执行一个DNS查询,以获取对应于域名的IP地址。这一步通过向DNS服务器发送消息来完成。DNS位于Internet多台机器的分布式数据库,他们可以将域名和IP地址进行转换,并提供电子邮件的路由信息。
DNS解析(http是基于TCP连接的,而TCP则是通过IP地址去识别访问的),DNS 解析就是域名转化成IP地址的过程。
查询类型(四种DNS查询)
第一种是本地解析,就是客户端可以使用缓存信息就地应答,这些缓存信息是通过以前的查询获得的;
第二种是直接解析,就是直接由所设定的DNS服务器解析,使用的是该DNS服务器的资源记录缓存或者其权威回答(如果所查询的域名是该服务器管辖的);
第三种是递归查询,即设定的DNS服务器代表客户端向其他DNS服务器查询,以便完全解析该名称,并将结果返回至客户端。
第四种是迭代查询,即设定的DNS服务器向客户端返回一个可以解析该域名的其他DNS服务器,客户端再继续向其他DNS服务器查询。
2、DNS查询和响应示例
直接解析过程:
事件 | 消息内容 |
---|---|
1、应用程序请求域名到地址的转换 | |
2、解析器构成查询消息 | Header : OPCODE=SQUERY Question : QNAME=tesla.comm.toronto.edu. , QCLASS=IN,QTYPE=A |
3、解析器发送封装查询消息的UDP数据报 | |
4、DNS服务器查询地址,做好响应准备 | Header : OPCODE=SQUERY, RESPONCE, AA Question : QNAME= tesla.comm.toronto.edu. , QCLASS=IN,QTYPE=A Answer : tesla.comm.toronto.edu. 86400 IN A 128.100.11.1 |
5、DNS发送封装响应消息的UDP数据报 |
注:
1)DNS消息报头的OPCODE值表明该消息为标准查询,查询的问题部分包含如下信息:QNAME指出所要翻译的域名;DNS服务器可以处理多种查询(IN表示是一个Internet地址),查询类型有QTYPE所确定(A表示要求将域名翻译为一个IP地址)。
2)步骤四中服务器发回的短消息报头设置了响应和授权应答位,表明响应来自管理域名的组织。问题部分同查询的问题部分相同,应答部分包含提供IP地址的域名,紧跟其后的是生存期字段,该字段以秒为单位规定信息在客户端缓存时间的长短。接下来是QCLASS和QTYPE值,IN值再次表明为Internet地址。最后给出与域名对应的IP地址。
3)DNS查询和响应消息利用用户数据报协议(UDP)提供的通信服务进行传输。UDP客户端将一个报头(header)附加到用户信息中,用以提供端口信息(DNS端口为53),UDP客户端还将结果数据块封入IP包。UDP服务是无连接的,无需建立连接即可直接发送数据报(DNS查询和响应包含短消息,从而使得UDP更加适合于传输查询和响应)。
SMTP和电子邮件
利用简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)进行电子邮件传输
事件 | 消息内容 |
---|---|
1、邮件应用程序建立到本地SMTP服务器的TCP连 接(端口25) |
|
2、SMTP驻留程序将如下消息发送到客户端,表明 已做好接受邮件的准备 |
220 tesla.comm.toronto.edu ESMTP Sendmail 8.9.0/8.9.0; Thu, 2 Jul 1998 05:07:59 -0400 (EDT) |
3、客户端发送HELO消息并对自己进行标识 | HELO bhaskara.comm.utoronto.ca |
4、SMTP发送250消息,表明客户端可以继续发送 | 250 tesla.comm.toronto.edu Hello bhaskara.comm [128.100.10.9], please to meet you |
5、客户端发送发送端的电子邮件 | MAIL FROM: < banerjea@comm.utoronto.ca > |
6、如果成功,SMTP驻留程序将返回250消息 | 250 < banerjea@comm.utoronto.ca >… Sender ok |
7、客户端发送接收端的地址 | RCPT TO: < alg@nal.utoronto.ca > |
8、返回250消息 | 250 < alg@nal.utoronto.ca >… Recipient ok |
9、客户端发送DATA消息,请求发送邮件消息的权限 | DATA |
10、SMTP驻留程序发送消息,准许客户端发送邮件消息 | 354 Enter mail, end with “.” on a line by itself |
11、客户端发送实际文本 | Hi AL, This section on email sure needs a lot of work… |
12、驻留程序指示已收到待传递的消息,返回消息ID | 250 FAA00803 Message accepted for delivery |
13、客户端指示邮件会话结束 | QUIT |
14、驻留程序确认绘画结束 | 221 tesla.comm.toronto.edu closing connection |
在传输电子邮件消息之前,引用进程必须建立到本地SMTP服务器的TCP连接(步骤一)。此后发生的一系列数据交换都使用SMTP协议,在这些交换中,客户端识别出自身、发送方和接收方(步骤2-8)。然后,客户端将SMTP服务器所接受的消息传输到服务器,并由服务器传递出去,邮件传送任务即告完成(步骤9-12),这样就结束了这次邮件会话。本地SMTP服务重复这一过程,将消息传输给目标SMTP服务器。为了获取目标SMTP服务器的地址,本地服务器要执行一个类型为MX(邮件交换)的DNS查询。SMTP在目标机器可用时工作最有效,为此,PC环境的用户通常使用POP3从邮件服务器上获取电子邮件。
TCP和UDP传输层服务
电子邮件、DNS查询与HTTP示例都展示了多个协议如何利用TCP和UDP协议所提供的通信服务进行操作,TCP和UDP协议通过IP所提供的无连接分组网络服务执行操作。
UDP提供Internet上主机进程之间无连接的数据报传输,并提供端口编号,以识别每一个主机的源进程和目标进程。
TCP提供了Internet上主机进程之间字节流的可靠传输,进程将字节写到缓冲区,并通过TCP跨Internet传输。
事实上,在TCP和UDP的基础上已经开发出了一整套协议,因此这一点证实了分层概念的有效性。
来源:CSDN
作者:我从幼儿园毕业
链接:https://blog.csdn.net/smart_car_a5/article/details/104105621