/auther:Zynu11/
- 研发网络应用程序的核心是
写出能够运行在不同的端系统和通过网络彼此通讯的程序 - 网络应用程序体系结构有哪些
客户-服务器体系结构(C/S):web应用
P2P体系结构(P2P):流量密集型应用,文件共享,对等方协助下载器
混合体系:及时讯息应用 - C/S,P2P,混合体系结构各自的特点是什么
C/S:- 有一个总是打开的主机叫做服务器
- 客户之间不能直接通信
- 服务器具有固定的,周知的IP地址和PORT
- 服务器往往跟不上所有客户的请求,所以会使用配备大量主机的数据中心来创建强大的虚拟服务器
P2P: - 对数据中心的服务器有最小(或者没有)依赖
- 应用程序在间接连接的主机对之间使用直接通信
- 目录查询是集中式的
混合体系: - 服务器用于追踪用户的IP地址
- 用户到用户的报文在用户主机之间直接发送
- 如何分辨客户端和服务器端
在一对进程之间的通信会话场景中,发起通信的进程被标记为客户端,等待连接的被标记为服务器端 - 解释一下什么是套接字
套接字是应用层和传输层之间的接口,应用层通过套接字向网络发送或者接收数据 - 解释一下什么是API
API 就是应用程序编程接口。它是能用来操作组件、应用程序或者操作系统的一组函数 - 通信双方的进程如何寻址
通过IP地址和端口号,IP地址可以唯一的确定目标主机,端口号可以确定目标进程 - 常见的端口号
Web:80
SMTP:25
FTP: - 应用层协议定义了哪些东西
由RFC定义- 交换的报文类型
- 各种报文类型的语法
- 字段的语义
- 确定一个进程何时以及如何发送报文,对报文如何响应的规则
- 应用层协议是网络应用吗
应用层协议是网络应用的一部分,以Web应用为例,web应用包括了HTML,web浏览器,web服务器,以及一个应用层协议,该应用层协议只是应用的一部分 - web的核心是什么
HTTP,超文本传输协议 - 什么是HTTP,支撑运输协议是什么
超文本传输协议,TCP - web页面的构成
web页面是由对象组成的,一个对象(object)只是一个文件,诸如一个HTML文件,一个JPEG文件,一个java小程序,并且他们可以通过一个URL寻址,HTML基本文件通过对象的URL地址来引用页面中的其他对象 - 什么是URL
统一资源定位符,是用来在web页面中引用其他对象的,
URL的格式是 协议名://用户名:口令@主机名/文件路名/端口号 - HTTP客户端和服务器端交互的过程
HTTP使用的支撑协议是TCP,HTTP客户端首先发起一个与服务器端的TCP连接,一旦连接建立,该浏览器和服务器进程就可以通过套接字访问TCP,客户向它的套接字接口发送HTTP请求报文并从它的套接字接口接收HTTP响应报文,服务器从从它的套接字接口接收HTTP请求报文和向它的套接字接口发送HTTP响应报文。 - 什么是无状态协议
服务器向客户发送被请求的文件,而不存储任何该客户的状态信息,如果某个客户在较短时间内再次请求一个对象,服务器并不会因为刚刚已经为该用户提供了服务就不再做出反应,HTTP便是无状态协议,HTTP服务器并不保存关于客户的任何信息,可以减少服务器的负担,从而可以使开发者去开发可以同时处理数以千计的TCP连接的高性能Web服务器 - 解释一下非持续连接和持续连接
非持续连接:每一个请求/响应对都要建立一个单独的TCP连接,响应结束后便拆除连接
持续连接:对同一个服务器的所有连接及其响应经过同一个TCP发送,直到所有的请求响应发送完毕
非持续连接在TCP连接的建立和拆除有着不小的开销,相比持续连接,效率会比较低,可以通过并行来提升效率,但是不能从根本上解决问题
HTTP 1.0使用非持续连接,HTTP 1.1开始使用持续连接 - 为何非持续连接效率较低
非持续连接总的响应时间为 ,两个RTT+服务器传输HTML文件的时间,两个RTT分别问TCP连接建立时间,已经HTTP请求和应答时间 - 非持续连接的缺点
- 必须为每一个请求建立和维护一个全新的TCP连接,对于每个连接都要分配TCP的缓冲器和保持TCP相关变量,给服务器带来极大的负担
- 请求每一个对象时都要经受两倍RTT的交付时延
- HTTP报文格式
- HTTP有哪些请求方式
GET POST HEAD PUT DELETE
绝大部分的HTTP请求都是GET方式,GET方式URL字段会带有请求对象的标识 - HTTP GET 与HTTP POST的区别是什么
HTTP请求报文会有一个“实体体”,使用GET方法时该部分为空,使用POST方法时才使用该实体体,当用户提交表单时,HTTP客户端常常使用POST方法,用表单生成的请求不是必须使用POST方法,相反,HTML表单经常使用GET方法,,并在(表单字段中)所请求的URL中包括输入的数据 - HTTP HEAD请求是干什么用的
HEAD方法类似GET方法,当服务器收到一个使用HEAD方法的请求时,将会用一个HTTP报文进行响应,但是不返回响应对象,开发者常用HEAD方法进行调试跟踪 - HTTP PUT方法的作用
经常与WEb发行工具联合使用,允许用户上传对象到指定web服务器上的指定路径,PUT也被那些需要向Web服务器上传对象的应用程序使用 - HTTP DELETE
允许用户或者应用程序删除Web服务器上的对象 - HTTP Last—Modified这一行的作用
对既可能在本地客户也可能在网络缓存器上的对象缓存来说非常重要 - HTTP报文 Date
指的是服务器从它的文件系统中检索到该对象并插入HTTP响应报文的时间 - 常见的HTTP状态码
200 OK
301 Moved Permanently:请求对象已被转移,新的URL定义在响应报文的Location:首部行
400 Bad Request:请求不能被服务器理解
404 Not Founded:被请求的文档不在服务器上
505 HTTP Version Not Supported:服务器不支持报文使用的HTTP协议版本 - cookie是什么
HTTP服务器是无状态的,而web服务器通常希望可以识别用户,来做到例如限制用户的访问,或者希望把内容与用户身份联系起来
cookie技术有四个组件:- 在HTTP响应报文中有一个cookie首部行
- 在HTTP请求报文中有一个cookie首部行
- 在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理
- 位于Web站点的一个后端数据库
cookie可以用户标记一个用户,用户首次访问一个站点时,可能需要提供一个用户标示,可以在无状态的HTTP上建立一个用户会话层
潜在风险:因为cookie存有用户的很多状态,可能会导致隐私泄露
- Web缓存(代理服务器)的作用
- web缓存器可以大大减少对客户端请求的响应时间,特别是当客户端与初始服务器之间的瓶颈带宽远低于客户与web缓存器之间的带宽时更是如此。
- web缓存器可以从整体上大大降低因特网上的web流量,从而改善所有应用的性能。
- 存在web缓存器是,http工作流程
- 客户端首先向web缓存器发起tcp连接,并向web缓存器发送一个http请求
- web缓存器进行检查,看本地是否存储了请求对象的副本,如果有,就用http响应报文返回请求对象
- 如果缓存器中没有请求对象,他就与原始服务器建立连接,发起http请求
- web缓存器收到请求对象后,便会在本地复制一份,并发给客户端
- 请求副本生存到达生存时间限制是,被web客户端删除
- Web缓存的风险有哪些
web缓存器中的缓存与原始服务器中的对象不一致 - 什么是条件GET方法
web缓存存在时间不一致风险,Http引入了一个机制,叫做条件get方法,允许web缓存器证明它的对象是最新的
使用get方法时,会添加一个If-Modified-Since:首部行
工作过程:
缓存器在将对象发送给客户端的同时也在本地进行了备份,备份的同时存储了最后修改日期,一段时间后,如果缓存器上的对象被修改,缓存器便会向原始服务器发送一个条件get方法,询问自指定日期以来对象是否被修改,服务器会对该请求做出对象是否已经被修改的响应。 - 电子邮件系统由哪些部分组成
用户代理user agent,邮件服务器mail server,简单邮件传输协议SMTP - 什么是电子邮件系统中的用户代理
又名:邮件阅读器,撰写,编辑和阅读邮件,输入和输出邮件保存在服务器上 - SMTP协议工作的方法
使用TCP在客户端和服务器端之间传输报文,端口号为25
直接传输:从发送方服务器到接收方服务器
传输的三个阶段:握手,传输报文,关闭
命令/响应交互:命令:ASCII文本,响应:状态码和状态信息
报文必须为7位ASCII码 - 发送邮件的流程
Alice使用用户代理撰写邮件
alice的用户代理将邮件发送到她的邮件服务器,邮件放在报文队列中
SMTP的客户端打开到bob邮件服务器的TCP连接
smtp客户端通过TCP连接发送alice的邮件
bob的邮件服务器将邮件放到bob的邮箱
bob调用他的用户代理阅读邮件 - SMTP特点
- smtp使用持久连接
- SMTP要求报文为7位ASCII编码
- SMTP服务器使用 CRLF.CRLF决定报文的尾部
- 与HTTP协议的比较
HTTP:拉
SMTP:推
二者都是SCAII形式的命令/响应交互、状态码
HTTP:每个对象封装在各自的响应报文中
SMTP:多个对象包含在一个报文中 - 邮件报文格式
- 邮件访问协议
- POP3与IMAP
- DNS
域名解析系统 - 为什么要求DNS这个协议
ip地址不方便记忆 - DNS的特点
- 一个由分层的DNS服务器实现的分布式数据库
- 一个使得主机能够查询分布式数据库的应用层协议
- 运行在UDP之上,使用53号端口
- DNS提供了哪些服务
- 获取主机别名对应的主机规范名以及IP地址
- 邮件服务器别名到对应主机规范名以及IP地址
- 负载分配
- DNS工作原理
转换表 - 集中式DNS服务器的优缺点
优点:- 是结构简单设计方便
缺点: - 单点故障:
- 通信容量:
- 远距离的集中式数据库:
- 维护:
- 是结构简单设计方便
- DNS的层次结构
根DNS服务器
顶级域名服务器
权威DNS服务器
本地dns服务器,但是本地dns服务器不属于层次结构 - 什么是本地DNS服务器,如何查看本地DNS服务器
- 名字解析过程
- DNS有几种查询方法
递归查询
迭代查询
- DNS缓存
为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛使用了DNS缓存技术,根服务器记录通常存在本地服务器中
- DNS缓存存在的风险
权威资源与缓存结果不一致 - DNS缓存存在的问题
可以像Web缓存器一样提高性能 - DNS大致工作过程
- DNS有哪些记录
A
NS
CNAME
MX - DNS报文结构
查询和应答报文的报文格式相同
- 如何向DNS数据库中插入记录
- 向注册登记机构注册域名,向该机构提供基本的和辅助权威DNS服务器的名字和IP地址
- 对这两个服务器的每一个,机构确保将一个NS类型和一个A类型的记录输入顶级域名服务器,特别是对于基本服务器
- 确保用于Web服务器的类型A资源记录和用于邮件服务器的MX资源记录输入权威DNS服务器中
- P2P体系的拓展性如何
对服务器的依赖非常小,所有的对等方都是服务器,拓展性好于C/S体系 - 纯P2P架构的特点
- P2P需要解决的两大问题
- 如何定位所需的资源
- 如何处理对等方的加入与离开
可能的解决方案: - 集中
- 分散
- 半分散
- CDN
- 简述FTP工作过程
- FTP客户端与FTP服务器端通过21号端口联系,并使用TCP作为传输协议
- 客户端通过控制连接获得身份确认
- 客户端通过控制连接发送命令浏览远程目录
- 收到一个文件传输命令时,服务器打开一个到客户端的数据连接
- 一个文件传输完成后,服务器关闭连接
注意: - 服务器打开第二个TCP数据连接用来传输另一个文件
- 控制连接:带外连接
- FTP服务器维护用户的状态信息:对当前路径,用户账户与控制连接对应,FTP是个有状态的协议
- FTP命令,响应
在控制连接上以ASCII文本方式传输,会返回状态码和状态信息