计算机网络学习笔记2(应用层)
计算机网络学习笔记2(应用层)
1.应用层协议原理
1.网络应用程序体系结构(Network Application Architectures)
-
参考模型的每一层都利用它为下层为它提供的服务,为它的上层来提供服务,但应用层没有上一层,应用层直接服务于模型外的用户
-
应用可以分为两大类:
1.直接网络应用
2.间接网络应用
-
应用程序体系结构主流有两种,客户服务器体系结构(client-server architecture)和对等体系结构(peer-to-peer architecture P2P)
-
在客户服务器体系结构中:
1.有一个总是打开的主机,称为服务器(server),它服务于其它称为客户(client)的主机的请求,客户端可以不总是打开
2.客户端跟客户端之间不进行通信,客户机只跟服务器之间进行通信
3.服务器具有固定的地址,称为IP地址(IP Address),但客户端的地址可以经常变化
-
P2P体系结构中:
1.应用程序在间断连接的主机对之间进行直接通信,这些主机对被称为对等方(peers), p2p不需要依赖服务器
2.p2p具有自扩展性(self-scalability),每个对等方都可以作为临时服务器为系统增加服务能力
3.p2p能节约成本和开销
2.进程通信(Processes Communicating)
1.客户服务器进程
- 在网络间进行通信的是进程,进程可以被认为是运行在端系统的一个程序
- 在两个不同端系统上的进程,通过跨越计算机网络交换报文
- 网络应用程序是由成对的进程组成,在每一对进程中,通常将一个进程标记为客户进程,另一个进程则被标记为服务器进程,在web服务中,浏览器为客户进程,web服务器为服务器进程
- 在P2P文件共享中,下载文件的对等方标识为客户,而另一个进程标识为服务器
- 所以我们可以定义:在任意给定的一对进程的通信会话过程中,发起通信的进程标识为客户,在会话开始时等待联系的进程是服务器
2.进程与计算机网络之间的接口
- 进程通过套接字(socket)来接收和发送报文
- 套接字是同一台主机内,应用层(application)和传输层(transport)之间的接口
- 套接字也被称为应用程序和网络之间的应用程序编程接口(Application Programming Interface API)
3.进程寻址
-
为了接收进程,我们需要定义两种信息
1.主机的地址
2.定义在目标主机中接收进程的标识符
-
主机的地址一般由IP地址(IP Address)来标识
-
我们用端口号(port number)来定义接收进程
3.可供应用程序使用的传输服务
- 可靠数据传输(Reliable Data Transfer)
- 吞吐量(throughput)
- 实时性(timing)
- 安全性(security)
4.因特网提供的运输服务
1.TCP服务
-
可靠的数据传输服务(reliable data transfer service)
能够没有字节的丢失和冗余
-
面向连接的服务(Connection-oriented service)
通过握手建立连接来传输数据
-
拥塞控制(congestion control)
尽量达到公平分享带宽
-
TCP不提供实时性保证,最小吞吐量和安全性
2.UDP服务
- 不可靠的数据传输服务
- 能够快速的传输数据
2. Web和HTTP
-
Web由三个方面构成
1.资源
2.统一资源定位器(URL Uniform Resource Locators)
3.通信协议HTTP
-
找到一个web页面的关键是找到统一资源定位符
统一资源定位符(URL)
1.协议
2.服务器域名或IP地址
3.资源文件
-
每个URL由两部分组成,存放对象的服务器主机名(host name)和对象的路径名(path name)
-
/products.html是path name
1.HTTP概况(Overview of HTTP)
-
HTTP是超文本传输协议(HyperText Transfer Protocol),是Web的应用层协议
-
HTTP采用的是client/server模式,客户程序和服务器程序通过交换HTTP报文进行会话
-
HTTP采用TCP作为传输协议
-
HTTP使用TCP传输的过程
-
-
客户发起与服务器的TCP连接,一旦连接建立,浏览器和服务器进程就可以通过套接字来访问TCP
-
客户向它的套接字接口发送HTTP请求报文并从它的套接字接口接受HTTP响应报文
服务器从它的套接字接口接收HTTP请求报文并从它的套接字接口发送HTTP响应报文
-
-
HTTP是无状态协议(stateless),不保存关于客户的任何信息
2.非持续连接和持续连接(Non-Persistent and Persistent Connections)
1)非持续连接
-
HTTP在非持续连接下从服务器向客户传送Web页面的步骤
-
1.完成连接的建立
-
- HTTP客户进程在端口号80发起一个到服务器的TCP连接
-
- HTTP服务器接收该请求报文,并通过套接字向客户发送响应报
2.HTTP客户经过它的套接字向服务器发送一个HTTP的请求报文,这个报文中会包含对象的路径名
3.HTTP服务器通过它的套接字接收这个请求报文后,就会从它的存储器中检索被请求的对象,并把它封装到HTTP的响应报文中。通过它的套接字推向客户端
4.服务器发送完被请求对象以后会通知TCP来关闭TCP的连接
5.HTTP的客户接收响应报文以后也会关闭它的TCP连接
-
-
一个短分组从客户到服务器再返回客户的时间称为往返时间(Round-Trip Time, RTT)
RTT包含了传播时延,处理时延和排队时延
-
HTTP的响应时间计算 2RTT+服务器传输文件的时间
-
在非可持续连接中,一次传输传输的是一个对象,一个对象就是一个文件
2)可持续连接
-
在服务器发送响应后会保持TCP连接的打开
-
HTTP的默认模式是流水线型的持续连接:
每请求一个对象不需要前面的对象发回来以后再发第二个对象的请求,也就是说可以连续的发送
3)三种不同传输的时间计算
- 非可持续连接
-
- 一次传输消耗2个RTT
- 有n个需要传输的对象则总时间为2n
- 可持续连接不带流水线
-
- 建立连接时消耗1个RTT
- 传输时每个传输对象消耗1个RTT
- 可持续连接带流水线
-
- 消耗2个RTT
3.HTTP的报文格式(HTTP message format)
-
HTTP的报文有两种形式,请求(Request)和响应(Response)
-
请求报文
GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr
-
- 报文的第一行称为请求行(request line),请求行的第一个字段是一个方法,第二个字段是URL字段。第三个字段是HTTP的版本
- 接下来的行是头部行(header line)
-
- 第一行是表明对象所在的主机
- 第二行是浏览器的类型
- 第三行表明数据传输以后是否需要关闭连接
- 第四行表明希望的的带该对象的哪个语言的版本
- 请求行方法
-
- GET 方法
- POST 方法
- HEAD方法
- PUT方法
- DELETE方法
-
响应报文
HTTP/1.1 200 OK Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html
-
-
报文的第一行为状态行
第一个字段是版本号,第二个字段是状态码,第三个字段是状态码的信息
-
其余的为首部行
-
- 第一行表明发送完报文后TCP连接是否关闭
- 第二行表明服务器产生并发送该响应报文的日期和时间
- 第三行表明该报文产生的服务器
- 第四行表明对象创建或最后修改的时间
- 第五行表明发送对象的字节数
- 第六行表明对象的类型
-
一些响应状态码
-
-
200 OK
表明请求成功
-
301 Moved Permanently
请求对象已经被永久转移
-
400 Bad Request
-
404 Not Found
-
505 HTTP Version Not Supported
-
4.用户与服务器的交互:cookie
- cookie所包含的四个组件
-
- 在HTTP响应报文的的首部行
- 在HTTP请求报文的首部行
- 在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理
- 位于Web站点的一个后端数据库
5.Web缓存
-
Web缓存器(Web cache)也叫代理服务器(proxy server)
-
Web缓存器有自己的磁盘磁盘存储空间,并在存储空间中保存最近请求过的对象的副本
-
可以配置用户的浏览器,使得用户的所有HTTP请求首先指向Web缓存器。一旦浏览器被配置,每个浏览器请求首先被定向到该Web服务器
-
Web缓存的具体工作情况:
-
- 浏览器建立一个到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求
- Web缓存器进行检查,看看本地是否存储了该对象副本,如果有,Web缓存器就向客户浏览器用HTTP响应报文返回该对象
- 如果Web缓存器中没有该对象,它就打开一个与该对象的初始服务器的TCP连接。Web缓存器则在这个缓存器到服务器的TCP连接上发送一个对该对象的HTTP请求。在收到该请求后,初始服务器向该Web缓存器发送具有该对象的HTTP响应
- 当Web缓存器接收到该对象时,它在本地存储空间存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本
-
Web缓存的好处
-
- 减少客户请求的响应时间
- 减少机构接入链路的网络流量
3.文件传输协议FTP (File Transfer Protocol)
-
文件传输有两种形式
1.FTP 是一种可靠的,面向连接的服务,采用TCP传输文件
2.TFTP (Trival File Transfer Protocol) 无连接的,不可靠的服务,采用UDP传输文件
-
FTP利用了两根TCP连接
-
- 控制连接 端口号21
- 数据连接 端口号20
4.因特网中的电子邮件(Electronic Mail in the Internet)
-
电子邮件通常由三部分组成:
1.用户代理(UA user agent)
让用户能够阅读和发送邮件
2.邮件传输代理(MTA mail transfer agent)
将邮件从源端送到目的端
邮件传输代理又被称为邮件服务器(mail server MS)
3.简单邮件传输协议(Simple Mail Transfer Protocol SMTP)
4.UA主要负责读写邮件而MTA主要负责收发邮件
-
多用途互联网扩展(MIME Multipurpose Internet Mail Extensions)
-
MIME的五个邮件头
1.MIME-Version:表示MIME的版本
2.Content-Description:描述了邮件包含什么内容
3.Content-Id:唯一的标识符
4.Content-Transfer-Encoding:指出传输时应该如何打包
5.Content-Type:指出邮件内容的类型和格式
-
SMTP传输邮件的具体步骤:
-
-
原机和目的机的端口通过三次握手建立TCP连接
-
进行数据交换和传输邮件:
客户机等待服务机首先开始通话,服务器首先发送一行文本,给出标识,并且告 诉客户机是否准备好接收邮件,如果没有准备好,则客户机释放连接,以后再重试,如果准备好的话,则客户机声明发信人和收信人,如果服务器存在收信人,则服务器指示客户可以发送了,客户机发送邮件,服务器回发确认。
-
邮件发送完成后释放TCP的连接
-
-
POP3协议(Post Office Protocol -Version3)
-
- 当用户启动邮件阅读器时,POP3开始工作
- 用户呼叫ISP,然后与MTA在110端口建立TCP的连接
- 一旦连接建立,POP3协议按照顺序会经历三种状态
-
- 授权(Authorization) 处理用户登录的过程
- 事务(Transactions) 收邮件加删除标记
- 更新(Update) 将标为删除的电子邮件删除
-
IMAP协议(Internet Mail Access Protocol)
-
- 假设所有电子邮件都永久的保存在服务器的多个邮箱中
- IMAP服务器在143端口监听
- 也可以接收外发邮件
- 有更多复杂的命令
-
SMTP与HTTP的对比
-
- HTTP是一个拉协议(pull protocol)而SMTP是一个推协议(push protocol)
- SMTP要求每个报文使用7比特ASCII码格式而HTTP数据不受这种限制
- HTTP把每个对象封装到它自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文之中
5.DNS:因特网的目录服务(The Internet's Directory Service)
1.DNS提供的服务(Service Provided by DNS)
- DNS就是域名服务器(domain name server)
- DNS将域名映射为IP地址
- DNS是
-
- 一个由分层的DNS服务器实现的分布式数据库
- 一个使得主机能够查询分布式数据库的应用层协议
- DNS是层次化的分布式数据库系统,提供域名解析服务
- 域名是大小写无关的,各组成部分的名字最多有63个字符长,整个路径不超过255个字符
- DNS的主要功能是将域名映射到资源记录上
- 一个资源记录包括5个部分,域名,生存期,类别,类型和值
1.域名
- 域名的概念:指出这条记录适用于哪个域
- 域名字段是匹配查询条件的主要关键字
- 每个域有多条记录,数据库则保存多个域的信息
- ‘资源记录在数据库中的顺序是无关紧要的
2.生存期
- 指示了这条记录的稳定程度
- 极稳定的记录会被分配一个很大的值,非常不稳定的记录会被分配一个很小的值
3.类别
- 只有IN
4.类型
- 指出这是什么类型的记录
- A指代IPV4的地址
- AAAA指代IPV6的地址
5.值
-
类型所对应的值,可以是数字,ASCII字符串等
-
资源记录存储在域名服务器中
-
根域服务器存储所有顶级域名的名字和它对应的IP地址等资源配置信息
2.DNS工作机理概述(Overview of How DNS works)
- 将域名映射为IP地址的方法和过程,叫做域名解析
- 域名解析分为两大类:递归解析和迭代解析
- 一次完整的域名解析包括递归解析和迭代解析
- 主机向本地域名服务器的查询一般都是采用递归查询
- 本地域名服务器向根域服务器的查询通常采用的是迭代查询
3.DNS采用分布式而不采用集中式的原因是
-
单点故障(a single point of failure)
如果该DNS服务器崩溃,整个因特网随之瘫痪
-
通信容量(traffic volume)
-
远距离的集中式数据库(distant centralized database)
-
维护(maintenance)
4.DNS服务器种类
- 根DNS服务器(Root DNS servers)
- 顶级域DNS服务器(Top-level domain (TLD) servers)
- 权威DNS服务器(Authoritative DNS servers)
5.DNS记录和报文
-
DNS服务器存储了资源记录(Resource Record RR) RR提供了主机名到IP地址的映射
-
资源记录是一个包含了下列字段的四元组:
(Name Value Type TTL)
-
TTL是该记录的生存时间(time to live)
-
Name和Value的取值取决于Type
-
- 如果Type=A,则Name是主机名,Value是该主机名对应的IP地址,例如(bar.foo.com,145.37.93.126)
- 如果Type=NS,则Name是整个域,而Value就是知道如何获得该域种主机IP地址的权威DNS服务器的主机名,例如(foo.com,dns.foo,com)
- 如果Type=CNAME,则Value是别名为Name的主机对应的规范主机名,例如(foo.com,relay1.bar.foo.com)
- 如果Type=MX,则Value就是别名为Name的邮件服务器的规范主机名
6.P2P应用(Peer-to-Peer File Distribution)
- 我们用F表示被分发文件的长度,N表示要获得的该文件副本对等方的数量
- 分发时间(distribution time)是所有N个对等方得到该文件的副本所需要的时间
- 在客户-服务器体系中
-
- 服务器必须向N个对等方的每个传输该文件的一个副本,假设该服务器上传速率为Us分发该文件的时间必定为NF/Us
- 令dmin 表示具有最小下载速率的对等方的下载速率,则最小分发时间至少为F/dmin
- 则实际发送时间为max{NF/Us ,F/dmin}
- 在p2p结构中
-
- 系统整体的总上载能力utotal =us+u1+u2+u3+....+uN,则最小的分发时间为NF/(utotal)
- 则P2P的最小分发时间为max{NF/Us ,F/dmin,NF/(utotal)}
7.Socket编程
1.TCP套接字编程
-
一个IP与一个端口联合在一起形成一个套接字,它是网络上的一个传输端口,在网络的另外一端可有一个对应的套接字通信
-
使用Socket
-
1.建立Socket
-
- 指定地址(主机名)
- 指定端口
2.数据传输:发送/接收
3.关闭Socket
-