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 1945 HTTP/1.0

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)

RFC 6265

Cookie通过首部来传输

1
2
3
4
5
== Server -> User Agent == 
Set-Cookie: SID=31d4d96e407aad42

== User Agent -> Server ==
Cookie: SID=31d4d96e407aad42

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的层次结构里

RFC 2136(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 邮件服务器别名 对应的规范主机名

(还有好多没有讲)