计网-应用层
2.1 网络应用原理
2.1.1 网络应用体系结构
为什么网络应用不部署在网络核心:没有对应的协议栈
- C/S
- P2P
- 混合模式
2.1.2 进程通信
概念
进程(process):通信的主体
报文(message):通信的“介质”
1、客户与服务器进程
通信进程成对出现
通常将一对进程中的一方称为client(发起通信的一方),另一方称为server(等待通信的一方)
2、进程与计算机网络之间的接口
套接字(socket) 进程与网络通信的接口,又叫做API
套接字接口是一台主机内应用层与运输层之间的接口
3、进程寻址
需要的信息
- 定位主机的地址
- 主机上的资源标识
2.1.3 可供应用程序使用的运输服务
- 可靠数据传输
- 吞吐量
- 定时
- 安全性
2.1.4 因特网提供的运输服务
运输层的两个协议
TCP
UDP
1、TCP服务
- 面向连接服务
- 可靠数据传输服务
关于TLS:
将其理解为加强版的TCP,而不是独立于TCP和UDP的第三种协议
其有专门的socket,比TCP的socket多了一个加密和解密的流程
安全套接字层(SSL)
2、UDP服务
UDP是一种不提供不必要服务的轻量级协议
2.2 WEB和Http
2.2.1 HTTP概述
RFC 2068 HTTP/1.1
RFC 7230 HTTP/1.1
RFC 7540 HTTP/2
2.2.2 非持续连接与持续连接
指的是对于多个请求/响应是否使用同一个TCP连接的问题
1、非持续连接
往返时间RTT 可作为评估通信协议效率的单位
包括分组传播时延、排队时延以及分组处理时延
非持续连接的HTTP总响应时间为
$$
2\times RTT + 传输对象的时间
$$
2、采用持续连接的HTTP
非流水线方式:一次请求完成后才能进行下一次请求
流水线方式:一次发送所有请求,逐步接收
2.2.3 HTTP报文格式
1、HTTP请求报文
- 请求行(request line)
- 首部行(header line)
首部结束用单独的一个CRLF
来标识
- 实体体
2、HTTP响应报文
- 状态行(status line)
- 首部行(header line)
- 实体体(entity body)
2.2.4 cookie
Cookie通过首部来传输
1 | == Server -> User Agent == |
2.2.5 Web缓存
目的是通过保存从公网获得的对象来减少接入链路上的流量
内容分发网络(Content Distribution Network): 由特定机构搭建在地理上分散的缓存器,提供缓存服务(当然也有专用的CDN)
条件GET方法:
RFC 7232
一般在缓存服务器上使用
缓存服务器缓存数据后,存储收到数据的时间(响应报文中的Last-Modified
),在下次请求时,发送的报文中增加一个headerIf-modified-since
,其值就等于之前收到的Last-Modified
值;对服务端,如果在If-modified-since
时间之后没有进行修改,那么返回的报文将没有实体体,状态码为304 Not Modified
HTTP2,HTTP3
怎么不讲()
FTP
传输协议:TCP
C/S模式
端口:21、20
与HTTP有什么区别
- FTP是带外传输的,HTTP是带内传输的
控制连接:21端口
数据连接:20端口
GET等与请求控制相关的字段通过21端口传输
数据通过20端口传输
先通过21端口发起请求,确认操作后在20端口建立TCP连接,传数据,21端口上的通信随之关闭
FTP有状态,HTTP无状态
TCP的状态维护:
服务器在整个会话期间维护用户的状态信息
常见的FTP控制链接
请求 包含用户名、密码以及对数据希望进行的操作指令
应答 状态码+状态描述
2.3 电子邮件
#TBS
怎么不讲()
2.4 DNS
Domain Name System
协议:UDP
端口:53
工作模式:C/S
角色:网络边缘,但是是因特网的核心功能(注意这是一个应用层协议)
DNS
- 一个由分层的DNS服务器组成的分布式数据库
- 一个使得主机能够查询分布式数据库的应用层协议
DNS服务会实现什么别的功能?
- 主机别名
- 邮件服务器别名
- 负载分配(负载均衡)
2.4.2 DNS工作机理概述
只使用单个DNS服务器显然不现实
1、分布式、层次、数据库
- 根DNS服务器
- 顶级域DNS服务器(TLD,Top Level Domain)(com,org,cn,uk等顶级域名)
- 权威DNS服务器
还有本地DNS服务器,但实际上其不在DNS的层次结构里
递归查询、迭代查询
2、DNS缓存
3、DNS记录和报文
RR,Resource Record 资源记录
格式:(name,value,type,ttl)
[RFC 1034]
[RFC 1035]
Type | Name | Value |
---|---|---|
A | 主机名 | 主机名对应的IP地址 |
NS | 域名 | 能查询到这个域名的权威DNS服务器主机名 |
CNAME | 主机别名 | 这个别名对应的主机名 |
MX | 邮件服务器别名 | 对应的规范主机名 |
(还有好多没有讲)