--应用层

Posted 普通网友

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了--应用层相关的知识,希望对你有一定的参考价值。

DNS的层次结构:

  • 根域名服务器:根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。因特网上有13个根域名服务器,尽管我们将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。需要注意的是,根域名服务器用来管辖顶级域(如.com),通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。

  • 顶级域名服务器:这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)。

  • 权限域名服务器:每台主机都必须在授权域名服务器处登记。为了更加可靠地工作,一台主机最好至少有两个授权域名服务器。实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。

  • 本地域名服务器:本地域名服务器对域名系统非常重要。每个因特网服务提供者(ISP), 或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。事实上,我们在Windows系统中配置“本地连接”时,就需要填写DNS地址,这个地址就是本地DNS (域名服务器)的地址

2.3、域名解析过程

解析为IP地址

域名解析有两种方式:递归查询和递归与迭代相结合的查询

递归查询:靠别人

迭代查询:靠自已

  • 主机本地域名服务器 的查询采用的是 递归查询

也就是说,如果本地主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份(主机靠本地域名服务器),向根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。在这种情况下,本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的[见下图a中的步骤③~⑥]。在步骤⑦中,本地域名服务器从根域名服务器得到了所需的IP地址,最后在步骤⑧中,本地域名服务器把查询结果告诉主机m.xyz.com。

  • 本地域名服务器根域名服务器 的查询采用 迭代查询

当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪个顶级域名服务器进行查询”。然后让本地域名服务器自己(本地域名服务器靠自己)向这个顶级域名服务器进行后续的查询,如图(b)所示。 同样,顶级域名服务器收到查询报文后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应向哪个权限域名服务器查询。最后,知道所要解析的域名的IP地址后,把这个结果返回给发起查询的主机

高速缓存:为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。当一个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中。这样,当另一个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的IP地址,而不需要再去向其他DNS服务器询问。因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息

3、文件传输协议FTP


3.1、FTP的工作原理

1)文件传送协议

  • 文件传送协议FTP ( File Transfer Protocol)功能:

  • 提供 不同种类主机系统 (硬、软件体系等都可以不同)之间的文件传输能力

  • 用户权限管理 的方式提供用户对远程FTP服务器上的文件管理能力

  • 匿名 FTP的方式提供公用文件共享的能力。

  • FTP使用 TCP 实现可靠传输

  • 简单文件传送协议TFTP (Trivial File Transfer Protocol)

trivial [ˈtrɪviəl] 不重要的;琐碎的;微不足道的

  • 只需要知道这是一个很小,而且易于实现的一种文件传送协议即可

  • 优点:非常适合 UDP 环境

2)FTP服务器和用户端

  • FTP是基于客户/服务器(C/S)的协议

  • 用户通过一个客户机程序连接至在远程计算机上运行的服务器程序

  • 依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器

  • 连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端

3)FTP工作原理

  • 登陆:ftp地址、用户名&密码

  • 匿名登陆

  • 互连网中有很大一部分FTP服务器被称为“匿名”(Anonymous) FTP 服务器。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。

  • Anonymous (匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”登陆FTP服务,就可访问远程主机上公开的文件

  • FTP使用 TCP 实现可靠传输

  • 服务器进程

  • 1个主进程:负责接收新的请求(理发店的迎宾迎接新的顾客)

  • n个从属进程:负责处理单个请求(Tony老师给每个顾客理发)

  • 一个FTP服务器进程可同时为多个客户进程提供服务

  • 服务器进程工作步骤

  • ①打开熟知端口 21 (控制端口),使客户进程能够连接上

  • ②等待客户进程发连接请求

  • ③启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止

  • ④回到等待状态,继续接收其他客户进程的请求

  • FTP服务器必须在整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置

3.2、控制连接和数据连接

两个圆柱表示系统正在运行的进程

  • FTP在工作时使用 两个并行的TCP连接

  • 一个是控制连接(端口号 21 )

  • 一个是数据连接(端口号 20 )

  • 使用两个不同的端口号可使协议更加简单和更容易实现

  • 这两个连接就是 从属进程

  • 控制连接

  • 建立控制连接:服务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接

  • 控制连接传送控制信息(请求):控制连接用来传送控制信息(如连接请求、传送请求等)。FTP客户发出的传送请求,通过控制连接发送给服务器端的控制进程

  • 传输模式:控制信息都以 7位ASCII格式 传送

  • 始终打开:在传输文件时还可以使用控制连接,因此控制连接整个会话期间一直保持打开状态

  • 数据连接

  • 数据连接端口号为 20:是否使用TCP20端口建立数据连接与传输模式有关

主动方式 使用TCP20端口

被动方式 由服务器和客户端自行协商决定(端口>1024)

  • 创建数据连接和数据传送进程:服务器端的控 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传送进程”和“数据连接”

  • 数据传送进程传送文件:数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送

  • 传送完毕后关闭:在传送完毕后关闭“数据连接”并结束运行

  • FTP传输模式

  • 文本模式: ASCII模式, 以文本序列传输数据

  • 二进制模式: Binary模式, 以二进制序列传输数据

因为FTP使用了一个分离的控制连接,所以也称FTP的控制信息是 带外(Out-of-band) 传送 的。使用FTP时,若要修改服务器上的文件,则需要先将此文件传送到本地主机,然后再将修改后的文件副本传送到原服务器。网络文件系统(NFS)允许 进程打开 一个远程文件,并在该文件的某个特定位置开始读写数据。这样,NFS可使用户复制一个大文件中的一个很小的片段,而不需要复制整个大文件

4、电子邮件


4.1、电子邮件系统概述

1)电子邮件的信息格式

2)组成结构

客户A要给客户B发邮件,在客户端软件写好邮件后发送,先到发送方邮件服务器上,然后发送到接收方邮件服务器上,最后发送给客户B的客户端上

4.2、SMTP协议

1)简单邮件传输协议SMTP

SMTP(Simple Mail Transfer Protocol)规定了在两个相互通信的SMTP进程之间应如何交换信息

  • 两个STMP进程:负责发送邮件的SMTP进程就是 SMTP客户,负责接收邮件的进程就是 SMTP服务器

  • SMTP规定了14条命令(几个字母)和21种应答信息(三位数字代码+简单文字说明)

  • SMTP特点TCP连接、端口号 25C/S 网络应用模型

  • SMTP通信三个阶段:连接建立——邮件传送——连接释放

2)通用因特网邮件扩充MIME

  • SMTP的缺点
  1. SMTP 不能传送 可执行文件 或者其他二进制对象

  2. SMTP仅限于传送 7位ASCI码,不能传送其他非英语国家的文字

  3. SMTP服务器会 拒绝超过一定长度的邮件

MIME可以理解为在SMTP协议上的一种扩充手段

  • MIME原理图

  • MIME功能:使电子邮件系统可以支持声音、图像、视频、多种国家语言等等。使得传输内容丰富多彩 。MIME最早应用于邮件扩充,但是现在逐步应用于浏览器

4.3、POP3协议

1)邮局协议POP3

Post office protocol:POP

第3版

  • POP3特点TCP 连接、端口号 110C/S 网络应用模型

  • POP3工作方式:(接收方把邮件从接收端邮件服务器读取出来后,对邮件的处理有两种方式)

  • 下载并保留(在服务器)

  • 下载并删除

可以看出邮局协议POP3是非常简单、功能有限的一种邮件读取协议,对于邮件要么下载保留要么下载删除,不能根据用户需要决定是否上传到用户计算机上。因此有一种新的网际报文存取协议IMAP

2)网际报文存取协议IMAP

IMAP协议比POP协议复杂。当用户PC上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。

IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分(先看正文,有WiFi的时候再下载附件)

4.4、基于万维网的电子邮件

使用 HTTP 协议

现在日常生活中普遍使用的一种发邮件方式。通过使用浏览器,登陆电子邮箱,就可以发送邮件了。不需要下载邮件客户端

特点:用户代理发送邮件和读取邮件都使用 HTTP 协议。邮件服务器直接的发送环节还是使用SMTP协议(简单邮件传输协议)

4.5、总结

5、万维网WWW和HTTP协议


5.1、WWW的概念与组成结构

  • 万维网www是什么:万维网www (World Wide Web)是一个大规模的、联机式的信息储藏所/资料空间,是无数个网络站点和网页的集合

  • 如何访问/获取这些资源:统一资源定位符 URL 唯一标识——>资源(文件、视频、音频…)

  • URL一般形式

  • 端口和路径可以省略

  • URL不区分大小写

  • 如何操作才能定位到资源:用户通过点击超链接( 百度一下,你就知道获取资源,这些资源通过超文本传输协议(HTTP)传送给使用者。

  • 万维网以客户/服务器(C/S)方式工作:用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序。

  • 万维网www是什么:万维网使用超文本标记语 HTML )使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面,并能够在自己的屏幕上显示出来

5.2、超文本传输协议HTTP

  • **HTTP协议功能:**HTTP(Hyper Text Transfer Protocol)协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器

计算机网络——应用层

应用层协议

在传输层之上,便是应用层。传输层的 UDP 报文和 TCP 报文段的数据部分就是应用层交付的数据。

应用层直接为用户提供服务,应用层有很多协议,每一个协议对应着计算机上的一个服务

不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如DNS、FTP、Telnet、SMTP、HTTP、RIP、NFS等协议都是用于解决其各自的一类问题。

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

一、DNS

1、DNS 是什么

DNS 全名叫 Domain Name Server,中文俗称“域名服务器”,在 Internet 上域名与 IP 地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器,将域名(机器名) 转换为 IP地址
DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务。这里的分布式数据库是指,每个站点只保留它自己的那部分数据。如果整个因特网都使用一个域名服务器,负荷太大, 所以 DNS 设计成一个分布式的数据库,即使单个主机出故障也不会妨碍整个 DNS 系统。另外 DNS 使得大多数域名都能在本地解析,仅少量解析需要在因特网上通信,因此 DNS 效率很高。

域名和 IP 是一对一关系吗?
实际上域名和 IP 是多对多关系
一个 IP 可以被多个域名指向(购买的虚拟主机)
一个域名下也可以有多个 IP(负载均衡)

2、域名结构

域名指的是用点符号分割的计算机名字。IP地址对应着网络上的各个机器,但由于IP地址没有具体字面含义,难以记忆,有时IP地址还会经常更换。引入域名来标识某台机器。
域名是全球唯一的,每次申请域名,都会在域名服务器上查询是否存在。所有域名都是以“ . ”开始的。

域名结构是树状结构,树的最顶端代表根域名,下一层是 .com、.cn 等顶级域名,再下层就是二级、三级、四级域名。

顶级域名代表服务器或网站的性质,常见有com(商用)、cn(中国)、net(提供信息)、edu(教育)、gov(政府)等等。 

二级域名:每个人都可以申请的,可以在顶级域名下申请,比如www.esyc.com中esyc就是一个二级域名。在二级域名下你就可以注册其他域名了。

三级域名:www.mail.esyc.com中mail就是三级域名。在www.esyc.com这个域名注册这个三级域名的时候无需在征得com域名的同意。即一个域创建子域的时候不需要征求上级同意。

当然域名可以3级可以4级可以5级等等,级别是没有限制的,只需要满足,一个域名的各个组成部分不超过63个字符长,总长不超过255个字符长。

3、域名服务器

根域名服务器:最高层次的域名服务器,根域名服务器知道所有顶级域名服务器的域名和IP地址任何一个本地域名服务器要对互联网上的任何域名进行解析,只要自己无法解析,就会首先求助于根域名服务器
顶级域名服务器管理在该顶级域名服务器下注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步需要去找的域名服务器的IP地址)。
权限域名服务器(权威域名服务器):负责一个区的域名服务器。当一个权威域名服务器不能给出最终的查询结果时,就会告诉发出请求方,下一步应该去找哪一个权威域名服务器。
本地域名服务器(递归服务器)主机发出 DNS 查询请求时,该请求首先会发给本地域名服务器

理论上讲,任何标准域名的解析都需要经过层级式的域名解析。即首先要通过第一层的根域名服务器的指引,才能去下面的顶级域名服务器寻找。但是实际应用,提供接入服务的服务商的缓存域名服务器上可能已经有了域名与 IP 映射的缓存。

4、DNS 解析流程

● 在浏览器中输入 www.qq.com 域名,浏览器先检查自身缓存中有没有被解析过的这个域名对应的 IP 地址,如果有,就调用这个 IP 映射,完成域名解析。
● 如果浏览器缓存中未命中,操作系统会检查本地的 hosts 文件是否有该域名和 IP 的映射,如果有,就调用这个IP地址映射,完成域名解析。
● 如果 hosts 里也没有这个域名的映射,则向本地域名服务器(LDNS)发送请求,看是否有这个域名的映射关系,如果有,直接返回,完成域名解析。(LDNS 一般在城市的某个角落,距离你不会很远,一般都会缓存域名解析结果,大约 80% 的域名解析到这里就完成了)
● 如果 LDNS 仍然未命中,LDNS 就向根服务器发送查询请求,根服务器里面记录的都是各个顶级域所在的服务器 IP,根服务器会根据域名后缀返回对应的顶级域名服务器位置。当向根请求 www.qq.com 的时候,根服务器就会返回 .com 服务器的位置信息。
● LDNS 拿到 .com 的权威服务器地址以后,就会询问 .com 的权威服务器,知不知道 www.qq.com 的位置。这个时候 .com 权威服务器查找并返回 www.qq.com 服务器的地址LDNS 继续向 www.qq.com 的权威服务器去查询这个地址,由 www.qq.com 的服务器给出了 IP 地址:202.173.11.10
● LDNS 服务器得到了 www.qq.com 对应的 IP 地址后以 DNS 应答包的方式传递给客户机,并把域名和对应的 IP 地址在本地缓存下来
● 客户机根据 IP 地址建立连接,并在客户端缓存域名/IP映射。

简单来说,其实只有四步:

5、DNS 服务器查询方式


(1)迭代查询

DNS 服务器会向客户机提供其他能够解析查询请求的 DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台 DNS 服务器地址,客户机再向这台 DNS 服务器提交请求,依次循环直到返回查询的结果为止。迭代查询返回的是最佳的查询点或者主机地址。本地域名服务器向根域名服务器的查询通常是采用迭代查询。

(2)递归查询

DNS 服务器必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询目标的 DNS 信息,那么该服务器会去询问其他服务器(即代替客户机去查询,而不是让客户机自己进行下一步查询),并将返回的查询结果提交给客户机。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错(表示无法查询到所需的 IP 地址)。主机向本地域名服务器的查询一般都是采用递归查询。

6、DNS 缓存机制

DNS 缓存不仅产生于操作系统,浏览器、应用程序以及 ISP(网络服务提供商)都会对 DNS 进行缓存。

一条域名的 DNS 记录会在本地有两种缓存:浏览器缓存和操作系统缓存。在浏览器中访问的时候,会优先访问浏览器缓存,如果未命中再访问OS缓存,最后再访问 DNS 服务器(一般是ISP提供),然后 DNS 服务器会递归式的查找域名记录并返回结果。

DNS 记录会有一个 TTL 值(Time To Live,存活时间),单位是秒,代表这条记录最长有效期是多少。浏览器 DNS 缓存的时间跟 DNS 服务器返回的 TTL 值无关。应用程序的 DNS 缓存是由应用程序控制的,比如 Java 网络应用程序的 DNS 缓存是由 JVM 的缓存策略控制的。OS 缓存会参考 DNS 服务器响应的 TTL 值,但是不完全等于 TTL 值。

浏览器 DNS 缓存浏览器在获取网站域名的实际 IP 地址后会对其 IP 进行缓存,减少网络请求的损耗。每种浏览器都有一个固定的 DNS 缓存时间,其中 Chrome 的过期时间是 1 分钟,在这个期限内不会重新请求 DNS。Chrome 浏览器看本身的 DNS 缓存时间比较方便,在地址栏输入:chrome://net-internals/#dns,就能看到看浏览器的缓存。

Java DNS 缓存Java 网络应用程序的 DNS 缓存是由 JVM 的缓存策略控制的,可以直接设置缓存过期时间:java.security.Security.setProperty(“networkaddress.cache.ttl”,
10);

ISP DNS 缓存:一般 ISP 服务器上缓存时间(15 min)比 OS 缓存时间长,就算刷新了本机操作系统的缓存,ISP 上仍然保留。

Windows DNS 缓存Windows 访问 DNS 后会把记录保存一段短暂的时间,可通过 ipconfig /displaydns 查看 windows 的 DNS 缓存、通过 ipconfig /flushdns 来清除缓存

IOS DNS 缓存:按照官方文档说法,IOS 设备上每 24 小时刷新一次 DNS 缓存。

7、DNS 使用 UDP 还是 TCP

DNS 占用 53 号端口,同时使用 TCP 和 UDP 协议。DNS 在进行区域传输的时候使用 TCP 协议,其它时候则使用 UDP 协议

DNS 有两种类型的 DNS 服务器,主 DNS 服务器和辅助 DNS 服务器。在一个区中主 DNS 服务器从自己本机的数据文件中读取该区的 DNS 数据信息,而辅助 DNS 服务器则从区的主 DNS 服务器中读取该区的 DNS 数据信息。当一个辅助 DNS 服务器启动时,它需要与主 DNS 服务器通信,并加载数据信息,即区域传输(zone transfer)。

区域传送(主、辅 DNS 服务器通信)时使用 TCP

辅 DNS 服务器会定时(一般时3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用 TCP而不是 UDP,因为数据同步传送的数据量比较大。 TCP是一种可靠的连接,保证了数据的准确性

域名解析时使用 UDP

客户端向 DNS 服务器查询域名,一般返回的内容都不超过 512 字节,用 UDP 传输即可。不用经过 TCP 三次握手,这样 DNS 服务器负载更低,响应更快。虽然从理论上说,客户端也可以指定向 DNS 服务器查询的时候使用 TCP,但事实上,很多 DNS 服务器进行配置的时候,仅支持 UDP 查询包。

二、万维网

1、万维网概述

万维网 WWW (World Wide Web) 并非某种特殊的计算机网络。万维网是一个大规模的、联机式的信息储藏所。万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。这种访问方式称为“链接”。

通俗的来说万维网的使用就是我们通过游览器进行网络的通信,得到的是网页及其其他的数据。

(1)超媒体与超文本

万维网是分布式超媒体 (hypermedia) 系统,它是超文本 (hypertext) 系统的扩充。一个超文本由多个信息源链接而成。利用一个链接可使用户找到另一个文档。这些文档可以位于世界上任何一个接在互联网上的超文本系统中。超文本是万维网的基础。

超媒体与超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像

(2)万维网的工作方式

万维网以客户/服务器方式工作。浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。在一个客户程序主窗口上显示出的万维网文档称为页面(page)。

(3)万维网必须解决的问题

1)怎样标志分布在整个互联网上的万维网文档?

使用统一资源定位符 URL (Uniform Resource Locator) 来标志万维网上的各种文档。使每一个文档在整个互联网的范围内具有唯一的标识符 URL。

2)用何协议实现万维网上各种超链的链接?

在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol)。HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送

3)怎样使各种万维网文档都能在互联网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链?

超文本标记语言 HTML (HyperText Markup Language) 使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。

4)怎样使用户能够很方便地找到所需的信息?

为了在万维网上方便地查找信息,用户可使用各种的搜索工具(即搜索引擎)

2、超文本传送协议 HTTP

(1)HTTP 的操作过程

为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。从层次的角度看,HTTP 是面向事务的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

(2)请求一个万维网文档所需的时间

每次的数据传输度需要进行建立连接与释放连接的过程,为了提高传输的效率,提出了以下几种方案:不释放连接、流水操作、代理服务器。

1)不释放连接

HTTP/1.0 协议每次传完一个万维网文档后会释放连接,故每请求一个文档需要2×RTT的开销。万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。目前一些流行的浏览器(例如,IE 6.0)的默认设置就是使用 HTTP/1.1。

2)流水与非流水

● 非流水线方式:客户在收到前一个响应后才能发出下一个请求。这使得客户每访问一次对象都只需要一个 RTT 时间。但服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。
● 流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文使用流水线方式时,客户访问所有对象只需要花费一个 RTT时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率

3)代理服务器

代理服务器 (proxy server) 又称为万维网高速缓存 (Web cache),它代表浏览器发出 HTTP 请求。万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源。代理服务器既是一个服务器,有时也是一个客户

3、万维网的文档

(1)超文本标记语言 HTML

超文本标记语言 HTML(HyperText Markup Language) 中的 Markup 的意思就是“设置标记”。

当浏览器从服务器读取 HTML 文档后,就按照 HTML 文档中的各种标签,根据浏览器所使用的显示器尺寸和分辨率大小,重新排版并恢复出所读取的页面。

两种不同的链接

HTML还规定了链接的设置方法。每个链接都有一个起点和终点。

XML

XML (Extensible Markup Language)是可扩展标记语言,它和HTML很相似。但XML的设计宗旨是传输数据,而不是显示数据(HTML是为了在浏览器上显示数据)。XML 不是要替换 HTML,而是对 HTML 的补充。

XHTML

XHTML (Extensible HTML) 是可扩展超文本标记语言,它与 HTML 4.01 几乎是相同的。但 XHTML 是更严格的 HTML 版本,也是一个 W3C 标准(2000年1月),是作为一种 XML 应用被重新定义的 HTML,并将逐渐取代 HTML。新的浏览器都支持 XHTML。

CSS

CSS (Cascading Style Sheets) 是层叠样式表,它是一种样式表语言,用于为 HTML 文档定义布局。CSS 与 HTML 的区别就是:HTML 用于结构化内容,而 CSS 则用于格式化结构化的内容。

(2)动态万维网文档

静态文档是指该文档创作完毕后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变。 动态文档是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建。动态文档和静态文档之间的主要差别体现在服务器一端。这主要是文档内容的生成方法不同。而从浏览器的角度看,这两种文档并没有区别。


CGI (Common Gateway Interface) 是一种标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。万维网服务器与 CGI 的通信遵循 CGI 标准。

(3)活动万维网文档

浏览器屏幕的连续刷新

每当浏览器请求一个活动文档时,服务器就返回一段程序副本在浏览器端运行。活动文档程序可与用户直接交互,并可连续地改变屏幕显示。由于活动文档技术不需要服务器的连续更新传送,对网络带宽的要求也不会太高。

三、HTTP 与 HTTPs 协议

HTTP 是用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议,是基于 TCP/IP 协议之上的应用层协议。HTTP 定义了客户端如何从服务器请求 Web 页面,以及服务器如何把 Web 页面传送给客户端HTTP 采用了请求 / 响应模型,客户端向服务器发送一个请求报文,服务器以一个状态行作为响应

1、HTTP 特点

(1)简单快速客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。
(2)灵活:HTTP 允许传输任意类型的数据对象。 正在传输的类型由 Content-Type 加以标记。
(3)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后立即断开连接。采用这种方式可以节省传输时间。

HTTP使用TCP协议作为它的支撑运输协。HTTP客户首先发起一个与服务器的TCP连接,一旦建立连接,该浏览器和服务器就可以通过套接字接口访问TCP。

(4)无状态保存:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大(缺点)。另一方面,在服务器不需要先前信息时它的应答就较快,可以更快地处理大量事务(优点)。

补充:对于无状态保存,如果用户登录一家购物网站,希望即使用户跳转到该站的其他页面也能继续保持登录状态。HTTP/1.1 虽然是无状态协议,但为了实现保存状态的功能,引入了 Cookie 技术
对于无连接,早期的 HTTP 是请求响应之后直接断开,但现在的 HTTP/1.1 不直接断开,而是等几秒钟,如果用户在这几秒钟之内有新的请求,那么还是通过之前的连接通道来收发消息,如果过了这几秒钟用户没有发送新的请求,那么就会断开连接,这样可以提高效率,减少短时间内建立连接的次数,因为建立连接也是耗时的。

(5)支持 B/S 及 C/S 模式

2、HTTP 各版本比较

3、HTTP 的请求与响应报文

(1)HTTP 请求(Request)

客户端发送一个 HTTP 请求到服务器的请求消息包括:请求行(request line)、请求头部(header)、空行和请求数据四个部分。

HTTP 请求行

HTTP 请求头

请求头信息为 “名:值” 对,之间用冒号分隔。请求头参数包括:


空行

HTTP 请求头的最后会有一个空行,表示请求头部结束,接下来为请求数据,空行一定要有。

请求数据

请求数据不一定有,比如 get 请求就没有请求数据。

(2)HTTP 响应(Response)

服务器接收并处理客户端发过来的请求后会返回一个 HTTP 的响应消息,响应包括:状态行、响应头部、空行和响应正文四个部分。

状态行: 包括协议版本、状态码和状态码描述。协议版本和请求报文一致,状态码是一个 3 位数字。


比较常见的状态码有:200 表示响应成功;302 表示跳转,跳转地址通过响应头中的 Location 属性指定;400 表示客户端请求有语法错误,不能被服务器识别;403 表示服务器接收到请求,但拒绝提供服务(认证失败);404 表示请求的资源不存在;500 表示服务器内部错误。

响应头部

4、HTTP 请求响应步骤

(1)客户端连接到 Web 服务器

用户确定要访问网页的URL,并将其输入到浏览器的地址栏中,浏览器向DNS服务器发出请求,获取Web服务器域名所对应的IP地址。HTTP 客户端通常就是浏览器,与 Web 服务器的 HTTP 端口(默认为 80)建立一个 TCP 套接字连接,比如http://www.abc.com;

(2)发送 HTTP 请求

通过 TCP 套接字,客户端向 Web 服务器发送一个请求传输网页的 HTTP 请求报文,一个请求报文由请求行、请求头部、空行和请求数据 4 部分组成;

(3)服务器接受请求并返回 HTTP 响应

Web 服务器解析请求,定位请求资源并将资源复本写到 TCP 套接字,由客户端读取。一个响应由 状态行、响应头部、空行和响应数据 4 部分组成;

(4)释放 TCP 连接

若 connection 模式为 close,则服务器主动关闭 TCP 连接,客户端被动关闭连接,TCP 连接释放;若 connection 模式为 keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

(5)客户端浏览器解析 HTML 内容

客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的 HTML 文档和文档的字符集。客户端浏览器读取响应数据 HTML,根据 HTML 的语法对其进行格式化,并在浏览器窗口中显示;

5、HTTPS 协议

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议,使用安全套接字层(SSL)进行信息交换,即 HTTPS 是使用了 TLS/SSL 加密的 HTTP 协议,基于非对称加密算法和对称加密算法的协作使用。

TLS/SSL 指加密的规范,介于 TCP 和 HTTP 之间的安全协议,不影响原有的 TCP 和 HTTP 协议。

(1)TLS/SSL协议的三个特性

TLS/SSL 协议就是客户端和服务器之间实现安全交换信息的协议。

TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 Hash、非对称加密和对称加密。先利用非对称加密实现身份认证和密钥协商,再通过对称加密算法用协商好的密钥对数据加密,最后基于散列函数验证信息的完整性。

(2)SSL 握手过程

● ClientHello:客户端请求建立 SSL 连接,向服务器提供以下信息:1)支持的 SSL 协议版本,比如 TLS1.0;2)客户端生成的随机数,用于后续对称加密阶段生成对话密钥;3)支持的加密方法,比如RSA公钥加密。
● SeverHello:服务器对客户端的请求发出回应,包括以下信息:1)确认使用的 SSL 协议版本,如果服务器与客户端支持的版本不一致,服务器关闭通信;2)服务器生成的随机数,用于后续对称加密阶段生成对话密钥;3)确认使用的加密方法,比如 RSA 公钥加密;4)服务器证书。(如果服务器也需要确认客户端的身份,就会再包含一项信息,即要求客户端提供客户端证书,比如金融机构只允许认证客户连入自己的网络)
客户端收到服务器回应后,验证服务器证书的合法性,如果证书非可信机构颁布、证书已过期等,会提出警告,选择是否还要继续通信。如果证书没有问题,客户端就从证书中取出服务器的公钥。然后向服务器发送三个信息:1)用公钥加密的随机数(pre-master key);2)编码改变通知,表示随后的信息将用双方商量好的加密方法和密钥发送;3)客户端握手结束通知,这一项同时也是前面发送的所有内容的 hash 值,用于供服务器校验。
● 服务器的最后回应,服务器收到客户端的 pre-master key 之后,计算生成本次会话所用的会话密钥,然后向客户端发送以下信息:1)编码改变通知,表示随后的信息将用双方商量好的加密方法和密钥发送;2)服务器握手结束通知,这一项同时也是前面发送的所有内容的 hash 值,用于供客户端校验。

握手阶段结束,客户端和服务器进入加密通信阶段,就是使用 HTTP 协议,只不过通信内容都用上面商定的会话密钥进行了加密。

(3)非对称加密和对称加密

1)非对称加密:用于在 SSL 握手过程中加密生成的密码。一对多通信,分为公钥和私钥,公钥加密的信息只有私钥能解开(甚至公钥都不能解密出自己加密的信息),因此掌握公钥的不同客户端之间不能互相解密信息。常见非对称加密算法有 RSA、ECC、DH 等。
2)对称加密:用于加密真正要传输的数据。一对一通信,使用相同的密钥对信息进行加密和解密,只有掌握密钥才能获取信息,能够防止信息窃听。常见的对称加密算法有 AES-CBC、DES、3DES、AES-GCM 等。不同节点采用的对称密钥不同,从而保证了信息只能由通信双方获取。
3)Hash 算法:用于验证数据的完整性。哈希函数特性是单向不可逆,对输入非常敏感,输出长度固定,对原始数据的任何修改都会改变散列函数的结果,在这里用于防止信息篡改并验证数据的完整性。常见的算法有 MD5、SHA1、SHA256(Secure Hash Algorithm,安全哈希算法)。散列函数不能脱离加密进行信息防篡改,因为明文传输时中间人可以修改信息后重新计算信息摘要,因此需要对传输的信息及信息摘要进行加密。

6、HTTP 和 HTTPs 区别


HTTPS 优点:

HTTPS 缺点:

7、Web 缓存

Web缓存(Web cache)也叫代理服务器(proxy server)。

(1)WEB缓存的作用

(2)工作过程

1) 浏览器和代理服务器建立TCP连接,并将HTTP请求发送到代理服务器
2)代理服务器见检查本地已存储对象复本。如果存储对象在其中,代理服务器向浏览器发送HTTP响应报文返回该对象
3)如果代理服务器中没有该请求对象,代理服务器和源服务器建立TCP连接,然后代理服务器向源服务器发送一个目标对象的HTTP请求。源服务器接到请求后,将请求对象通过HTTP响应发送给代理服务器
4)代理服务器收到请求的对象时,在本地建立该对象的副本,然后通HTTP响应将对象发送给浏览器

8、Web 页面请求过程

(1)DHCP 配置主机信息

假设主机最开始没有 IP 地址以及其它信息,那么就需要先使用 DHCP 来获取
① 主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口 68 的 UDP 报文段中。
② 该报文段则被放入在一个具有广播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 数据报中。
③ 该数据报则被放置在MAC 帧中,该帧具有目的地址 FF:FF:FF:FF:FF:FF,将广播到与交换机连接的所有设备。
④ 连接在交换机的 DHCP 服务器收到广播帧之后,不断地向上分解得到 IP 数据报、UDP 报文段、DHCP 请求报文,之后生成 DHCP ACK 报文,该报文包含以下信息:IP 地址、DNS 服务器的 IP 地址、默认网关路由器的 IP 地址和子网掩码。该报文被放入 UDP 报文段中,UDP 报文段有被放入 IP 数据报中,最后放入 MAC 帧中。
⑤ 该帧的目的地址是请求主机的 MAC 地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了 MAC 地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。
⑥ 主机收到该帧后,不断分解得到 DHCP 报文。之后就配置它的 IP 地址、子网掩码和 DNS 服务器的 IP 地址,并在其 IP 转发表中安装默认网关。

(2)ARP 解析 MAC 地址

①: 主机通过浏览器生成一个 TCP 套接字,套接字向 HTTP 服务器发送 HTTP 请求。为了生成该套接字,主机需要知道网站的域名对应的 IP 地址。
②: 主机生成一个 DNS 查询报文,该报文具有 53 号端口,因为 DNS 服务器的端口号是 53。
③: 该 DNS 查询报文被放入目的地址为 DNS 服务器 IP 地址的 IP 数据报中
④: 该 IP 数据报被放入一个以太网帧中,该帧将发送到网关路由器。
⑤: DHCP 过程只知道网关路由器的 IP 地址,为了获取网关路由器的 MAC 地址,需要使用 ARP 协议。
⑥: 主机生成一个包含目的地址为网关路由器 IP 地址的 ARP 查询报文,将该 ARP 查询报文放入一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器。
⑦: 网关路由器接收到该帧后,不断向上分解得到 ARP 报文,发现其中的 IP 地址与其接口的 IP 地址匹配,因此就发送一个 ARP 回答报文,包含了它的 MAC 地址,发回给主机

(3)DNS 解析域名

①: 知道了网关路由器的 MAC 地址之后,就可以继续 DNS 的解析过程了。
②: 网关路由器接收到包含 DNS 查询报文的以太网帧后,抽取出 IP 数据报,并根据转发表决定该 IP 数据报应该转发的路由器。
③:因为路由器具有内部网关协议(RIP、OSPF)和外部网关协议(BGP)这两种路由选择协议,因此路由表中已经配置了网关路由器到达 DNS 服务器的路由表项。
④: 到达 DNS 服务器之后,DNS 服务器抽取出 DNS 查询报文,并在 DNS 数据库中查找待解析的域名。
⑤: 找到 DNS 记录之后,发送 DNS 回答报文,将该回答报文放入 UDP 报文段中,然后放入 IP 数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。

(4)HTTP 请求页面

①: 有了 HTTP 服务器的 IP 地址之后,主机就能够生成 TCP 套接字,该套接字将用于向 Web 服务器发送 HTTP GET 报文。
②: 在生成 TCP 套接字之前,必须先与 HTTP 服务器进行三次握手来建立连接。生成一个具有目的端口 80 的 TCP SYN 报文段,并向 HTTP 服务器发送该报文段。
③: HTTP 服务器收到该报文段之后,生成 TCP SYN ACK 报文段,发回给主机。
④: 连接建立之后,浏览器生成 HTTP GET 报文,并交付给 HTTP 服务器。
⑤: HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将 Web 页面内容放入报文主体中,发回给主机。
⑥: 浏览器收到 HTTP 响应报文后,抽取出 Web 页面内容,之后进行渲染,显示 Web 页面。

四、远程终端协议 TELNET

TELNET 是一个简单的远程终端协议,也是互联网的正式标准。

用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或 IP 地址)

TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。

客户/服务器方式

现在由于 PC 的功能越来越强,用户已较少使用 TELNET 了。TELNET 也使用客户/服务器方式。在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。和 FTP 的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。 TELNET 使用网络虚拟终端 NVT 格式 。

网络虚拟终端 NVT 格式

客户软件把用户的击键和命令转换成 NVT 格式,并送交服务器
服务器软件把收到的数据和命令,从 NVT 格式转换成远地系统所需的格式。向用户返数据时,服务器把远地系统的格式转换为 NVT 格式,本地客户再从 NVT 格式转换到本地系统所需的格式。

五、FTP

文件传输协议(FileTransfer Protocol,FTP)属于 TCP/IP 协议族的应用层协议,其传输层使用的是 TCP,基于客户机/服务器模式工作,为数据传输提供了可靠保证。

FTP的工作过程其实就是客户机程序根据用户需要发送命令,服务器程序响应命令的过程。
需要建立两种类型的连接:控制连接和数据连接。控制连接传送客户机程序发出的命令和服务器返回的响应信息,而数据连接则负责传输文件的内容。

流程

(1)启动FTP服务器:由于FTP采用了客户机/服务器工作模式,因此在创建FTP会话之前,首先必须启动FTP服务器,并使其处于等待客户机程序的FTP请求状态。
(2)启动FTP客户机程序并建立控制连接:启动FTP客户机程序,并向FTP服务器的21端口(控制连接端口)发出主动连接的请求,以期获得FTP服务器的相应权限。服务器响应请求后便在用户协议解释器和服务器协议解释器之间建立了一条TCP连接。
(3)建立数据连接并进行文件传输:用户通过客户机程序输入FTP命令,服务器接收命令。如果命令正确且需要进行文件传输,服务器使用TCP20端口在双方之间建立另一条TCP连接,即数据连接,并通过该连接进行文件传输。当本次命令的文件传输完毕,关闭该数据连接。
(4)关闭FTP:用户执行完其所需的FTP命令后,发出退出FTP命令,控制连接关闭,本次FTP服务结束。

常见的命令如下:

六、电子邮件传输协议

一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件协议。

需要发送者邮件代理、发送者邮件服务器、接收者邮件服务器,接收者代理4个程序的参与。

● 邮件服务代理(邮件服务器)MTA:邮件服务代理通常是计算机系统中的一个进程,负责把邮件从源端传输到目的端
● 用户代理:用户代理就是我们平时见到的Gmail,QQ邮箱之类的,其中有查看邮件等功能。
● 邮件传输过程:用户编写邮件后会存放在邮件服务器,发送时根据目的邮箱地址从DNS查找对方的邮件服务器地址并发送,目的邮件服务器将邮件存储 。

邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。

电子邮件格式:

1、SMTP(Simple Mail Transfer Protocol)

简单邮件传输协议SMTP(下层协议TCP,端口25):一般用于发送邮件即由用户代理发送到邮件服务器,或邮件服务器到达目的邮件服务器
SMTP 是建立在传输层协议 TCP 上的可靠高效的邮件传输协议,采用请求/应答方式来实现。整个工作过程包括连接建立、邮件传送和连接释放3个阶段。

(1)连接建立SMTP是基于客户机/服务器模式工作的,邮件服务器在TCP的25端口守候客户机的请求当需要发送邮件时,发送主机的SMTP客户机向连接主机的SMTP服务器的TCP端口25发出建立连接请求,得到服务器确认后连接建立。此后,SMTP客户机再次向SMTP服务器发送HELO命令,并附上发送方主机名以确认SMTP服务器是否已经准备好接收邮件。如果SMTP服务器应答“250 XXXX”表示已准备好接收邮件。
(2)邮件传送SMTP客户机得到SMTP服务器的肯定回答后,随即可利用MAIL命令告诉SMTP服务器新的邮件发送操作已经开始。如果SMTP服务器已经准备好接收邮件,则以250应答代码应答。其后SMTP客户机可以用RCPT命令发送邮件接收者的目的地址,以便SMTP服务器把邮件内容最终传送到收件人的邮箱中。如果命令被接收,则返回250应答码。
然后SMTP客户机可利用DATA命令告诉SMTP服务器下面将要发送邮件内容。如果命令被接收,则SMTP服务器以354应答码应答,并认定以下的各行都是邮件内容。发送完毕后,再发送

2、POP3

邮局协议版本3POP3协议(下层协议TCP,端口110)用于由邮件服务器接收邮件到用户代理端

(1)只要用户从服务器上读取了邮件,就把该邮件删除,但是目前改进的 POP3 已经全面支持下载而不删除原邮件。
(2)无论你在客户端做了任何操作(如移动、标记),都不会反映到服务器上,也就是只能单方面地从服务器“读取”。POP3协议所用的是110端口。

3、IMAP

交互邮件访问协议IMAP协议(下层协议TCP,端口143)用于由邮件服务器接收邮件到用户代理端

IMAP 协议中客户端和服务器上的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被自动删除。IMAP 这种做法可以让用户随时随地去访问服务器上的邮件。 同时它与 POP3 的本质区别在于,在客户端的操作(包括删除)都会反映到服务器上,是一个双向的通信

七、Socket

TCP下的socket,处于应用层和运输层之间,给出了一个接口,可以使用TCP协议进行通信。

TCP 下 socket 流程:

以上是关于--应用层的主要内容,如果未能解决你的问题,请参考以下文章

SOA架构设计经验分享—架构职责数据一致性

SOA架构设计经验分享—架构职责数据一致性

[转]SOA架构设计经验分享—架构职责数据一致性

大厂架构师经验分享!全栈系统化的学习路线

微服务 API 网关建设,实践经验分享!

某城商行开发测试云平台架构设计和运维方案设计实践经验分享