1、计算机网络应用体系结构
有三种类型:
- 客户/服务器(C/S)结构:最主要的特征是通信只在客户端和服务器之间进行,客户与客户之间不进行直接通信。
- P2P(Peer to Peer)结构:每个对等端都同时具备C/S应用的客户与服务器的特征,是一个服务器与客户的结合体,对等端(既能接收请求,又能发送请求)之间直接通信
- 混合结构:既有中心服务器的存在,又有对等端(客户)间的直接通信
2、网络应用通信基本原理
C/S通信基本原理:服务器端运行的是服务器进程,被动地等待客户请求服务;客户端运行的是客户进程,主动发起通信,请求服务器提供服务。
应用进程间遵循应用层协议来交换应用层报文。
3、域名系统(DNS)
域名:采用特定的字符符号以特定的结构来表示计算机的名称,即层次树状结构的命名方法;
3.1 层次化域名空间
层次树状结构的命名方法:
树形结构:
- 便于计算机查找。比如 www.baidu.com 会先查找顶级域名com域,再查找baidu域,最后找www域
- 便于分布式管理,整个域名非常多,所有数据如果存在一台服务器上,非常庞大,也难以查找,所以把整个域名体系分开,在不同的服务器上进行存储和查找;
3.2 域名服务器
- 域名解析:将域名映射为IP地址的过程。在浏览器中输入域名回车的时候,浏览器会提交一个域名解析的请求发送给域名服务器,让域名服务器查找这个域名对应的IP地址是多少。
- 域名服务器:为了实现域名解析,需要建立分布式数据库,存储网络中域名与IP地址的映射关系数据,这些数据库存储在域名服务器上,域名服务器根据用户的请求提供域名解析服务。
- 域名服务器分类:
- 根域名服务器:主要管理根域
- 顶级域名服务器:主要管顶级域
三种顶级域名:1、国家顶级域名nTLD 2、通用顶级域名gTLD 3、基础设施顶级域名ARPA - 权威域名服务器:管理更下层次的域名
- 本地域名服务器:为用户提供服务,服务窗口,可以向其他域名服务器发送请求
题:
- 目前存在13个DNS根域名服务器
- a.root-server.net是一台DNS根域名服务器的域名;(a-m)
- 根域名服务器都是由位于同一个地理位置的服务器集群组成(错) 大多数根域服务器都是由独立的多台物理服务器构成的服务器集群,而有的根域名服务器则是由分布在不同地理位置的多台镜像服务器组成的
- DNS根域服务器对于DNS系统的整体运行具有极为重要的作用。
3.3 域名解析过程
- 递归查询:代替查询主机或其他域名服务器,进行进一步的域名查询,并将最终解析结果发送给查询主机或服务器。一层一层查询,再一层一层返回。a向b提问,b不知道,b问c,c不知道,c问d,d知道,将结果返回c再返回b再返回a。
- 迭代查询:只是将下一步要查询的服务器告知查询主机或服务器,不会帮主机进行查询。。a向b提问,b不知道,b告诉a,c可能知道,a再去问c,c告诉a,d可能知道,a问d,d知道,将结果返回a。
递归查询问题:每天会有大量的查询请求,如果每次都需要本地域名发给根域服务器,根域服务器的负载将会非常大,再由根域服务器向顶级域名服务器进行查询,还要等待结果返回,工作量会非常大,会非常慢。
现实中往往是两种方式结合起来查询。
4、万维网应用
4.1、万维网应用结构
浏览器通过超文本传输协议(HTTP)向服务器发起请求。
点击一个链接,客户机通过该链接向域名服务器发送请求,通过解析域名得到web服务器的IP地址,客户机根据该IP地址向服务器发起一个TCP连接(TCP保证传输的可靠性),建立连接之后在应用层的基础上使用HTTP协议,发出HTTP报文(携带URL),服务器根据报文和URL来找到相应的网页资源,该资源(HTML等)会作为HTTP报文的响应返回给浏览器,浏览器收到HTML等等资源后再进行解释解读,再以特定的格式显示在浏览器中。
4.2、HTTP
概念:超文本传输协议,定义浏览器如何向web浏览器发送请求以及web服务器如何向浏览器进行相应
版本:http/1.0 http/1.1 http/2 http/3
两种连接:
- 非持久连接:
- 串行方式请求每个对象,且每次都要新建立TCP连接,比如请求一个html,过程是这样的:建立TCP连接,请求web页面,释放断开TCP,浏览器开始解析页面,发现有三张图片;建立TCP连接,请求第一张图片,释放断开TCP;建立TCP连接,请求第二张图片,释放断开TCP;建立TCP连接,请求第三张图片,释放断开TCP。
- 并行方式请求每个对象,每个请求建立一个TCP连接。比如请求一个html,过程是这样的:首先建立一个TCP连接,获取到html页面,释放断开TCP,浏览器开始解析页面,发现有三张图片;并行建立3个TCP连接,同时请求三个图片资源,然后释放连接。
- 持久连接:建立一个连接后,请求对象,请求完对象后不马上断开连接,再请求第二个对象,第三个对象,请求完成后再断开连接。
- 非流水方式持久连接:建立一个连接,请求获取html文件,获取文件之后请求第一个图片,获取第一个图片后再获取第二个图片,获取后再获取第三个图片,获取成功后断开连接;
- 流水方式持久连接:建立一个链接,请求获取html文件,同时请求三个图片,获取到三个图片之后,断开连接。
HTTP报文:
- 请求报文:从客户端向服务器发送请求报文。
- GET:请求读取由URL所标识的信息
- HEAD:请求读取由URL所标识的信息的首部,无需在响应报文中返回对象
- POST:给服务器添加信息
- OPTIONS:请求一些选项的信息
- PUT:在指明的URL下存储一个文档
- 响应报文:从服务器到客户的回答。
- 1xx 信息成功 通告信息,可能还需进一步交互
- 2xx 成功 成功完成客户请求的操作,并进行相应
- 3xx 重定向 表示资源已移走,需要向新url发起请求
- 4xx 客户端错误 由于客户端错误,无法成功响应
- 5xx 服务端错误 由于服务器端错误,无法成功响应
4.3、Cookie
Cookie中文名称为小型文本文件,指某些网站为了辨别用户身份、进行会话跟踪而存储在用户本地终端上的数据。
弥补了HTTP协议无状态性的不足,有利于进行用户跟踪并提供针对性的服务,但也带来一些安全问题。
第一次访问某个网站,没有携带cookie进行访问,网站没有识别到cookie,就会为该用户创建一个id,然后把该id存进数据库里,访问记录也会存进数据库,然后把这个id通过普通http响应报文进行setCookie,把cookie设置到浏览器上;第二次进该网页的时候,就会携带cookie发起http请求,网站会根据cookie去数据库里搜索上次访问的页面或数据,返回给用户,同时存下这次的浏览记录;第三次访问同理第二次。
5、Internet电子邮件
5.1、电子邮件系统主要包括邮件服务器、简单邮件传输协议(SMTP)、用户代理和邮件读取协议等
5.2、SMTP:SMTP是Internet电子邮件中核心应用层协议,实现邮件服务器之间或用户代理到邮件服务器之间的邮件传输。
SMTP使用传输层TCP实现可靠数据传输,端口号25。
SMTP是通过3个阶段的应用层交互完成邮件的传输,分别是握手阶段、邮件传输阶段和关闭阶段。
SMTP的基本交互方式是SMTP客户端发送命令,命令后面可能携带参数,SMTP服务器对命令进行应答。
5.3、电子邮件格式与MIME
- 电子邮件包含首部、空白行、主体3部分
- MIME(多用途互联网邮件扩展):原来邮件只能传输ASCII码文本内容,后来使用MIME,可以传输别的信息,中文、图片等等。将非7位ASCII码文本内容转换为7位ASCII码文本内容,然后再利用SMTP进行传输。在邮件首部增加MIME首部行,说明主题内容,原本的数据类型以及采用的编码标准等。
5.4、邮件读取协议
- 邮局协议:POP3 发指令给服务器,服务器把邮件下载到用户电脑上,用户进行操作,对邮件的操作是对本地的操作
- 互联网邮件访问协议:IMAP 通过指令,操作邮箱,对邮件的操作是对服务器的操作
- 通过浏览器访问邮件使用HTTP协议 不依赖邮件客户端软件
6、FTP:文件传输协议
FTP-在互联网的两个主机间实现文件互传的应用层协议。
C/S模式,采用控制连接
(21端口)传输控制命令,数据连接
(20端口)传输文件内容
7、P2P应用 - 对等模式
优势:充分聚集利用了端系统(对等方主机)的计算能力以及网络传输带宽,对服务器的依赖很小。