计算机网络第二章——应用层

应用层协议原理

端到端的通信
网络核心设备不在应用层起作用

网络应用程序体系架构

客户机/服务器(CS)

  • 服务器
    • 总是打开的
    • 具有固定、众所周知的IP地址(域名)
    • 主机集群常被用于创建强大的虚拟服务器
  • 客户机
    • 同服务器端通信
    • 可以拥有动态IP地址(不同方式上网、分配IP随机)
    • 客户机相互之间不直接通信
    • 可以间断的同服务器连接

P2P

  • 特点
    • 没有总是打开的服务器(既能做服务器,也能接收)
    • 主机直接相互通信
    • 间歇连接并且改变IP地址
  • 优点:自拓展性
  • 缺点:难以管理

两者混合

举例:即时讯息

  • 两个聊天用户之间是P2P
  • 注册、查询通过服务器
  • 用户上线时要在中心服务器上进行注册

进程通信

  • 进程:运行在端系统中的程序
  • 客户进程:发起通信的进程
  • 服务器进程:等待联系的进程
    具有P2P体系结构的应用程序既有客户进程,又有服务器进程

  • 同一主机上的两个进程通过内部进程通信机制进行通信
  • 不同主机上的进程通过交换报文相互通信

套接字(Socket)——应用程序编程接口API

进程和计算机网络的接口

  • 进程通过它的套接字在网络上发送和接收报文
  • 套接字类比门户
    • 发送进程把报文推出门户
    • 发送进程假定门户到另一侧之间又运输设施,该设施可以传送报文到接收进程
  • 用户通过API对传输层的控制仅限于:选择传输协议和可设定的几个参数

进程寻址

  • 为了一个进程接收报文,主机上的进程需要一个标识,包括IP地址端口号(因为一台主机上有多个进程)

应用层协议

应用层协议头部往往不需要编址信息

定义内容

  • 报文类型,如请求报文和应答报文
  • 报文类型的语法:报文中各个字段及其详细描述
  • 字段的语义,即包含在字段中的信息的含义
  • 进程何时、如何发送报文及对报文进行响应

分类

  • 公共邻域协议
    • 由RFC文档定义
  • 专用协议

常见应用的传输服务需求

在这里插入图片描述

码率 原文
720p(1280720)中等码率 2mbps,高码率 4mbps,极高码率 8mbps。
1080p(1920
1080)中等码率 4mbps,高码率 8mbps,极高码率 16mbps。
在这里插入图片描述

因特网传输协议提供的服务

  • TCP(见第一章)
  • UDP
    因特网应用:应用层协议,传输协议

安全的TCP:SSL/TLS

在这里插入图片描述

Web应用和HTTP协议(重要)

网页由许多对象组成
每个对象被一个URL(Uniform Resource Locator,统一资源定位符)寻址
URL举例

HTTP协议

Hyper Text Transfer Protocol,超文本传输协议

特点

使用TCP
  • 客户初始化一个与HTTP服务器80端口的 TCP连接 (创建套接字)
  • HTTP服务器接受来自客户的TCP连接请求, 建立连接
  • Browser (HTTP client)和Web服务器 (HTTP server) 交换HTTP消息(应用层协议消息)包括HTTP请求和响应消息
  • 最后结束(或叫关闭)TCP连接
无状态

HTTP服务器不维护客户先前的状态信息(应用层session)

补充
维护状态的协议非常复杂
必须维护过去历史
如果server/client崩溃,它们各自的状态视图可能不一致,因此必须保证协调一致

HTTP连接

非持久HTTP连接
  • 每个TCP连接上只传送一个对象,下载多个对象需要建立多个TCP连接
  • HTTP/1.0使用非持久HTTP连接
  • 最大好处节约资源,一定程度上降低时延
持久HTTP连接
  • 一个TCP连接上可以传送多个对象
  • HTTP/1.1默认使用持久HTTP连接
响应时间模型

定义往返时间RTT(Round-Trip Time)
响应时间:
• 1个RTT用于建立TCP连接
• 1个RTT用于HTTP请求/响应消息的交互
• Html文件传输时间
total = 2RTT+transmit time
在这里插入图片描述

  • 非持久HTTP连接每个对象需要两个RTT,OS必须为每个TCP连接分配主机资源,大量客户的并发TCP连接形成服
    务器的严重负担
  • 持久HTTP连接:服务器发送响应信息后保持连接,同1客户/服务器的后续HTTP 消息继续在该连接上传送

HTTP报文

请求报文request

举例
请求行:get、post、head(调试)

HTTP/1.1 方法类型增加了PUTDELETE

get后为相对路径
host:访问服务器全局标识
user-agent:用户代理
报文格式

上载表单(各字段)输入值
  • Post方法
    • 网页时常包含表单输入
    • 输入值在请求报文的实体主体中被上载到服务器
  • URL方法
    • 使用GET方法
    • 表单(各字段)输入值被上载,以URL请求行的字段:www.somesite.com/animalsearch?monkeys&banana
响应报文response

在这里插入图片描述
Last-Modified:上一次更新时间

常见响应状态码
  • 200:OK
  • 301:Moved Permanently
  • 400:Bad Request
  • 404:Not Found
  • 505 :Version Not Supported
Cookies

用于跟踪用户

  • cookies头部行在HTTP请求消息中
  • cookies头部行在HTTP响应消息中
  • cookies 文件保存在用户主机中并被用户浏览器管理
  • cookie也保存在Web站点的后端数据库
Web缓存(代理服务器)

目标:代表起始服务器满足HTTP请求
缓存的同步是关键问题

  • 用户配置浏览器:Web访问经由缓存
  • 所有HTTP请求指向缓存
    • 对象在缓存中:缓存器返回对象
    • 否则缓存器向起始服务器发出请求,接收对象后转发给客户机
  • 既是服务器又是客户机
  • 为什么需要Web缓存器
    • 减少对客户机请求的响应时间
    • 减少内部网络与接入链路上的通信流量
    • 能从整体上大大降低因特网上的Web流量
      在这里插入图片描述
条件GET方法----解决同步问题

目的:证实缓存器中的对象是否为最新
缓存器:在请求报文中包含对象最后修改时间

FTP(不纳入考试范围)

端口号:网络进程的编址
FTP使用2个端口:21(指令)、20(数据交换)
21号端口传送时间过长会中断连接
FTP是有状态的 要用户认证

过程

  • FTP客户首先发起建立1个与FTP服务器端口号21之间的TCP控制连接,指定TCP作为传输层协议
  • 客户在建立的控制连接上获得身份认证(authentication:认证 authorization:授权)
  • 客户在建立的控制连接上发送命令来浏览远程主机的目录.
  • 当服务器接收到1个文件传输命令时, 在服务器端口号20创建1个与客户
    的TCP数据连接
  • 1个文件传输后,服务器结束这个TCP数据连接

建立模式

主动模式

被动模式

邮件传输

电子邮件

组成部分

  • 用户代理:允许用户阅读,恢复,转发,保存,编辑邮件信息
  • 邮件服务器:存放用户接收的邮件信息;外出报文队列;运行邮件协议
  • 简单邮件传送协议和邮件接收协议:SMTP(发)、POP3(收)、IMAP(收)

mail server不会主动把邮件推送给user agent,因为user agent不知道在哪里

SMTP(推)

客户使用TCP来可靠传输邮件消息到服务器端口号25
直接传送: 发送服务器到接收服务器
传输的3个阶段:握手 (问候) ;邮件消息的传输 ;结束
特点

  • SMTP使用持久连接
  • SMTP 要求邮件消息(header & body)必须是7-bit ASCII
  • SMTP服务器使用CRLF.CRLF(\r\n)来判断邮件消息的结束
    与HTTP比较:
  • HTTP:拉协议
  • SMTP:推协议
  • 都有ASCII 命令/应答交互, 状态码
  • HTTP: 每个对象封装在它各自的HTTP响应消息中发送
  • SMTP: 一个邮件内各个对象置于同一个邮件消息的多目部分发送
邮件格式
  • RFC 822: 文本邮件消息格式标准
    在这里插入图片描述
  • MIME: Multipurpose Internet mail Extensions (多用途因特网邮件扩展, RFC 2045, 2046 ) 增添额外的信头头部声明MIME content-type
    在这里插入图片描述

邮件访问协议(收)

POP

Post Office Protocol 邮局协议[RFC 1939]110端口号
身份认证 (代理 <–>服务器) 并 下载邮件消息
有"Download-and-delete"和"Download-and-keep"模式
无状态

IMAP

Internet Message Access Protocol [RFC 3501] 143端口
更多功能特征 (更复杂!)
允许用户像对待本地邮箱那样操纵远程邮箱的邮件

保存所有邮件消息在一个位置: 服务器
允许用户在服务器的各文件夹中管理邮件消息
IMAP跟踪用户会话的状态信息 :文件夹和邮件消息IDs与文件夹名字的映射

DNS(重要)

域名系统 Domain Name System
ip地址的域名映射
分布式数据库
在这里插入图片描述

为什么不集中式DNS?

  • 单点故障
  • 巨大访问量
  • 远距离集中式数据库
  • 维护

在传输层对应UDP

功能

  • 主机名到ip地址的转换
  • 主机别名:一个主机可以有一个规范主机名和多个主机别名
  • 邮件服务器别名
  • 负载分配:DNS实现冗余服务器:一个IP地址集合可以对应于同一个规范主机名

过程

本地DNS

顶级域服务器(TLD)和权威DNS服务器

本地DNS服务器

  • 严格来说不属于DNS标准层次结构
  • 每个ISP都有一个本地DNS
  • 由主机发出DNS请求,该请求被发往本地DNS服务器。
    • 起着代理的作用,转发请求到层次结构中

查询方式

递归

在这里插入图片描述
问题:对顶层的服务器负担很重

迭代

在这里插入图片描述

DNS缓存和权威DNS记录更新

  • 一旦名字服务器获得DNS映射,它将缓存该映射到局部内存
    • 服务器在一定时间后将会丢弃缓存的信息(一般缓存10分钟)
    • 本地DNS服务器一般都缓存由TLD服务器的IP地址

DNS记录

在这里插入图片描述

  • type=A
    • name = 主机名
    • value = IP地址
  • type=NS
    • name = domain(域)
    • value = 真实的规范主机名
  • type=CNAME
    • name 真实域名的别名
  • type=MX
    • name =邮件服务器的主机别名
    • value =邮件服务器的真实规范主机名

如何插入记录

DNS协议,消息

在这里插入图片描述
在这里插入图片描述

在DNS中插入记录

安全问题

  • 拒绝服务攻击
  • 重定向攻击
  • 利用DNS开展拒绝服务攻击

P2P文件共享

类似BitTorrent

(纯P2P架构)特点

  • 没有总是在线的服务器
  • 任意端系统之间直接通信
  • 对等方之间可以简短连接并可以改变IP地址

P2P:集中式目录的问题

  • 单点故障
  • 性能瓶颈

文件分发

  • BitTorrent是一种用于文件分发的流行P2P协议
    • 一个洪流中的对等方彼此下载等长度文件块(chunk),典型块长度为256KB
  • 扰动:节点可能随时加入和退出
  • 请求chunk:访问哪些节点有所需的节点,且节点速率最高
  • 发送chunks:挑选节点速率最好的前4个,每隔30秒会随机选择其它节点,保证公平

tracker 服务器

多媒体的一些概念
CBR(constant bit rate) 固定码率
VBR(variable bit rate) 可变码率
DASH(Dynamic Adaptive Streaming over HTTP)
在这里插入图片描述

CDN(内容分发网络)

CDN: 将内容的拷贝存储在CDN节点中
将多份拷贝存储在地理上分散的不同站点来提供服务
用户向CDN请求内容

  • 被定向到附近的拷贝,取得内容
  • 如果网络路径拥塞,则可能选择其他的拷贝
  • 深入(Enter Deep): 将CDN服务器部署在众多的接入网络中
    • 靠近用户
  • 邀请做客(Bring Home): 在少量(例如10个)靠近接入网的关键位置(例如IXP),建造大集群,邀请到ISP做客
    减少端到端的时延

内容访问过程

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值