1、应用层的概念
应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。
1.1、应用层协议的定义
在不同端系统上应用程序是如何相互传输报文的。
应用层协议规定以下内容:
- 交换的报文类型:交换的是请求报文还是相应报文
- 报文字段的解释:对报文中个字段的详细描述
- 报文字段的语义:报文个字段1的含义是什么
- 报文交换时间、方式:程序何时、以什么方式发送报文以及响应
2、体系结构
定义了应用层端系统之间数据交换的方式,开发一种新的网络应用,要首先考虑的问题是网络应用程序在各种端系统上的组织方式和它们之间的关系一般来说,主流的体系结构有两种:
- 客户-服务器体系结构(client-server architecture)
- 对等体系结构(P2P)
2.1、客户/服务器方式
分为请求方和服务方 ,总是打开主机称为服务端 ,它向客户端 提供服务。客户端会发送请求给服务端,服务端会根据客户端的请求作出响应。
特点:
- 客户和服务器是指通信中所涉及的两个应用进程
- 客户/服务器方式所描述的是进程之间的服务与被服务的关系
- 客户是服务器请求方,服务器是服务提供方
- 服务器总是处于运行状态,并等待客户的服务请求

客户 - 服务器模式通常会出现随着客户数量的急剧增加导致单台服务器无法满足⼤量请求的情况。 为此,通常需要配备⼤量的数据中心(data center) ,用来跟踪所有的用户请求。
2.2、点对点方式
在P2P中,没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方 。对等双方相互之间直接通信,每个对等方既是服务请求方,也是服务提供方。
P2P最大的特点就是扩展性,因为P2P网络的一个重要目标就是让所有的客户端都能提供资源、获取资源、共享资源、存储空间等。
3、万维网
3.1、概述
万维网(www)并非某种特殊的计算机网络。它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。万维网利用网页之间的超链接 将不同网站的网页链接成一个逻辑上的信息网。
万维网是将互联网中的信息以超文本的形式展示的系统,用来显示WWW结果的客户端称为Web浏览器。通过浏览器,我们无需关注想要访问的内容在呢过服务器上,我们只需要知道我们想访问的内容就可以了。

WWW定义了三个比较重要的概念:
- URI定义了访问信息的手段和位置
- 文档规范
- HTTP定义了WWW的访问规范
3.2、统一资源定位符(URL)和标识符(URI)
URI:能够唯一的标记互联网上资源
URL:俗称网址,它实际上是URI的一个子集
UPI包括:URL和RUN(统一资源名称)
URL的一般形式:<协议>://<主机>:<端口>/<路径>
3.3、万维网文档
3.3.1、HTML
超文本标记语言,使用多种"标签"来描述网页的结构和内容 。HTML包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分散的Internet资源链接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形,动画,声音,表格,链接等。

3.3.2、CSS
层叠样式表(CSS),从审美的角度来描述网页的样式
c
.pink{
color:deeppink;/* 文字颜色:深粉色 */
font-size:36px; /* 文字大小:36像素(很大的字) */
}
4、 HTTP
Web的应用层协议就是HTTP,超文本传输协议,它是Web的核心协议,是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
4.1、HTTP连接行为
4.1.1、HTTP

HTTP/1.0 采用非持续连接,每请求一个文件都要新建、断开 TCP 连接,单次请求耗时 2RTT,网页多资源时时延很高。浏览器多并行连接虽能提速,但会加重服务器负担。
HTTP/1.1 引入持续连接,响应后保留 TCP 连接,同一客户端可复用连接请求同服务器下的所有资源。在此基础上还支持流水线机制,浏览器可未收到响应就连续发送多个请求,进一步减少 RTT、提升传输效率。
4.2、HTTP报文格式
HTTP 协议主要由三⼤部分组成:
- 起始行:描述请求或响应的基本信息
- 头部字段:使用Key-value形式更详细地说明报文
- 消息正文:实际传输的书籍,它不一定是纯文本,可以是图片、视频等二进制数据
4.3、HTTP协议特征
- 支持客户-服务器模式
- 简单快速、灵活、无连接、无状态
4.4、cookile和session
Session 和 Cookie 的主要⽬的就是为了弥补 HTTP 的⽆状态特性。
4.4.1、cookies
HTTP 协议中的 Cookie 包括 Web Cookie 和浏览器 Cookie,它是服务器发送到 Web 浏览器的⼀⼩块数据。服务器发送到浏览器的 Cookie,浏览器会进⾏存储,并与下⼀个请求⼀起发送到服务器。
Cookie 主要⽤于下⾯三个⽬的:
- 会话管理:登陆、购物车、游戏得分或者服务器应该记住的其他内容
- 个性化:用户偏好,主题或者其他设置
- 追踪:记录和分析用户行为
4.4.2、session
客户端请求服务端,服务端会为这次请求开辟⼀块内存空间,这个对象便是 Session 对象,存储结构是⼀个 Map 映射,具体⼀点是 ConcurrentHashMap。Session 弥补了 HTTP ⽆状态特性,服务器可以利⽤ Session 存储客户端在同⼀个会话期间的⼀些操作记录。
4.5、Web缓存
万维网缓存又称为Web缓存,可位于客户机,也可位于中间系统上,位于中间系统上的Web缓存又称为代理服务器,它是代表 HTTP 服务器来满足用户需求的网络实体。