第二章 应用层
2.1 应用层协议原理
2.1.1 网络应用程序体系结构
- 主流体系结构:客户-服务器体系结构,对等(P2P)体系结构
–客户-服务器体系结构:有一个总是打开的主机称为服务器,它服务于来自许多 其他称为客户的主机的请求。客户相互之间不直接通信
–对等(P2P)体系结构:应用程序在间断连接的主机之间使用直接通信,这些主 机对被称为对等方。它有着自扩展性的特点
2.1.2 进程通信
- 客户和服务器进程:网络应用程序由成对的进程组成,这些进程通过网络互相发送报 文。通常把进程之一称为客户,另一个称为服务器
- 进程与计算机网络之间的接口:进程通过一个称为套接字(socket)的软件接口向网 络发送报文和从网络接收报文
- 进程寻址:为了标识该接收进程,需要定义主机的地址(IP地址)和定义在目的主机 中的接收进程的标识符(端口号)
2.1.3 可供应用程序使用的运输服务
- 可靠数据传输、吞吐量、定时、安全性
2.1.4 因特网提供的运输服务
- TCP服务
–面向连接服务:在握手阶段后,一个TCP连接在两个进程的套接字之间建立了。 当应用程序结束报文发送时,必须拆除该连接
–可靠数据传输服务:无差错、按适当顺序交付所有发送的数据 - UDP服务
–不提供不必要服务的轻量级运输协议
–无连接,无握手过程,提供不可靠数据传送服务
2.1.5 应用层协议
- 定义了运行在不同端操作系统上的应用程序进程如何互相传递报文
2.2 Web和HTTP
2.2.1 HTTP概况
- Web的应用层协议是超文本传输协议(HTTP)
- Web界面组成元素:对象(一个文件,可以是HTML、JPEG等),用URL寻址
- URL地址的组成:存放对象的服务器主机名+对象的路径名

- HTTP使用TCP作为它的支撑运输协议,因为HTTP服务器并不保存关于客户的任何信息,即它是一个无状态的协议
2.2.2 非持续连接和持续连接
- 采取非持续连接的HTTP:每个请求/响应都是经过一个单独的TCP连接发送
–往返时间(Round-Trip Time,RTT):指一个短分组从客户到服务器然后再返回客户所花费的时间
–响应时间:2个RTT+服务器传输HTML文件的时间
- 采取连续连接的HTTP:所有请求及其响应经相同的TCP连接发送
- HTTP的默认模式是使用带流水线的持续连接
2.2.3 报文格式
HTTP请求报文


实体主体(Entity body):使用GET方法时实体主体为空,使用POST方法时,实体主体包含用户在表单中输入的需要提交的内容
方法类型
–HTTP/1.0:GET、POST、HEAD(类似于GET,但不返回请求对象)
–HTTP/1.1:GET, POST, HEAD、PUT(将实体主体中的文件上载到URL字段中指定的路径)、DELETE(删除URL字段中指定的文件)HTTP响应报文

常见的状态码
–200 OK
–301 Moved Permanently
–400 Bad Request
–404 Not Found
–505 HTTP Version Not Supported
2.2.4 用户与服务器的交互:cookie
- 四个组件
–HTTP响应消息的cookie首部行
–HTTP请求消息的cookie首部行
–cookie文件保存在用户的主机上,由用户的浏览器管理
–网站的后端数据库
2.2.5 Web缓存(别名代理服务器)
- 它有着自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本
- 它既是服务器,又是客户端

- 作用:
–大大减少对客户请求的响应时间
–大大减少一个机构的接入链路到因特网的通信量
2.2.6 条件GET方法
- 作用:解决代理服务器内容过旧的问题
- 例子

2.3 文件传输协议:FTP
- 与HTTP的区别
–HTTP协议在传输文件的同一个TCP连接中发送请求和响应首部行,即带内(in-band)发送控制信息
–FTP使用了两个并行的TCP连接来传输文件,一个用于控制连接(用于在两主机之间传输控制信息),一个用于数据连接(实际发送文件),即带外(out-of-band)传输控制信息
2.4 因特网的电子邮件
- 主要组成部分:用户代理(user agent)、邮件服务器(mail server)、简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)

- 一些特性
–它不使用中间邮件服务器发送邮件,如果接受方服务器没开机,待发送的报文会留在发送方服务器上,等待进行新的尝试
–利用TCP将电子邮件从客户端传输到服务器,使用端口25、 - 邮件访问协议
–POP3
–IMAP
2.5 DNS(域名系统):因特网的目录服务
2.5.1 DNS提供的服务
- 主要任务:进行主机名到IP地址转换的目录服务
- 定义:一个由分层的DNS服务器实现的分布式数据库;一个使得主机能够查询分布式数据库的应用层协议
- 端口号:53
- 重要服务
–主机别名(host aliasing)
–邮件服务器别名(mail server aliasing)
–负载分配(load distribution)
2.5.2 DNS工作机理概述
- 集中式DNS的缺点
–单点故障
–通信容量
–远距离的集中式数据库
–维护 - 分布式、层次数据库

- DNS缓存
–在一个请求链中。当某DNS服务器接收一个DNS回答时,它能将该回答中的信息缓存在本地存储器中
2.5.3 DNS记录和报文
–资源记录(Resource Record,RR)
–DNS报文
–在DNS数据库中插入数据
2.6 P2P应用
- 对比:
A)客户-服务器体系结构
B)P2P
- 例子
A)BitTorrent
2.7 TCP套接字编程
- 套接字:应用程序进程和端到端传输协议(UDP或TCP)之间的一扇门
- TCP服务:从一个进程到另一个进程的可靠字节传输
2.7.1 TCP
- 客户必须联系服务器:
–服务器进程必须首先运行
–服务器必须创建欢迎客户联系的套接字(门) - 客户联系服务器:
–创建客户端本地TCP套接字
–指定服务器进程的IP地址,端口号
–当客户端创建套接字时:客户端TCP建立与服务器TCP的连接
–当客户端联系时:服务器TCP为服务器进程创建新的套接字以与客户端通信
A)允许服务器与多个客户端通信
B)用于区分客户端的源端口号
2.7.2 UDP
- UDP:客户端和服务器之间没有“连接”
–没有握手
–sender明确地将IP地址和目标端口附加到每个数据包
–服务器必须从收到的数据包中提取IP地址,发送端口 - UDP:发送的数据可能无序接收或丢失
版权声明:本文为qq_39739850原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。