思维导图:
第6章:应用层
1. **应用层协议的作用** - 提供通信服务和规则,供应用进程使用网络通信服务。
2. **通信规则** - 确定应用进程如何交换消息(请求/响应),消息语法(结构和字段),以及消息语义(字段含义)。
3. **报文发送规则** - 规定进程何时以及如何发送和响应报文。
4. **标准协议和私有协议** - 公共领域的协议(如HTTP)由RFC文档定义,而专用协议如P2P文件共享系统中所用。
5. **应用层协议和网络应用的区别** - 协议是网络应用的一部分,定义通信细节,不包括应用的内部实现(如浏览器页面显示)。
6. **客户服务器模型** - 定义了服务请求者(客户)和服务提供者(服务器)的关系。
7. **域名系统DNS** - 实现从域名到IP地址的解析。
8. **万维网和HTTP** - 定义浏览器和服务器之间的通信规则,是本章焦点。
9. **电子邮件传送** - 包括SMTP、POP3、IMAP协议,定义邮件发送和接收过程。
10. **动态主机配置协议DHCP** - 动态分配网络配置(如IP地址)。
11. **网络管理** - 包括SNMP协议、SMI和MIB,用于网络维护和管理。
12. **系统调用和API** - 使应用能够利用网络服务的编程接口。
13. **P2P文件系统** - 分布式网络应用模型,节点既是客户端也是服务器。
我的理解:
理解这一节的概念可以从以下几个方面入手:
1. **应用层协议的核心作用**:它们定义了运行在不同计算机网络设备上的应用程序如何通过网络进行通信。这包括了数据交换的格式、时间和方式。
2. **应用层和运输层的关系**:运输层提供端到端的通信能力,而应用层协议利用这些能力,定义了更高级的通信规则和服务,确保数据正确、有效地在应用之间传递。
3. **公共协议与私有协议**:公共协议如HTTP,由RFCs(Request for Comments文档)定义,任何人都可以使用。私有协议则属于个别组织或应用,不公开详细规范。
4. **客户-服务器模型**:这是一种常见的网络交互模型,客户端发送请求到服务端,服务端响应请求。这种模式定义了服务请求和服务提供的行为。
5. **DNS**:一个全球分布式的服务,将用户友好的域名转换为机器可以理解的IP地址,是网络中的关键基础设施。
6. **万维网和HTTP**:这部分讨论的是Web浏览器和服务器之间的通信协议,以及它如何使互联网得以广泛传播。
7. **电子邮件协议**:这些协议定义了电子邮件的发送和接收过程,包括SMTP用于邮件发送,POP3和IMAP用于邮件接收。
8. **DHCP**:一种网络管理协议,自动为设备分配IP地址和其他网络配置,简化了网络管理。
9. **网络管理**:通过SNMP、SMI和MIB等组件进行,它们协助网络管理员监视和管理网络设施。
10. **系统调用和API**:使开发者能够设计软件来利用网络协议和服务,是编程的基础。
11. **P2P文件系统**:与客户-服务器模型不同,P2P网络中的每个节点既可以作为客户端也可以作为服务器,共享资源和服务。
通过了解这些概念,可以更好地理解网络应用如何在不同的计算机和网络环境中以标准化的方式交换数据。
6.2.2 FTP基本工作原理
1. **FTP的需求背景**:
- 不同计算机系统间存在文件存储格式、目录结构、命名规则和访问控制方法的差异,导致文件传输困难。
2. **FTP的基本功能**:
- 提供基本的文件传输服务,使用TCP确保可靠性。
- 减少或消除不同操作系统间文件处理的不兼容性。
3. **FTP的工作模式**:
- 客户-服务器模式,一个服务器可以服务多个客户端。
- 服务器包括主进程(接受请求)和从属进程(处理请求)。
4. **FTP的主进程工作流程**:
- 打开端口21等待连接。
- 接受连接请求,启动从属进程处理请求。
- 处理结束后,从属进程终止,主进程回到等待状态。
5. **FTP的TCP连接**:
- 使用两个并行的TCP连接:控制连接(命令传输)和数据连接(文件传输)。
- 控制连接始终打开,而数据连接仅在传输文件时建立。
6. **端口使用**:
- 控制连接使用端口21,数据连接通常使用端口20。
7. **控制与数据传输的分离**:
- 使协议简单易实施。
- 控制连接可以在传输文件时发出控制指令。
8. **FTP的局限性与NFS的比较**:
- FTP不适合只进行文件的部分更新。
- NFS可以直接在远程文件特定位置进行读写,更适合局部修改。
我的理解:
这一节的核心概念是FTP(文件传送协议)的工作原理,可以这样理解:
1. **传输文件的挑战**:
- 不同计算机有不同的文件系统,这就像是不同的图书馆分类系统,需要一个通用的“翻译”标准来确保信息能够在不同系统之间正确传输。
2. **FTP的解决方案**:
- FTP就像是一个双语翻译员,它能理解不同计算机的“语言”(文件系统),并且能够在它们之间准确地传输文件。
3. **客户-服务器模型**:
- 想象一个邮局系统,客户端就像是邮局顾客,而FTP服务器就像是后台处理邮件的工作人员。顾客可以提交请求,工作人员会开启处理流程来完成任务。
4. **两个TCP连接**:
- 控制连接和数据连接就像是电话和货运服务。电话用来沟通和下达指令(控制连接),而货运服务用来实际搬运包裹(数据连接)。
5. **端口的作用**:
- 端口就像是邮局的不同窗口,一个用于顾客服务(端口21,控制连接),另一个用于包裹出入(端口20,数据连接)。
6. **传输控制的优点**:
- 通过保持控制连接始终打开,FTP允许在文件传输期间发送控制指令,例如突然停止传输。
7. **FTP与NFS的差异**:
- 如果FTP像是整体搬家,那么NFS(网络文件系统)就像是只邮寄家里的一个小包裹。NFS允许对文件的特定部分进行操作,不需要完整地传输整个文件。
**6.2.3 简单文件传送协议TFTP**
1. **定义与用途**:
- TFTP是一个简化版的文件传输协议,易于实现,用于小型设备和特殊用途。
2. **协议特性**:
- 使用UDP协议,无需复杂的连接建立过程。
- 缺少复杂命令集,功能仅限于基本的文件传输(读/写)。
- 无目录浏览功能,不支持用户身份验证。
3. **优点**:
- 对于内存受限的设备来说,体积小且效率高。
- 可以在没有硬盘的设备上使用,设备通过网络下载必要的启动程序。
4. **数据传输机制**:
- 传输单元固定512字节,按顺序编号,结尾数据包不足512字节时表示文件结束。
- 支持ASCII码和二进制文件传输。
- 采用停止等待协议,确保数据准确送达。
5. **传输过程**:
- 开始传输时,客户端向服务器的69号端口发送读/写请求。
- 服务器响应请求后,选择新端口与客户端通信,进行数据传输。
- 若文件长度为512字节倍数,需发送一个空数据包作为结束标志。
6. **差错控制**:
- 发送方在发送数据后等待接收方确认,如果没有确认,则重发数据。
- 若接收方未在规定时间内收到下一个数据包,也将重发确认包。
我的理解:
简单文件传送协议(TFTP)是一个基础的、使用UDP进行数据传输的协议,它用于在网络上的不同主机之间进行文件的传输。可以这样理解这一节的概念:
1. **基本设计**:TFTP是为了简化而设计的。它没有复杂的特性和命令,这使得它易于在资源受限的系统中实现。
2. **使用场景**:适用于不需要高级特性(如完整的用户权限验证或目录列表)的场合,比如在无硬盘的系统上通过网络引导和加载程序。
3. **工作机制**:TFTP使用UDP协议,这意味着它不建立持久的连接,而是发送独立的数据包。每个数据包都需要单独确认,确保数据的可靠传输。
4. **数据包结构**:每个数据包的大小是固定的(512字节),除非是文件的最后一个数据包。每个数据包都有一个序号,确保数据可以按正确的顺序重新组装。
5. **传输过程**:传输开始时,客户端发送一个请求到服务器的特定端口(69号端口)。服务器接收到请求后,使用一个新的端口与客户端进行后续的数据传输。
6. **差错处理**:因为TFTP使用的是UDP,所以它需要自己的错误检测和纠正机制。这通过数据包的重传实现,如果发送方或接收方没有在预定时间内收到预期的数据包或确认,就会重新发送之前的数据包。
理解这一节的关键在于把握TFTP的简单性和它是如何通过基本的差错控制来保证文件正确传输的,尽管它不使用复杂的TCP连接管理。
总结:
重点
1. **TFTP的简单性**:TFTP设计简单,没有复杂的命令集,易于在小型或专用设备上实现。
2. **UDP作为传输层**:TFTP使用UDP而不是TCP,这意味着它无需建立连接,但同时必须自行处理差错和流量控制。
3. **数据包结构**:数据包大小固定,最大为512字节,通过序号和大小控制文件传输的开始和结束。
4. **端口使用**:客户端使用69号端口向服务器发送请求,而服务器会使用一个新的端口与客户端进行通信。
难点可能是:
1. **差错控制的理解**:由于使用UDP,需要理解TFTP如何进行可靠传输,包括超时重传和确认机制。
2. **文件结束的判定**:理解文件传输结束的标志,特别是当文件大小刚好是512字节的倍数时的额外数据包要求。
易错点可能包括:
1. **端口号混淆**:客户端发送请求使用的是69号端口,而不是通常的FTP端口21和20。
2. **数据包大小假设**:误认为最后一个数据包也必须是512字节,实际上它可以更小,或者在文件大小是512字节的倍数时,还需要发送一个空数据包作为结束信号。
3. **过度复杂化**:忘记TFTP的设计初衷是简单性,错误地将其与FTP的复杂特性混淆。