文章目录
1. 应用层协议原理
网络应用程序的核心:能够运行在不同端系统和通过网络彼此通信的程序
由于计算机网络层次结构分层的原因,我们在编写应用层程序的时候,不需要写在网络核心设备如路由器或链路层交换机上运行的软件
1.1 网络应用程序体系结构
应用程序体系结构:
- 客户-服务器(C/S)体系结构
- 对等(P2P)体系结构
C/S
在客户-服务器(C/S)体系结构,客户相互之间不直接通信
服务器的显著特点:
- 固定的、周知的地址 IP地址
- 总是打开的
客户总是能够通过向该服务器的IP地址发送分组来与其联系
具有数据中心,一个数据中心能够有数十万台服务器
P2P
高度非集中式结构
应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方
对等方不是任何一个ISP,相反可以是我们每个人的笔记本电脑或者手机
对等方之间的通信不必通过专门的服务器
1.2 进程通信
客户和服务器进程
网络应用程序由成对的进程组成,这些进程通过网络相互发送报文
在通信的过程中,客户与服务器其实并未有较为明显的界限,记住一个规则
发起通信的(即在该会话开始时发起与其他进程的联系)的进程被称为客户
在会话开始时,等待联系的进程是服务器
进程与计算机网络之间的接口
进程通过一个称为套接字(socket)的软件接口,向网络发送报文和从网络接收报文
可将进程类比为一座房子,而套接字就是它的门
如上图,套接字是同一台主机应用层与运输层之间的接口,也被称为应用程序和网络之间的API
进程寻址
在一台主机上运行的进程为了向另一台主机的进程发送分组,接收进程需要有一个地址
地址包括其 IP地址+端口号
1.3 运输服务
可靠数据传输:电子邮件、文件传输、远程主机访问、Web文档传输以及金融应用
容忍丢失:交谈式音频、视频
- 可靠数据传输
- 吞吐量
- 定时
- 安全性
1.4 应用层协议
定义了运行在不同端系统上的应用程序进程如何 相互传递报文,定义了:
- 交换报文的类型,例如请求报文和响应报文
- 各种报文类型的语法
- 字段的语义
- 确定一个进程何时以及如何发送报文,对报文进行响应的规则
2. Web和HTTP
2.1 HTTP概况
Web的应用层协议是超文本传输协议(HTTP),它是Web的核心
HTTP由两个程序实现:一个客户程序,一个服务器程序
客户程序和服务器程序运行在不同的端系统中,通过HTTP报文进行会话
HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式
HTTP使用TCP
作为它的支撑传输协议
如何理解HTTP是一个无状态协议
服务器向客户发送被请求的文件,而不存储客户的状态信息。假如某个客户在短短的几秒钟之内两次请求同一对象,服务器并不会因为刚刚为该客户提供了该对象就不再做出反应,而是重新发送该对象,就像服务器已经完全不记得之前做过的事一样。
HTTP服务器不会保存有关客户的任何信息
2.2 HTTP响应状态码及短语
状态码短语 | 含义 |
---|---|
200 OK | 请求成功,信息在返回的响应报文中 |
301 Moved Permanently | 请求对象被永久转移了,新的URL定义在响应报文的Location:首部行中 |
400 Bad Request | 一个通用的差错代码,指示该请求不能被服务器理解 |
404 Not Found | 被请求的文档不在服务器上 |
505 HTTP Version Not Supported | 服务器不支持请求报文使用的HTTP协议版本 |
2.3 Cookie
前面提到,HTTP是一个无状态的协议,这就存在一个问题。一个Web站点通常希望能够识别用户,可能是因为服务器希望限制用户的访问,或者它希望把内容和用户的身份联系起来,为此Cookie完美解决了这个问题
Cookie的四个组件
- 在HTTP响应报文中的一个cookie首部行
- 在HTTP请求报文中的一个cookie首部行
- 在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理
- 位于Web站点的一个后端数据库
如图所示,在第一次访问Web服务器时,服务器在响应报文中返回一个唯一的cookie,在服务器中并将用户与cookie对应保存。在往后的访问中,浏览器会自动在请求报文的首部添加这个具有唯一性的,独属于一个用户的cookie。服务器在接收到这个请求报文,并识别它的cookie后,就能知识这个用户的历史访问信息。
参考资料
《计算机网络:自顶向下方法(原书第7版)》/(美)詹姆斯·F.库罗斯 ——北京:机械工业出版社,2018.5