【计算机网络】应用层
文章目录
简介
!!!此文为《计算机网络:自顶向下方法》读书笔记,仅供参考!!!
This document is the note of Computer Networking: A Top-Down Approach
注意,本文仅能作为笔记使用,不能直接用来学习
1. 应用层理论
1.1 Client Server和P2P
服务端(Server)特性:
- 持续运行
- 永久的IP地址
- 设置位置通常在数据中心,方便集中管理
客户端(Client)特性:
- 无法直接与其他客户端交流,可以与服务端交流
- 间断性连接(与服务端不同,客户端一般不会持续运行)
- 动态的IP地址
常见的Client Server运用:HTTP,IMAP,FTP
P2P的特性:
- 端系统可以直接互相交流,发送请求,回报服务
- 不持续运行,间断性连接
- 动态的IP地址
常见的P2P运用:P2P文件分享,P2P游戏联机
1.2. 进程
进程(process):在主机/端系统(host/end system)上运行的程序
- 客户端进程(Client Process):提出交流的进程
- 服务端进程(Server Process):等待被联系的进程
进程间通讯(Inter-process communication, IPC):进程在同一主机上的通讯
消息(Messages):进程在不同主机上的通讯方式
套接字(Socket):形如进程通往传输层的一扇门,所有消息的接受/发送都会经过套接字
1.3. 初识网络传输协议
应用可能需要的传输服务:
- 数据完整性(Data Integrity):稳定的,可靠的数据传输
- 时间(Timing):低延迟
- 吞吐量(Throughput):有最低传输速率阈值
- 安全(Security):传输加密
网络传输协议服务(Internet Transport Protocols Services):
- TCP(Transmission Control Protocol)
1. 稳定的传输
2. 流控制(Flow Control),即不会出现发送者传输过快,接收者跟不上的情况
3. 拥塞控制(Congestion Control),即网络拥堵时,控制传输
4. 方位性连接(Connection-oriented),即连接需要初始化,也就是常说的3握手4挥手
5. 不提供延迟保证,吞吐量保证,安全保证 - UDP(User Datagram Protocol)
1. TCP有的,都没有,TCP没有的,也都没有
(UDP那么弱,为什么还需要它:想象UDP为一张白纸,应用程序拥有极高的自由来自定义服务,而TCP则更向一个模板,提供了一些基础的功能)
TCP安全:由于TCP不提供安全保证,我们可能需要其他协议来完善TCP的功能
- TLS(Transport Layer Security)
- 提供加密的TCP连接
- 有稳定的可靠的传输
- 有端点认证(end-point authentication)功能
2. Web和HTTP
HTTP(Hypertext Transfer Protocol):一个位于应用层,主要负责处理客户端向服务端拉取对象的协议
2.1. 客户端/服务端模型
客户端:通常指发送,获取,并展示网络对象的浏览器
服务端:通常指返回客户端所需求的物件的服务器
HTTP使用TCP进行连接:
1. 客户端请求与服务端进行TCP连接
2. 服务端接受连接请求
3. 客户端与服务端之间进行HTTP消息沟通
4. TCP连接关闭
HTTP是“无状态的”:在HTTP协议下,服务端不会保存用户之前发送请求的记录(即1请求,1回复,结束)
2.2. 非永久/永久HTTP
非永久HTTP(Non-persistent HTTP):每次连接只有一次消息交流
1. 连接开始
2. 1次请求,1次回应
3. 连接关闭
永久HTTP(Persistent HTTP):每次连接可以有多次消息叫交流
1. 连接开始
2. 多次请求,多次回应
3. 连接关闭
2.3. HTTP请求
请求消息格式:
- 请求行(Request Line):标记请求的类型,URL,以及HTTP版本
- 头行(Header Lines):每一行都设置一个头以及对应的值
- 内容行(Body Line):一些头行包括不了的额外信息
一些请求类型:
- GET:用于对服务器发送数据
- POST:用于上传完成的表格数据
- PUT:向服务器发送一个新的对象
- HEAD:与GET一样,但没有内容行
一些状态码(Status Code):
- 200 OK:请求成功,返回的对象也在这则消息中
- 301 Moved Permanently:请求的对象被移动了,新的地址也在这则消息中
- 400 Bad Request:服务器不能理解该请求
- 404 Not Found:服务器没有找到请求所需要的对象
- 505 HTTP Version Not Supported:HTTP版本不支持
2.4. Cookies
Cookies:保持一些连接中的记录(比如用户访问的内容,常见的有购物网站记录你常购买的类型)
Cookie的4则要素:
- Cookie回应头:一个保存了Cookie身份的头,由服务端发送
- Cookie请求头:一个保存了Cookie身份的头,由客户端发送
- Cookie文件:一个本地的Cookie文件,存于客户端的浏览器中
- Cookie数据库:一个存储客户端Cookie信息的数据库,存在于服务端
2.5. 代理服务器 & Conditional GET
代理服务器(Web Caches/Proxy Servers):一个存储了部分回应内容的辅助服务器,通常被分布式设立在各地,当用户对总服务器发送请求时,会首先将请求送至最近的代理服务器,若代理服务器存在回应内容,直接回应,否则再将请求传递给总服务器
- 代理服务器即是服务端也是客户端:当代理服务器向客户端提供回应内容时,代理服务器为服务端。而当代理服务器像总服务器发送请求时,代理服务器是客户端
- 代理服务器可以存储所有内容吗:代理服务器可以存储的内容由总服务器决定,总服务器会在回应的头中注明代理服务器是否可以缓存这个内容
- 为什么需要代理服务器:物理距离近,减少回应时间;分散网络交通,避免总服务器超载
Conditional GET:和GET类似的请求类型,但是会多一层版本检测,即检测本地对象的上次拉取时间是否迟于服务器的最后更新时间。如果是,服务器返回304 Not Modified表示对象是最新的。如果否,则返回200 OK和最新的对象
2.6. HTTP/2比HTTP/1好在哪里
可控传输顺序:传输顺序可以由客户端掌控(HTTP/1是FCFS,即Firsr Come First Serve的形式来传输对象的)
提前推出:服务端可以将没被需求的对象先推给客户端
Frame:服务端将对象分成大小一致的Frame,随后重新变更传输顺序,从而解决HOL Blocking问题
- HOL Blocking(Header-of-Line Blocking):即前面有一个较大的文件,而后面都是很小的文件,因为大文件要先被传输,所有的小文件都要等待很长时间
3. 电子邮件,SMTP于IMAP
电子邮件3要素:
- 用户(User Agent):发送/接受/编辑邮件的端系统
- 邮件服务器(Mail Server):存储所有邮件的数据中心,并从/向其他邮件服务器或者用户接受/传输邮件
- 传输协议:SMTP, IMAP, HTTP等
3.1. SMTP
SMTP(Simple Mail Transfer Protocol):一个用于让用户向邮件服务器推送/发送邮件的协议
SMTP vs HTTP:
- SMTP向外推送对象,HTTP向内拉取对象
- SMTP能在同一消息的多个部分发送多个对象,HTTP一个消息只能发送一个对象
- SMTP使用永久连接,而HTTP可以使用非永久和永久连接
- SMTP和HTTP都有ASCII构成的指令,以及状态码(但两个协议的状态码作用不同)
实例:假设A给B发送一封邮件
- A在本地编辑邮件
- A发送邮件,邮件通过SMTP协议被推送至A的邮件服务器
- A的邮件服务器开始于B的邮件服务器建立TCP连接
- A的邮件服务器通过TCP连接(其实是SMTP协议,因为SMTP基于TCP)向B的邮件服务器推送邮件
- A的邮件服务器与B的邮件服务器断开TCP连接
- B的邮件服务器将邮件存入B的邮箱中
3.2. IMAP
IMAP(Internet Mail Access Protocol):IMAP是允许用户删除,阅读,打包邮件服务器上的内容的协议
实例:B阅读邮箱内的邮件
- B通过IMAP(或者HTTP)向B的邮件服务器发送阅读请求
- B的邮件服务器返回邮件内容