应用层(Application Layer)属于计算机网络体系结构中的最顶层,直接面向用户,提供各种网络服务和应用程序的接口本文主要的学习内容如下:
(1)网络应用进程通信方式
(2)网络应用的需求与传输层服务
(3)各种网络应用及协议
(4)Socket编程
进程:主机上运行的程序

Question1:同一主机上运行的进程之间如何通信?Answer:同一主机上运行的程序通过操作系统提供的进程间通信机制进行通信,这里不展开介绍
Question2:不同主机上运行的进程之间如何通信?Answer:消息(数据)交换。主要有电路交换、报文交换和分组交换
Question3:如何定位不同主机上运行的进程?Answer:不同主机的不同进程都拥有唯一的标识符,进程的标识符 = IP地址 + 端口号

注意1:网络应用通信需要遵守应用层协议,协议主要定义了以下规范
消息的类型(type):请求消息、响应消息消息的语法格式(syntax):消息中有哪些字段,每个字段如何描述/采取什么结构字段的语义(semantics):字段中信息的含义规则(rules):应用何时发送/接收消息,应用如何发送/接收消息下面是网络应用中的主要通信方式
服务器:接受请求返回响应的终端
客户端:发起请求接收响应的终端


Question:能不能结合以上两种方式的优点,规避缺点,设计一种新的通信方式/模型?
以Napster为例:Napster 在文件传输和文件搜索方面采用了混合架构,结合了P2P和客户端-服务器两种结构。这种混合架构在当时是一个创新设计,既利用了P2P的优势,又通过中央服务器提高了效率和可控性
(1)客户端-服务器(CS)结构用于文件搜索:
(2)对等网络(P2P)结构用于文件传输:

Web应用使用客户端-服务器通信方式,客户端与服务器之间使用HTTP/HTTPS协议进行通信

服务器:接受并处理HTTP请求,返回HTTP响应。主要包括:
客户端:发送请求,接受并解析响应


目的:在不访问服务器的情况下满足客户端的HTTP/HTTPS请求意义:
在客户端-服务器中间架设代理服务器用来保存缓存

Question1:如果当clientB发送请求时,该资源已经经历了一次版本更新,如何保证获取到最新版资源?
Answer1:当代理服务器收到HTTP请求时,代理服务器会一个HTTP请求检测该资源的版本是否和原始服务器中的一致。如果版本一致,原始服务器会返回304 Not Modified,告诉代理服务器版本一致;如果版本不一致,原始服务器会返回最新版资源,代理服务器缓存后再返回给clientB
Question2:既然每次代理服务器收到请求之后都会跟原始服务器检测版本,会不会加重服务器负担?
Answer2:当版本一致时,原始服务器只会返回304 Not Modified,并不携带额外资源,相较于客户端直接访问服务器的负担会小很多
Email应用的构成

A想发送一封邮件给B,该邮件会先传输到A对应的服务器③,再传输给B对应的服务器⑤,等到B上线的时候再接收邮件
Question:为什么邮件不能直接发送到B?Answer:因为B不一定在线。想直接发送到B的前提是A和B要建立连接,但如果B不在线就无法建立连接,所以无法直接发送到B。但是B对应的服务器⑤一定在线,服务器⑤会保存该邮件等到B来接收
概述:
交互过程:

命令/响应交互模式
协议格式:

头部(header):包含邮件的元信息,如发件人、收件人、主题等。常见头部字段如下:
空行:用于分割头部和body
正文(body):邮件的实际内容
注意:根据RFC5321规定,传统的SMTP协议使用7为ASCII字符集进行通信,这意味着所有的SMTP命令、响应和header都必须是ASCII字符。因为SMTP协议必须使用ASCII字符集,直接传输非ASCII数据(如二进制文件)时会出问题,为了解决这个问题。引入了MIME(多用途互联网邮件扩展),允许在电子邮件中使用非ASCII数据

客户端向服务器发送电子邮件的时候使用SMTP协议,但客户端读取服务器中的邮件时使用邮件访问协议(Post Office Protocol),本文介绍POP3协议

概述:
交互流程:

Question:为什么上面获取某一封邮件后,要删除该邮件呢?
Answer:这和POP3协议的访问模式有关
访问模式:(1)下载并删除模式:客户端下载邮件后删除该邮件
(2)下载并保持模式:客户端下载邮件不删除该邮件
Question:从一个服务器向N个节点分发一个文件需要多长时间?

客户端-服务器结构
P2P结构
该结构所需时间dP2P = max{F/us,F/min(di),
}
客户端-服务器结构 VS P2P结构

随着节点数量的不断增加,C/S结构完成文件转发所需的时间线性增长,P2P结构完成文件转发所需的时间趋于不变
概述:BitTorrent是最广泛使用的P2P文件分发协议之一。它通过将文件分割成小块(pieces),并允许多个用户同时下载和上传这些小块,从而实现高效的文件分发工作原理:

场景假设:现在有一个peer(Alice)加入该torrent组,一开始Alice没有任何chunk,随着时间的推移会逐渐积累。Alice会向tracker注册并获取节点清单,与某些节点建立连接以获取目标chunk(稀缺优先),在获取chunk的同时Alice也会向其他peer发送chunk(tit-for-tat)

Question:上述提到的稀缺优先和tit-for-tat是什么?

P2P结构中的
索引:信息到节点位置(IP地址+端口号)的映射
应用场景:(1)文件共享
(2)即时消息(QQ)

缺点:
单点失效问题:中央服务器崩溃会导致整个网络无法搜索资源性能问题:中央服务器需要处理所有请求,导致负载过高
缺点:
网络拥塞:在大规模网络中,大量的查询请求会导致网络拥塞资源消耗:每个节点都需要处理大量的查询请求重复查询:同一个查询可不能会被多次处理,导致不必要资源浪费介于集中式索引和分布式索引的方法
