计算机网络 - 应用层

协议的内容

  • 消息的类型
    • 请求消息
    • 响应消息
  • 消息的语法/格式
    • 消息中有哪些字段
    • 字段如何描述
  • 字段的语义
  • 规则
    • 进程应该什么时候,怎样发送消息

HTTP连接的两种类型

  • 非持久性连接 HTTP 1.0
  • 持久性连接 HTTP 1.1
    • 无流水:客户端收到前一个响应之后才发送新的请求,每个对象使用1RTT
    • 流水机制:HTTP1.1默认,只要遇到对象尽快发出,所有对象使用1RTT

RTT(Round Trip Time):从客户端发送一个很小的数据包到服务器并返回所经历的时间

非持久性连接发送一个文件所需时间:2*RTT + 发送文件时间

HTTP消息

  • 请求消息(request)
    • 请求行(request line):请求方法(GET、POST) + URL + 协议版本
    • 请求头部(request header):键值对
    • 空行:回车符、换行符,通知服务器header结束
    • 请求数据:POST提交表单,GET没有正文,不包含这一部分
  • 响应消息(response)
    • 状态行(status line):协议版本 + HTTP状态码
    • 消息报头:键值对
    • 空行:同上
    • 响应正文:响应数据

HTTP请求方法

  • POST:通过消息体上传

  • GET:通过URL字段上传

  • HEAD:请Server不要将所请求的对象放入响应消息,只返回header

  • PUT(HTTP1.1):将消息体中的文件上传到URL指定的路径

  • DELETE(HTTP1.1):删除URL指定的文件

HTTP状态码

  • 2**:成功
  • 3**:转发与重定向
  • 4**:客户端错误
  • 5**:服务器错误

HTTP无状态:服务器不记录客户端的历史行为

为了辨别用户身份,进行session跟踪,储存在用户本地的数据

Cookie组件
  • HTTP请求消息的cookie头部行:cookie字段
  • HTTP响应消息的cookie头部行:set-cookie字段
  • 保存在客户端上的cookie文件,由浏览器管理
  • Web服务器的后台数据库

Web缓存/代理服务器技术

在不访问服务器的前提下满足客户端的HTTP请求

浏览器向代理服务器发送HTTP请求

  • 如果代理服务器中有所需的对象,代理服务器直接响应给客户端
  • 如果代理服务器中没有所需对象,代理服务器向原始服务器发送请求,获取对象,发送给客户端,并保存对象

缓存/代理服务器既充当服务器又充当客户端。

缓存命中率

问题:缓存一致问题

缓存和原始服务器的数据是否一致?

解决方法:条件性GET

请求header字段:If-modified-since

缓存命中,代理服务器发送一个条件性GET来检查缓存中的某个对象是否是最新的,其请求头中包含If-modified-since字段,原始服务器接收该请求,若该对象在If-modified-since字段指示的日期之后没有进行过更新,则发送一个不含对象的响应报文(避免浪费带宽,浪费时间),状态码304,代理服务器接收到该响应报文,也就得知缓存中的该对象是最新的,所以将缓存中的该对象发送给客户端。

Email

SMTP协议(Simple Mail Transfer Protocol)

TCP,端口25

服务器消息队列

命令/响应模式
  • 命令(command):ASC2文本
  • 响应(response):状态代码和语句
MIME:多媒体邮件扩展

邮件头部增加额外行声明MIME内容类型:编码方法,解码方式

邮件访问协议
  • POP协议:认证授权,下载

  • IMAP协议(Internet Mail Access Protocol)

  • HTTP协议:基于Web的协议

DNS

  • 翻译:域名->IP
  • 主机别名
  • 负载均衡:为一个域名提供多个服务器映射,轮流访问
为什么不适用集中式DNS而使用分布式DNS
  • 单点失败问题
  • 流量问题
  • 距离问题
  • 维护性问题
分布式层次式数据库

根 - 顶级 - 第二层

DNS记录

name, value, type, ttl

posted @ 2020-11-22 17:00  CofJus  阅读(52)  评论(0编辑  收藏  举报