您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

计算机网路之应用层

看计算机网络之自顶向下做的笔记,排版有些混乱。。。

应用层

  • 学习内容

    • 网络应用的体系结构
    • 网络应用的进程通信
    • Internet传输层服务模型
    • 特定网络应用及协议
    • socket编程

应用层协议原理

1.1网络应用的体系结构

客户-服务器体系结构

一个总是打开主机叫做服务器,服务于许多称作客户相应的主机  
服务器具有固定的地址(IP地址)  

P2P体系结构

实现端到端的直接通信  
自拓展性

1.2进程通信

一个进程可以看作一个程序
两个不同端系统上的进程通过计算机网络交换报文  

1.2.1客户与服务器进程

一个进程识别为客户(client),一个识别为服务器(server)
在p2p体系中,下载的识别为客户,上载的识别为服务器(或者说发起通信的识别为客户,等待联系的识别为服务器)

1.2.2进程与计算机网络之间的接口

进程之间通过套接字(后续详解)进行通信
!套接字:应用程序编程接口(API)  

1.2.3进程寻址

接受进程需要定义两种信息:  
1.主机的地址(IP地址)
2.目的主机接受进程的标识符(端口号)
流行的应用会分配固定的端口号(可在<http://www.iana.org>找到)

可供应用程序选择的运输服务

- 分类
	- 可靠数据传输
	- 吞吐量:发送进程相接受进程交付比特的速率
	- 时延
	- 安全性
- 因特网(一般TCP/IP)提供的运输服务
	- 1.TCP服务
		* 面向连接服务
		* 可靠数据传输服务
		* 拥塞控制
		* 流量控制
		* 。。。
	- 2.UDP服务
		* 无连接
		* 无可靠数据
		* 无拥塞控制
		* 。。。

1.3应用层协议

- 内容
	- 类型
	- 语法/格式
	- 语意
	- 规则

Web与HTTP

2.1 HTTP概况

HTTP:超文本传输协议
无状态协议:不维护客户端过去发送的任何信息
web网页由一个或多个对象组成
对象可以是HTML文件,图片,Java小程序。。。

2.2 HTTP连接

	1.非持续连接
	例:访问www.baidu.com 
	- 过程
		1.客户进程向百度的HTTP服务器进程(端口号80)发起TCP连接请求
		2.HTTP服务器在端口号80等待请求,接受连接后响应客户端
		3.客户端将请求消息(包含url)通过套接字(端口号80)向服务器发送请求
		4.服务器接受消息并解析出结果通过套接字返回给客户端并关闭TCP连接
	RTT(Round Trip Time):从客户端发送一个很小的数据包返回的时间
	响应时间=RTT(发起,建立TCP连接)+RTT(发送请求消息到接受到请求消息)+服务器响应的时间
	2.持久性连接
	在维持连接的情况下后续的请求和相应通过该TCP连接发送
	3.非持久性连接的问题
		1.对每一个对象都要重新建立TCP连接
		2.操作系统要对每个TCP连接开销资源
	游览器器会并行的多个TCP连接


## 2.3 HTTP的报文格式
---------------------
		
GET /admin_ui/rdx/core/images/close.png HTTP/1.1  
Host: xxx.xxx.xxx.xxx  
Connection: close  
User-agent:xxx
Accept-language: fr  


HTTP/1.1 200 OK  
Connection: close   
Server:Apache Tomcat/5.0.12  
Date:Mon,6Oct2003 13:23:42 GMT   
Content-Length:112  
Last-Modified: date  
Content-type: text/html  
data data data data data data data data 

---------------------
第一行叫做请求行, 包含了请求方式GET(类似的还有POST, PUT, DELETE),请求的URL,以及版本号  
接下来的是首部行  
HOST: 发起请求的主机  
Connetion:告诉服务器不要使用持续连接  
User-agent:游览器类型  
Accept-language:语言种类  

共有三个部分:一行状态行,六行首部行, 其余的都为实体体  
状态行:版本, 状态码, 状态  
- 常见的状态码
	* 200 OK :请求成功
	* 301 Moved Permanently:请求的对象被永久转移了,新的URL在响应报文的Location: 首部行中。客户端将自动获取新的URL
	* 400 Bad Request: 一个通用的差错代码, 该请求不能被服务器理解
	* 404 Not Found: 请求的文档不在服务器上
	* 505 HTTP Version Not Supported: 服务器不支持该版本的HTTP协议
- 首部行:
	* Connection:close 完成响应后关闭连接
	* Server:Apache Tomcat/5..12 告知服务器类型
	* Date 发送该响应报文的时间
	* Last-Modified 对象创建或最后一次修改的时间
	* Content-Length 发送对象的字节数
	* Content-type 发送对象的类型 

2.4 cookie

cookie:由于HTTP是无状态的,用于后续对用户的身份进行特定的响应
* Cookie的组成
	1. HTTP响应报文的一个cookie首部行
	2. HTTP请求报文的一个cookie首部行
	3. 在客户端的主机上保存的cookie, 游览器进行管理
	4. 在服务器上数据库储存的cookie
cookie的使用:
	1. 服务器在响应报文加上首部行 (eg: Set-cookie:6666)的同时在数据库中储存一个ID 6666
	2. 客户端在响应报文中加上首部行(eg: cookie:6666)
	3. 在后续的操作中服务器可以根据cookie的ID对用户进行特定的响应

cookie的不足:
	1.客户端浏览器可以禁用cookie,导致服务器通过cookie跟踪客户端不可靠
	2.cookie中储存的信息有限, 4k左右
	3.cookie不安全

2.5 Web缓存/代理服务器技术

作用:
	1. 减少客户请求的响应时间
	2. 减少机构或者组织的流量
	3. 实现在大范围内(Internet)的内容分发
eg:
	1. 客户端浏览器先与代理服务器建立TCP连接
	2. 代理服务器检测是否存储了客户端所需对象的副本
	3. 如果有就返回该副本, 没有就由代理服务器向该对象的初始服务器建立TCP连接
	4. 代理服务器接受到该对象后, 先存储到本地后再将该副本通过一开始建立的TCP连接返回给客户端

缓存又当客户端,又当服务器
代理服务器一般由ISP(Internet服务商)架设	
为什么大大减少响应时间:
	由于代理服务器(位于局域网中)响应的时间少于初始服务器的响应时间

问题:代理服务器上的副本并不是最新的
解决:条件性GET请求:
	代理服务器在HTTP请求报文中加入首部行: If-Modified-since:date
	告诉服务器请求的对象只有在date时间后被修改才发送更新的对象
	如果没有就发送状态码304 Not Modified

2.6 Email应用

电子邮件是一种异步的通信媒介
电子邮件系统的主要组成:
	1. 用户代理
	2. 邮件服务器
	3. 简单邮件传输协议(SMTP)
发送邮件过程:
	当张三想要发送一份邮件给李四,张三在编写完邮件后,张三的用户代理向他的邮箱服务器发送邮件,此时邮件在张三的邮件服务器外出报文队列中。再由张三的邮箱服务器发送给李四的用户服务器,李四想要查看张三发的邮件,则李四的邮箱服务器就会鉴别李四的身份(用户名和密码),此时李四就可以查看张三给他发的邮件
	当张三的邮件不能发送给李四时,张三的邮箱服务器会在报文列表中保持该邮件并以30分钟的频次尝试发送,若几天不能成功,则以电子邮件的方式通知张三

2.6.1 SMTP

SMTP是因特网电子邮件的主要的应用层协议,使用TCP可靠数据传输
邮件报文的体部分(不仅仅只有首部)只能采用7比特ASCII表示。
SMTP不使用中间服务器进行邮件的转发
端口号:25
与HTTP的对比:
	1. HTTP是一个拉取协议(pull), SMTP是一个推送协议。
	2. HTTP将每个对象封装的每一个报文里面,邮箱将所有对象封装到一个报文里面
	3. HTTP没有7比特的限制

2.6.2 邮箱报文格式

头部行:
	1.To:
	2.From:
	3.Subject:
消息体:
	消息本身(ASCII)
多媒体邮件拓展(MIME):
	在头部增加额外的行声明MIME的内容类型

2.6.3 邮件访问协议

由于SMTP协议是push协议,当用户想要向邮件服务器申请查看邮件时,需要使用pull式协议。
1. POP3协议
	主要分为三个阶段
		第一阶段:特许。用户代理通过向服务器发送用户名(明文)以及口令让服务器鉴别用户
		第二阶段:事务处理。用户代理可以取回报文并且做出删除标记或取消删除标记.
		第三阶段:更新。用户代理发送quit后,断开POP3对话,此时服务器根据删除标记删除对应的邮件
	在事务处理阶段,服务器会根据用户代理发出的命令做出应答,例如+OK代表之前的命令是正确的,-ERR代表前面的命令出现了差错。

2.IMAP协议
	由于POP3协议不能够让用户创建远程邮箱文件夹,IMAP协议可以解决该问题
	IMAP服务器会将每一个邮件与文件夹联系起来,与POP3不同的是,IMAP服务器会维护IMAP会话用户状态信息。
	IMAP还支持用户代理只获取邮件中的某些部分的命令

2.7 DNS(域名系统)

主机使用IP地址,或者域名(eg:www.facebook.com)进行标识
IP地址由四个字节所组成

2.7.1 DNS所提供的服务

1.解决域名到IP地址的映射:
	域名解析系统(DNS)
		* 多层DNS服务器组成分布式数据库
		* 应用层协议
2. 主机别名(使得别名规范主机名更好记忆)
3. 邮件服务器别名(同上)
3. 负载分配	

2.7.2 DNS工作机制

不采用集中式设计的原因:
	1. 单点故障
	2. 流量问题
	3. 距离问题
	4. 维护问题
采用分布式,层次数据库
大致来说有三种域名服务器:
	根域名服务器,顶级域名服务器, 权威域名服务器。
还有一种本地域名服务器:
	当主机进行DNS查询时,先将查询发到本地域名服务器上,再由本地域名服务器作为代理发送给域名解析服务器系统

eg:当主机cse.nyu.deu想要知道主机gaia.cs.umass.edu的域名
查询方式:迭代查询
*被查询的服务器返回之后将要查询服务器的地址("我不知道该服务器的地址,你可以问它")  

查询方式:递归查询
*将域名解析的任务交给查询的服务器

DNS缓存:
	当域名解析服务器获得 域名--IP 的这一映射时,将会缓存这一映射
		* 一般的域名服务器会缓存顶级域名服务器(所以根域名服务器一般不会被访问)
		* 缓存条目一段时间过后将会被清除

2.7.3 DNS记录和报文

共同实现分布式数据库的DNS服务器均储存了资源记录(RR)
每个报文中都包含了一条或多条资源记录
RR:提供了主机到IP地址的映射
资源记录里包含四个元组(Name, Value, Type, TTL)
TTL:记录的生存时间
Name和Value取决于Type:
	* 当Type=A, Name代表主机, Value代表IP地址
	* 当Type=NS,Name代表一个域(eg:foo.com),Value代表获得该域主机IP地址的权威DNS服务器的主机名
	* 当Type=CNAME,Value是起了别名为Name的主机对应的规范主机名
	* 当Type=MX, Value是起来别名为Name的邮箱服务器对应的规范主机名
		ps:同一个公司的邮箱服务器的别名可以与其它服务器的别名相同.

2.7.3.1 DNS报文

DNS包含两种报文且该两种报文格式相同:查询和回答报文

分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进