计算机网络——应用层

计算机网络系列博客
开篇 https://blog.csdn.net/hieheihei/article/details/94127674

网络应用程序体系结构

客户-服务器体系结构(client-server architecture)

服务器 总是开启的主机,响应客户主机的请求。具有固定,周知的地址。
客户相互间不直接通信。

如:Web,TFP,Telnet,电子邮件

对等体系结构(P2P architecture)

不依赖或极少地依赖中心服务器。
应用程序在间断连接的主机对间直接通信。
对等方 P2P体系下直接通信的主机。
流量密集型应用常用P2P结构。

如:BitTorrent,P2P下载加速器,因特网电话,IPTV

混合体系结构

结合了C/S,P2P结构。
如许多即时通讯应用中,服务器用于跟踪用户IP,用户到用户报文直接在用户主机间传输。

进程通信

进程是通信中会话双方的实体。

套接字

同一主机内,应用层与运输层间的接口。
开发者可通过套接字控制应用层的一切行为,但对运输层的控制非常有限。

进程寻址

标识进程

  1. 主机地址: IP地址
  2. 主机中的进程标识符: 端口号

周知端口号:
https://www.iana.org/

可供进程使用的运输服务

可靠数据传输

运输层协议确保进程到进程的可靠数据传输:数据正确,完全地交付
丢包:结点缓存溢出,数据比特损坏。

吞吐量保证

运输层协议提供确保可用的吞吐量。
即协议确保可用吞吐量总大于r 比特每秒。

定时保证

运输层协议确保延时低于一定值。

安全性保证

运输层协议保证数据机密性,完整性等。

因特网运输服务

TCP服务 面向链接的可靠数据传输服务

UDP服务 无连接的不可靠数据传输服务

安全套接字层(Secure Sockets Layer,SSL)
应用层协议,提供进程到进程的安全性服务。
依赖运输层的TCP服务。
有自己的套接字API,需要在通信应用程序的双方部署相应SSL代码(SSL库,类)

应用层协议

定义应用程序进程如何传递报文,具体地,定义:

  • 报文类型
  • 报文语法 报文字段及格式
  • 字段语义
  • 进程何时,如何发送报文,如何响应报文

公有域应用层协议 常由RFC 文档定义

应用层协议是网络应用的重要组成部分。

HTTP超文本传输协议

HTTP概况

Web World Wide Web
20世纪90年代初
因特网应用

超文本传输协议(HyperText Transfer Protocol,HTTP)
HTTP 由客户端程序和服务端程序实现,二者通过交换HTTP报文会话。

Web游览器实现HTTP客户端
Web服务器实现HTTP服务端

HTTP使用TCP作为支撑运输层协议。

端口:80

Web页面
由对象组成。对象是一个文件,如HTML文件,JPEG图像,Java程序,视频片段等。
对象可通过一个URL地址寻址。
Web页面常由一个HTML基本文件和多个引用对象构成。

URL地址
用以寻址Web对象
由一个存放对象的服务器主机名和对象路径名构成。

无状态协议 服务器不保存关于客户的任何信息
服务器向客户发送被请求的文件,而不存储任何关于客户的状态信息。

持续连接 某客户和服务器的一次会话中,所有请求/响应对经同一TCP连接传输
非持续连接 某客户和服务器的一次会话中,每个请求/响应对通过一个单独的TCP连接传输

HTTP在默认方式下采用持续连接,但也可由客户端/服务器配置为非持续连接。

浏览器通常支撑并行的TCP连接
往返时间(Round-Trip Time,RTT)
一个短分组从客户到服务器然后再返回客户所花费的时间。

TCP 三次握手
1.客户向服务器发送一个小TCP报文段;
2.服务器用一个小TCP报文段做出确认和响应;
3.客户向服务器返回确认和一个HTTP请求报文;
4.服务器返回相应HTML文件;

HTTP报文格式

HTTP规范
RFC 1945 https://tools.ietf.org/html/rfc1945
RFC 2616 https://tools.ietf.org/html/rfc2616

用ASCII文本书写

HTTP 请求报文

请求行 HTTP请求报文的第一行

  • 方法字段 值可用为:GET POST HEAD PUT DELETE ; 绝大多数HTTP请求报文使用GET方法
  • URL字段 请求对象的标识
  • HTTP版本字段

GET方法 请求一个对象
POST方法 提交表单
HEAD方法 类GET,但返回特殊的响应报文,而非所请求的对象,常用于调试
PUT方法 用户上传对象到指定Web服务器的指定目录
DELETE方法 允许用户删除Web服务器上的对象

首部行 请求行后继的其它行

实体体(entity body)
GET方法下实体体为空
POST方法下实体体包含表单信息

HTTP 响应报文

状态行

  • 协议版本字段
  • 状态码
  • 状态信息

首部行

实体体

cookie

HTTP是无状态协议,但cookie技术允许服务器识别用户
cookie在无状态的HTTP之上建立一个用户会话层

参见 [RFC 6265]

cookie组件
HTTP响应报文中的cookie首部行
HTTP请求报文中的cookie首部行
用户端系统中保留一个cookie文件,由游览器管理
Web站点中的后台数据库

Web缓存器(代理服务器)

代表原Web服务器来响应HTTP请求的网络实体

Web缓冲器的存储空间保存最近请求过的对象的副本
可以配置用户浏览器,使得HTTP请求首先指向Web缓冲器

Web缓冲器通常由ISP购买并安装

条件GET方法 允许缓存器证实其缓存的副本是新的。

优点:

  1. 减少对客户请求的响应时间
  2. 大大减少一个机构的接入链路到因特网的通信流量以降低费用
  3. 从整体上,大大减小因特网上的Web流量

内容分发网络(Content Distribution Network,CDN)
基于缓存器技术,CDN公司在因特网上安装许多地理上分散的缓存器,使得大流量本地化。
有共享CDN,专用CDN(谷歌,微软)

FTP文件传输协议

用户在本地主机与远程主机间传输文件

端口:21

FTP使用多个并行TCP链接
控制连接 在主机间传输控制信息,如用户标识,口令,文件命令等
数据连接 实际传递文件
控制连接是持续的,一次会话维持一个控制连接
数据连接是非持续的,为每一次文件传输创建一个新数据连接

带外传送(out-of-band) 使用独立控制连接,如FTP
带内传送(in-band) 在传送数据的同一个连接内传输控制信息,如HTTP

SMTP简单邮件传输协议

Simple Mail Transfer Protocol,SMTP

因特网电子邮件系统

用户代理 允许用户阅读,回复,转发,保存,撰写报文(电子邮件)
邮件服务器 每个邮件接收方都在某邮件服务器上有一个邮箱
简单邮件传输协议,SMTP

SMTP

用于从发送方邮件服务器发送报文到接收方邮件服务器
依赖TCP运输层协议

端口:25

参见 [RFC 5321]

古老(1982年),限制报文的体只能用ASCII表示,故传输现代多媒体附件时,要将多媒体数据编码为ASCII码,用SMTP传输完毕后再解码还原为多媒体数据。

SMTP一般不使用中间邮件服务器发送邮件,即使两服务器相距甚远也会尝试直接建立连接。

拉协议(pull protocol)
用户依据协议从服务器上拉取信息,连接由想接收文件的进程发起。如HTTP(的主要功能)
推协议(push protocol)
用户依据协议把文件推送到服务器上,连接由文件发送方发起。如SMTP

邮件发送过程

  1. 发送方用户代理用SMTP(或HTTP)将邮件推送至发送方邮件服务器;
  2. 发送方邮件服务器用SMTP将邮件推送至接收方邮件服务器;具体地,发送方邮件暂存与发送方邮件服务器中,发送方邮件服务器会周期性的尝试连接接收方服务器,若多次尝试失败,则返回给发送方一个错误信息
  3. 接收方邮件服务器分发邮件给接收方;具体地,接收方通过邮件访问协议从接收方邮件服务器上拉取邮件。

邮件访问协议
用于接收方从接收方邮件服务器上拉取报文。
常用邮件访问协议:
Post Office Protocol-Version 3,POP3
Internet Mail Access Protocol,IMAP
HTTP

现今基于Web的电子邮件都使用HTTP协议,此时用户代理就是普通的游览器。
用户和邮件服务器间的报文传输都通过HTTP进行,而邮件服务器间的报文传输仍通过SMTP进行。

DNS域名解析协议

因特网主机标识

  1. 主机名 hostname
  2. IP地址 IP adress

域名系统(Domain Name System,DNS)
主要提供主机名到IP地址转换的服务
包括

  • 一个由分层的DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议

DNS服务器通常是运行Berkely Internet Name Domain(BIND)软件的UNIX机器

DNS协议基于UDP
端口:53
参见 [RFC 1034],[RFC 1035]

DNS服务
  1. 解析主机名为IP地址
  2. 主机别名(host aliasing) 主机可拥有一个 规范主机名 和若干主机别名。DNS提供通过主机别名获得规范主机名及主机IP的服务
  3. 邮件服务器别名 MX记录技术允许一个机构使用相同(但不同类型)的主机名
  4. 负载分配 DNS可用于在冗余的服务器间进行负载分配。一个规范主机名可以映射到一个地址集合,当用户请求解析该规范主机名时,DNS返回相应IP地址集合,但是在每次响应中轮换IP地址次序,以将负载分配到不同服务器(进程通常默认使用IP地址集合中的第一个地址)
DNS工作机制
分布式层次数据库

DNS使用了大量服务器,它们以层次方式组织,分布在全世界范围内。

DNS大致分三类
根DNS服务器
因特网上共13个根DNS服务器,标号[A-M]
每台逻辑上的根服务器实际上是一个冗余的服务器网络。

顶级域DNS服务器
负责顶级域名
参见 https://www.iana.org/domains/root/db

权威DNS服务器
因特网上具有公共可访问主机的机构必须提供公共可访问的DNS记录。
机构可以选择实现自己的权威DNS服务器以管理该机构的公共可访问DNS记录,也可以选择由DNS服务提供商管理该机构的公共可访问DNS记录(付服务提供商钱,存服务提供商的权威DNS服务器里)
实践中,权威DNS服务器可能有多层。

本地DNS服务器
严格地说,不属于DNS层次结构
功能上非必须,提供代理,缓存作用
每个ISP(大学,院系,公司,小区)都拥有一台本地DNS服务器。本地DNS服务器通常在地理上临近用户主机。

当主机发出DNS请求时,请求被发往本地DNS服务器,本地DBS服务器起代理作用,它将请求转发到DNS服务器层次结构中。

递归查询 A请求B,B请求C,C返回给B,B返回给A
迭代查询 A请求B,B返回给A,A请求C,C返回给A

实践中,从主机到本地DNS的查询是递归的,从本地DNS到DNS层次结构的查询是迭代的。

DNS缓存

减少延时,减少DNS流量
在一个请求链中,当某DNS服务器接收到一个回答时,它能将该回答缓存在本地存储器中。对一个请求,它首先查看本地缓存,若无,再请求相应DNS服务器。
DNS在一定时间后(常为两天)会丢弃缓存的信息。

DNS记录

资源记录(Resource Record,RR) DNS服务器存储RR。每个DNS回答报文包含若干条RR。

资源记录 RR = (Name,Value,Type,TTL)

TTL 记录生存时间,即记录应当从缓存中移除的时间。

  1. Type = A Name 为主机名,Value 是该主机名对应的IP地址。 A类RR提供规范主机名到IP地址的映射
  2. Type = NS Name 为域,Value为知晓如何获得该域中主机IP地址的权威DNS服务器的主机名。NS类RR提供沿查询链路由DNS的信息
  3. Type = CNAME Name 为主机别名,Value 为规范主机名。CNAME类RR提供别名到规范主机名的映射
  4. Type = MX Name为邮件服务器别名,Value为规范主机名。MX类RR提供邮件服务器别名到规范主机名的映射。MX记录允许一个机构的邮件服务器和其他服务器使用相同的别名。

对某给定主机名h,h的权威DNS服务器s1,DNS请求链中s1的上游DNS服务器s0,必有:
s1中有一条主机名h的A类记录;
s0中有一条NS记录,该记录对应包含主机名h的域;
s0中有一条A类记录,该记录提供NS记录中Value值所对应的IP地址;

DNS报文

DNS有且仅有查询,回答两种报文,且两者遵照相同的格式,格式如下:

首部区域
12byte

  1. 标识符字段 16bit 标识一次查询,一个请求/响应对中有相同的标识符。
  2. 标志字段 若干标志。 查询/回答标志位 指出报文为查询报文亦或回答报文;权威标志位 指示相应服务器是否为所查询主机名的权威服务器; 递归可用标志位 指示该DNS服务器是否支持递归查询;希望递归标志位 指示客户是否希望在服务器没有记录时执行递归查询;
  3. 问题数字段
  4. 回答RR数字段
  5. 权威RR数字段
  6. 附加RR数字段

问题区域
正则进行的查询信息

  1. 名字字段 所查询的主机名
  2. 类型字段 指示所查询的主机名类型 是否为邮件服务器地址(MX记录或A记录)

回答区域
所查询主机名相关的资源记录
若干条RR

权威区域
其他权威服务器的记录

附加区域
其他有帮助的记录
例如所查询的邮件服务器的规范主机名。

向DNS数据库中插入记录

DNS注册登记机构
商业实体,验证待注册域名的唯一性,将待注册域名输入DNS数据库,并为注册服务收起少量费用。

因特网名字和地址分配机构(Internet Corporation for Assigned Names and Numbers,ICANN)
ICANN授权注册登记机构。
http://www.internic.net

向某注册登记机构注册域名h时,需要提供域名h的基本和辅助权威DNS服务器的名字和IP地址。
对所提供的每一个权威DNS服务器的名字和地址,该注册登记机构确保将相应的NS类记录,A类记录输入对应的顶级域DNS服务器。
注册者还需确保域名h的Web服务器A类记录,邮件服务器MX类记录被输入上述权威DNS服务器中。

P2P对等体系结构

对一直开启的基础设施服务器有最小程度的依赖,成对间歇连接的主机(对等方)彼此直接通信。

P2P文件分发

客户/服务器文件分发 服务器向每个客户发送文件的一个副本,服务器负担大,服务器流量消耗大
P2P文件分发 每个客户作为对等方,可重新分发它所有的文件的任何部分。

扩展性 对于变量用户规模,客户/服务器体系的总传输时间有线性的下界,而P2P体系有亚线性的上界。

BitTorrent协议

用于文件分发的流行P2P协议。

洪流(torrent) 参与一个特定文件分发的所有对等体的集合

文件块 洪流中的对等方彼此传输等长的文件块;

追踪器(tracker) 一个对等方加入洪流时,向追踪器注册自己,并周期性地通知追踪器自己仍在洪流中。追踪器维护正在参与洪流的对等方列表。
BitTorrent协议中的追踪器是分布式的,即后文中的DHT。

邻近对等方 洪流中,成功创建TCP连接的一对对等方 。

新对等方A加入洪流时,追踪器(随机地)将洪流的某个子集中所有对等方的ip地址发送给A;
A持有该对等方列表,并试图与该列表上的所有对等方创建并行的TCP连接;
A的邻近对等方不断变动,就邻近对等方可能离开,新邻近对等方可能与A成功创建TCP连接;
A周期性地询问邻近对等方所持有的块列表,并根据列表信息,对A自身当前未拥有的块发出请求;

最稀缺优先技术 对等方A在决定请求哪些块时,首先请求那些A的邻近对等方中副本最少的块,以大致均衡每个块在洪流中的副本数量。

对换算法 对等方A决定相应邻近对等方们的那个请求。A根据当前向它提供数据的邻居的速率,给出优先权。每个时间周期,A根据优先权决定它向哪些邻居传送数据;每过多个时间周期,A随机选出一个邻居并向他发送数据。
以上关于交换的激励机制常被称为一报还一报。这种激励方案能被回避。但事实上,BitTorrent的生态比较成功。

分布式P2P体系数据库,DHT

中心式数据库模型
客户/服务器体系,中心数据库存储键值对,客户可用特定键查询值。

分布式散列表(Distributed Hash Table,DHT)
分布式P2P体系,大量对等方维护一个键值对的表,每个对等方只存储该表的一个小子集。
允许任一对等方用一个特定键查询该分布式数据库。分布式数据库定位拥有该键值对的对等方,并返回该键值对。
允许任一对等方向数据库中插入新键值对。

朴素设计

在所有对等方中随机分布键值对,每个对等方维护一个所有参与对等方的表。查询时向所有其他对等方发送查询。此方案无扩展性,随对等方数量增多,数据库复杂性大大增加。

基于散列的设计

为每个对等方分配一个标识符id,id为n比特整数。
定义将键映射到n比特整数的哈希函数。

中心问题
定义为对等方分配键的规则。

对键key,为id最邻近hash(key)的对等方分配该键值对。
最邻近:键的最邻近后继

插入键值对:确定最邻近该键hash的对等方,而后向该对等方发送查询报文。
如何确定最邻近该键hash的对等方?恰当组织数据库结构

DHT结构

将DHT组织为连通图
连通度过高,每个对等方需维护的邻居数过多
连通度过低,DHT为解析一个查询而需转发的报文次数过多

环形DHT
将对等方组织为环,每个对等方仅与其直接后继和直接前驱联系。

对等方收到一个查询报文时,判断是否应有自己处理该报文,若不是,则将报文转发给后继邻居

捷径DHT
以环形DHT为基础,为每个对等方维护适量的捷径对等方。

对等方收到一个查询报文时,判断是否应有自己处理该报文,若不是,则将报文转发给最邻近该键hash的邻居

研究表明,DHT可被设计为每个对等方的邻居数和每个请求的报文转发次数都在O(logN),N为对等方总数

对等方扰动

P2P体系中,对等方可不加警示地到来或离去。

为处理对等方扰动,每个对等方应存储冗余的邻居信息。如环形DHT中每个对等方可以同时存储第一后继和第二后继。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值