二、计算机网络自顶向下 应用层
目录
一些名词
- application architecture 应用程序体系结构
- client-server architecture 客户-服务器体系结构
- P2P p2p architecture p2p体系结构
- process 进程通信
- socket 套接字
- API 应用程序编程接口
- reliable data transfer 可靠数据传输
- bandwidth-sensitive application 带宽敏感应用
- SSL Secure Socket Layer 安全套接字层
- HTTP HyperText Transfer Protocol 超文本传输协议
- URL地址如https://bbs.pcauto.com.cn/topic-17962072.html bbs.pcauto.com.cn 就是主机名 /topic-17962072.html 路径名
- RTT 往返时间 Round-Trip Time 一个短分组从客户到服务器然后再返回客户所需花费时间。
- SMTP Simple Mail Transfer Protocol 简单邮件传输协议
- DNS Domain Name System 域名系统
- TDL Top-Level Domain 顶级域
1、进程通信
web程序中 浏览器为client web服务器是服务器。在P2P文件共享系统中,一个进程能够既是客户又是服务器。
1进程通信:
在给定的一对进程之间的通信会话场景中,发起通信的进程被标识为客户,在会话开始时等待联系的进程是服务器。
进程通过一个称为套接字的软件接口向网络发送报文和从网络接收报文。进程可以类比于房子,套接字类比于门。进程想向另外一个进程发送报文时,需要将报文推出门(套接字),到另外一个门之间有一定运输的基础设施。
2、 应用程序开发者对于运输层的控制仅限于:①选择运输层协议②也许能设定几个运输层参数,如最大缓存和最大报文段长度
一旦选择了一个运输层协议,应用程序就建立在由该协议提供的运输层服务之上。
3进程寻址:为了表示接收进程,需要定义两种信息:①主机的地址通过ip ②定义目的主机接收进程标识符通过端口
2.2 可供应用层选择的运输层协议能为调用它的应用车鞥徐提供什么服务呢?
- 可靠数据传输
- 吞吐量
- 定时
- 安全性
2.3 运输服务
tcp服务模型包括面向连接服务和可靠数据传输服务。
- TCP
应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息。所谓握手提示客户端和服务端为大量额分组到来做好准备。握手阶段后,一个TCP连接就在两个进程的套接字之间建立了。当结束发送报文时,必须拆除该连接。
通信进程能够依靠TCP,无差错,按适当顺序交付所有发送的数据
- 面向连接的服务
- 可靠传输服务
- UDP
TCP 安全性 SSL
无论是tcp还是udp 都没有提供任何加密机制,在发送方和接收方之间的链路传送,就可能在任何中间链路被嗅探和发现。TCP的加强版本,称为安全套接字,SSL,用SSL加强后的TCP不仅能做传统TCP所做的一切,而且提供了关键的进程到进程的安全性服务,包括加密、数据完整性和端点鉴别。
注意SSL不是与TCP和UDP在相同层次上的运输层协议,而是一种对TCP的加强,这种强化是在应用层上实现的。
web http协议
文件传输 ftp 协议
电子邮件 多种协议
目录服务 DNS协议
P2P
2、Web 和HTTP
2.1 HTTP 概况 无状态
HTTP使用TCP 作为它的支撑运输协议,TCP为HTTP提供可靠数据传输服务。。
假如某个客户在短短的几秒内两次请求同一个对象,服务器并不会因为刚刚为该客户提供了该对象就不再做出反应,而是重复发送该对象,就像服务器已经完全忘记不久之前所做的事一样。
2.2 非持续性连接和持续性连接
客户-服务器的交互是经TCP进行的,在一个相当长的时间内通信,应用程序的研制者就需要做一个重要决定
非持续性连接:即每个请求/响应对是经一个单独的TCP连接发送。
缺点:首先必须为每一个请求对象建立和维护一个全新的连接,对于每个这样的连接,在客户和服务器都需要分配TCP的缓冲区和保持TCP变量,其次,每一个对象都要经受两倍RTT的交付时延,一个RTT用于请求对象一个用于接收对象
持续性连接: 还是所有的请求以及响应经相同的TCP连接发送。
默认情况下采用持续连接。
2.3 HTTP 报文格式
报文格式
1、请求报文
第一行是请求行:
方法字段比如:get post/head/put/delete
URL字段 请求对象的标识
HTTP版本字段
首部行:
首部行 Host:www.someschool.edu 指明主机
connection :close代表告诉服务器不需要使用连续连接,发送请求完后就关闭这条连接。
空行 在首部行和请求体之间有个空行
请求实体 使用get方法时请求实体为空,使用post时使用该实体。
2、响应报文
状态行
三个 协议版本 状态码 状态信息
首部行
Connection:
Date 服务器从文件系统检索到对象,插入到响应报文并发送该报文时间
server 报文产生服务器
Content-type 指示实体对象是HTML文件
Content-length 指示了被发送对象字节数
实体行
报文的主要部分,返回所请求对象本身。
3、cookie
HTTP服务器是无状态的,然后web站点通常希望能够识别用户,所以使用cookie
2.4 STMP与HTTP对比
HTTP是一个拉协议,而STMP基本上是一个推协议
2.5 DNS 目录服务
识别主机有两种方式 主机名或者ip地址
DNS :
- 一个分层的DNS服务器
- 一个使得主机能够查询分布式数据库的应用层协议
- DNS通常是运行BIND berkeley Internet Name Domain 软件的UNIX机器 运行在UDP之上,使用53端口
DNS通常是由其他应用层协议所使用的,包括HTTP,SMTP和FTP,将用户提供的主机名解析为IP地址。除此之外还有其他服务
- 主机别名 host aliasing 有着复杂主机名的主机能拥有一个或多个别名。
- 邮件服务器名 mail server aliasing
- 负载均衡 load distribution 用于在冗余的服务器之间进行负载均衡。
DNS 服务器是分布式的,而且是分布式数据库的精彩典范!为什么采用分布式,而不是集中式?
- 单点故障 如果单个DNS服务器,崩溃后,整个因特网瘫痪
- 通信容量 单个DNS服务器处理所有DNS查询
- 远距离的集中式数据库
- 维护 维护困难
根DNS服务器 A-M 13个根服务器(冗余备份的)分布于北美洲
顶级DNS服务器 负责域名如 com org net edu gov 以及所有国家的顶级域名如cn uk等
权威DNS服务器
本地服务器
在一个请求链中,当某DNS服务器接收一个DNS回答时,它能将该回答信息缓存在本地存储器中。
- 分布式、层次数据库
- DNS 缓存