目录
[文件传输协议(File Transfer Protocol)](#文件传输协议(File Transfer Protocol))
概述
应用层对应用程序的通信提供服务。应用层协议定义:
- 应用进程交换的报文类型,请求还是响应?
- 各种报文类型的语法,如报文中的各个字段及其详细描述。
- 字段的语义,即包含在字段中的信息的含义。
- 进程何时、如何发送报文,以及对报文进行响应的规则。
应用层的功能:
- 文件传输、访问和管理
- 电子邮件
- 虚拟终端
- 查询服务和远程作业登录
应用层的重要协议:
- FTP
- SMTP、POP3
- HTTP
- DNS
客户/服务器(C/S)模型

服务器:提供计算服务的设备。
- 永久提供服务
- 永久性访问地址 / 域名
客户机:请求计算服务的主机。
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态 IP 地址
- 不与其他客户机直接通信
应用:Web,文件传输 FTP,远程登录,电子邮件
P2P模型

- 不存在永远在线的服务器
- 每个主机既可以提供服务,也可以请求服务
- 任意端系统 / 节点之间可以直接通讯
- 节点间歇性接入网络节点
- 可能改变 IP 地址,可扩展性好,网络健壮性强
DNS系统
人们通过记忆IP地址,并且通过IP地址去寻找网站是困难且麻烦的。如何让访问网站更加便利?
域名的出现解决了这个问题,可以通过简单的域名直接访问网站。那么由谁来实现域名到IP地址的转换呢?就是DNS(Domain Name System)系统
域名
一个域名的不同部分也是有层次划分的,分为顶级域名、二级域名、三级域名。
例如www.csdn.com:com为顶级域名,csdn为二级域名,www为三级域名。出自之外,还有个根在com之后,为一个"."。可以说www.csdn.com的完整域名为www.csdn.com.
域名服务器
DNS 域名服务器是实现这一功能的服务器,主要分为以下几类:
- 根域名服务器:
-
- 是 DNS 域名解析系统的最高层级
- 全球共有 13 组根服务器,负责返回顶级域名服务器的地址
- 顶级域名服务器:
-
- 负责管理顶级域名(如.com、.org、.cn 等)
- 能返回权威域名服务器的地址
- 权威域名服务器:
-
- 负责特定域名的解析
- 存储并提供该域名下主机的 IP 地址等信息
- 本地域名服务器:
-
- 由互联网服务提供商(ISP)配置
- 作为用户主机的首选域名服务器,缓存解析结果以提高效率
域名解析过程
递归查询

首先查询本地域名服务器有没有目标IP地址,如果没有,则以本地域名服务器为客户端向根域名服务器发送请求。如果根域名服务器没有,则以根域名服务器为客户端向顶级域名服务器发送请求。如此递归下去知道权限域名服务器获得到IP地址,然后再顺着递归的路径返回。
迭代查询

先在本地域名服务器查询,然后一直以本地域名服务器为客户端。先向根域名服务器发送请求,本地域名服务器将根域名服务器返回的结果再向顶级域名服务器请求。本地域名服务器再拿顶级域名服务器返回的结果向权限域名服务器请求。本地域名服务器得到最终的结果在返回给原客户端。
高速缓存:
- 域名服务器首次解析某域名时,会按正常流程(递归 + 迭代)获取 IP 地址,并将 "域名 - IP" 对应关系存入缓存。
- 为避免缓存数据过期失效,每条缓存记录会附带一个TTL(生存时间) ,由权威域名服务器设定(通常为几分钟到几小时)。
- 当再次收到相同域名的解析请求时,服务器先检查缓存:
-
- 若缓存存在且未超过 TTL,直接返回缓存中的 IP 地址。
- 若缓存不存在或已过期,则重新发起完整解析流程,并更新缓存。
文件传输协议(File Transfer Protocol)

- 控制连接始终保持
- 数据连接保持一会
- 是否使用 TCP 20 端口建立数据连接与传输模式有关
- 主动方式使用 TCP 20 端口
- 被动方式由服务器和客户端自行协商决定(端口 > 1024)
万维网(WWW)
万维网(World Wide Web):是一个全球范围的、分布式、联机式的信息存储空间,资源通过HTTP协议传送给用户
组成
- 统一资源定位符(URL)
-
- URL = <协议>://< 主机 >:< 端口 >/< 路径 > ------ 指向万维网上的某个特定资源
- 端口、路径可以省去,因为有默认值,如:Web 服务器默认 80 端口,默认首页 (index.html)
- 超文本传输协议(HTTP)
-
- 应用层,基于 TCP。HTTP 协议定义了 "HTTP 请求报文"、"HTTP 响应报文" 两种数据结构
- 超文本标记语言(HTML)
-
- 一种文档结构的标记语言,使用一些约定的标记对页面上的各种信息(包括文字、图像、视频等)、格式进行描述
访问网页的过程
- 用户输入网址(域名)
- 浏览器通过 DNS 服务器查询域名对应的 IP 地址(浏览器会将查询结果 "域名→IP" 缓存到本地)
- 浏览器与 <Web 服务器 IP 地址:80 端口> 建立 TCP 连接
- 浏览器在握手3 中携带 HTTP 请求报文(指明要访问哪个 html 网页)
- 服务器返回 HTTP 响应报文(携带 html 文件)
- 如果 html 引用了其他 n 个元素,还需 n 组 HTTP 请求 & 响应(持续、非持续工作方式有所区别)
HTTP协议的工作方式
非持续连接

建立TCP连接后,获得HTTP响应报文后就释放连接
持续连接

流水线
建立TCP连接后会一直持续,直到依次获取到所有的HTTP响应报文,然后再根据设置的时间参数断开连接。首先解析html文件,了解还需要获取多少元素,然后一次性发出所有的HTTP请求。
非流水线
建立TCP连接后会一直持续,直到依次获取到所有的HTTP响应报文,然后再根据设置的时间参数断开连接。每次只发出一个HTTP请求,得到响应后再发下一个。
超文本传输协议HTTP
报文格式

HTTP 请求报文中常用的几个方法
|------------|--------------------|
| 方法(操作) | 意 义 |
| GET | 请求读取由 URL 标识的信息 |
| HEAD | 请求读取由 URL 标识的信息的首部 |
| POST | 给服务器添加信息(如注释) |
| CONNECT | 用于代理服务器 |
Cookie
Cookie 是 Web 技术中用于在客户端(浏览器)存储少量数据的机制,主要用于实现用户身份识别、状态保持等功能,核心是在浏览器与服务器之间建立 "记忆" 关联。
服务器可以通过Cookie来判断当前通信的进程是哪个用户。
