网络应用层

2021.11.22
网络应用层

网络应用的体系结构

客户机/服务(C/S)

在这里插入图片描述

服务器

长时间提供服务
永久性访问地址/域名,不改变地址(如百度等网站,客户需要经常访问,因此不能随意改变)
利用大量服务器实现

客户机

与服务器通信
间歇性接入网络
可能动态使用ip
不会与其他客户机直接通信
在这里插入图片描述

点对点结构(P2P/peer to peer)

  • 互相之间连接
  • 没有一个永久的服务器
  • 节点可能改变IP地址
  • 间歇性接入网络

常用于文件共享

混合结构(Hybrid)

常见的有讲文件传输用p2p实现
文件搜索用cs结构
在这里插入图片描述

网络应用进程通信

同一主机中的进程通信由操作系统来决定
不同主机间的进程的通信通过消息交换
客户机进程:发起通信的进程
服务器进程:等待通信的进程

套接字

一个抽象的概念
在这里插入图片描述
进程通过套接字使用其下的协议(如TCP)进行通信
类似于寄信

  • 发送方将消息放至门外邮箱
  • 依赖门外的传输设施将信件传到接收方所在的位置
  • 接收方获取消息

传输设备向进程提供API

寻址

如何在不同主机中找到需要交换信息的进程,需要引入标识符
寻找主机:IP地址
然而一台主机上有不同的进程,IP地址只能定位到相应的主机,定位到需要的进程还需要使用端口号
主机上每一个进程都需要分配一个端口号,进程的标识符:IP地址+端口号

应用层协议

网络应用需要遵循应用层协议
公开协议都包含了RFC(Request for Comments)

协议的内容

消息的类型

  • 请求消息
  • 响应消息

在这里插入图片描述

Internet提供的服务

网络应用的需求

  1. 数据丢失/可靠性
    网络应用对于可靠性的要求不一样
    网络电话等可以运行丢失一定的数据
    文件传输则要求百分之百的准确
  2. 延迟
  3. 带宽
    需要达到一定的带宽才能实现:网络视频
    可以使用任意带宽:email/文件传输

Internet能提供的服务

TCP服务

  • 面向连接,需要在客户机/服务器之间建立连接
  • 可靠的传输
  • 流量控制:发送方发送数据的速度不会超过接收方处理的速度
  • 拥塞控制:当网络负载过重时能够限制发送方发送的速度
  • 不提供时间/延迟保障
  • 不提供最小带宽保障

UDP服务

  • 无连接
  • 不可靠的数据传输
  • 不提供可靠性保障/流量控制/拥塞控制/延迟保障/带宽保障
  • UDP的优势在于数据传输速率快

WEB应用

World Wide Web包含
网页
网页互相链接

网页

一个网页包含了多个对象(HTML文件,图片,视频等)
基本的HTML文件包含了对其他对象引用的链接

对象的寻址

通过URL(Uniform Resource Locator):统一资源定位器
URL的格式:Scheme://host:port/path
协议://主机(域名或IP地址):端口号/路径

HTTP协议

HyperText Transfer Protocol:超文本传输协议
HTTP协议采用CS结构
客户–Browser:请求、接收、展示Web对象
服务器–Web Server:响应客户请求,发送对象

传输服务

HTTP协议在传输层使用的协议是TCP传输服务

  • 服务器在80端口等待客户的请求
  • 浏览器发送到服务器的TCP连接(创建Socket套接字)
  • 服务器接受来自浏览器的TCP连接
  • 浏览器(HTTP客户端)与Web服务器(HTTP服务端)交换HTTP消息
  • 关闭连接

无状态(stateless)

服务器不维护任何有关客户端发送的请求信息
无状态的优势在于不需要维护状态,并且在服务器失效,会产生和原始状态不一致的情况

HTTP连接

非持久性连接

在这里插入图片描述
在这里插入图片描述
这种连接方式每次接收一个对象都需要重新创建TCP连接,需要的时间会很长
每一个对象都需要2*RTT+发送文件需要的时间
RTT:Round Trip Time,从客户端发送一个数据包(小,发送时间忽略)到服务器并返回需要的时间
响应时间:

  • 发送、建立TCP连接:1个RTT
  • 发送HTTP请求到接受HTTP响应
  • 发送文件需要的时间
    在这里插入图片描述
    非持久性HTTP每个对象需要两个RTT,时间过长
    操作系统需要为每个TCP开销资源

持久性HTTP

发送响应打开后,保持这个TCP连接
后续的HTTP消息可以通过这个连接进行发送

无流水的持久性连接

客户端只有收到前一个响应后才发送新的请求,省略了每次需要建立TCP连接的时间,只需要一个RTT

带有流水机制

客户端只要遇到一个引用对象就尽快发送请求
理想情况下所有引用只需要一个RTT

HTTP请求消息

GET:请求方法
Host:主机
User-agent:浏览器代理
Connection:连接是否保持,发送完成后可以关闭(close)
Accept-language:可接受语言
在这里插入图片描述

通用格式

在这里插入图片描述
Entity Body中携带数据,请求消息携带的数据包括用户名密码等

上传数据的方法

POST方法
网页中填写form表格,在消息体中上传客户端的输入
URL方法
使用GET方法,在URL中输入需要上传的信息
在这里插入图片描述

请求消息的常用方法

在这里插入图片描述

HTTP响应消息

HTTP/1.1 :HTTP版本;状态响应码:200 OK 请求成功
Date:服务器生成响应的时间
Last-Modified:上一次修改时间
在这里插入图片描述
常见的状态响应码:
200 OK
301 Moved Permanently
400 Bad Request
404 Not Found
505 HTTP Version Not Supported

2021.11.26

Cookie技术

HTTP协议是无状态的,但很多应用是需要服务器掌握客户端的状态,例如网上购物的购物车
Cookie技术是为了辨别用户身份,进行session追踪而储存在用户本地终端上的数据

Cookie的组件

HTTP响应消息的头部行包含Cookie
HTTP请求消息的头部行包含Cookie
保存在客户端主机上的cookie文件,由浏览器管理
服务器端后台数据库也保存有cookie文件

Cookie原理

当客户端首次访问服务器时,服务器为用户创建一个ID并将客户信息放到数据库中,在响应消息的头部行中加入ID值和cookie信息,浏览器收到后再自己的文件上保存上该网站的cookie值
在此之后再访问该服务器时可以针对该用户返回特定的信息
在这里插入图片描述

Cookie的作用

身份认证
购物车
推荐

Cookie含有一定的隐私问题

Web缓存/代理服务器技术

Web缓存可以在不访问服务器的前提下满足客户端的HTTP请求,通过直接访问代理服务器获取

优势

缩短客户请求的响应时间,直接通过访问代理服务器
减少机构/组织的流量
在大范围内实现有效的内容分发

实现

客户端设定浏览器通过缓存进行web访问
浏览器向代理服务器发送所有的HTTP请求,如果请求对象在缓存中,则代理服务器再向原始服务器发送HTTP请求,然后返回给客户端并在代理服务器上保存该对象
缓存既充当客户端,也充当服务端
在这里插入图片描述

条件性GET

缓存的一个问题在于服务器端可能更新自己的数据,而代理服务器中没有更新该数据,因此需要每次向服务器端发起确认
在缓存的HTTP请求中声明所持有的版本的日期,然后在服务器中检查是否是该日期的版本
如果服务器发现缓存中的版本是最新的,则响应消息中不包含对象,反之则需要新发送对象
在这里插入图片描述

Email应用

邮件服务器(Mail Server)

邮件服务器之间通过SMTP协议传递消息
邮件服务器会存储用户要发送的消息和发送给该用户的信息
由于用户不会一直接入网络中,而服务器会始终处于网络中,因此采用服务器可以不需要双方都在线
在这里插入图片描述

SMTP协议

使用TCP进行email消息可靠传输
采用端口:25
传输过程的三个阶段

  • 握手
  • 消息的传输
  • 关闭

采用命令/响应模式
–命令:ASCII文本
–响应:状态代码和语句

SMTP示例

在这里插入图片描述

与HTTP对比

HTTP:拉式PULL(每个用户从服务器中拉取信息),每个对象封装在独立的响应消息中
SMTP:推式PUSH(用户将邮件推送到服务器中),多个对象在由多个部分构成的消息中发送

邮件报文的格式

邮件利用SMTP协议进行传输,在邮件报文中还包含了
–头部行:To, From, Subject
–消息体:消息本身,只能是ASCII字符
在这里插入图片描述

多媒体扩展

邮件内容通过上述方式传输,则只能包含ASCII字符,但邮件会有多媒体的需求,因此需要添加多媒体扩展

MIME

通过在邮件头部增加额外的行以声明MIME的内容,即包含多媒体,以及如何编码多媒体
在这里插入图片描述

邮件访问协议

邮件访问协议是用来从服务器端获取邮件的

POP

Post Office Protocol

  1. 认证过程
    客户端命令:用户名,密码
    服务器端响应:+OK,-ERR
  2. 事务阶段
    List:列出消息数量
    Retr:用编号获取消息
    Dele:删除消息
    Quit:退出
下载模式
  1. 下载并删除模式
  2. 下载并保存模式
    会对服务器造成压力

POP3是无状态的协议

IMAP

Internet Mail Access Protocol

  1. 所有消息都保存在服务器
  2. 允许用户创建文件夹组织消息
  3. 支持跨会话(不同客户端之间保留了创建使用的文件夹,即IMAP是有状态的协议)

HTTP

基于Web进行收发邮件
收件:服务端向收件人的浏览器发送邮件
发件:电子报文从发件人浏览器发送到服务器端
而邮件服务器之间通信仍然才用的是SMTP协议

2021.11.27

DNS

Domain Name System
Internet上的主机/路由器之间以IP地址进行交流,而人访问网络通常是使用域名进行访问,IP地址和域名之间的映射就要通过DNS来实现

域名解析系统DNS的定义

多层命名服务器构成的分布式数据库
是应用层协议,用来完成名字的解析,通常是由其他应用层的协议提供的,包括HTTP、SMTP等协议,将用户提供的主机名解析为IP地址

DNS解析过程

用户在浏览器上请求URL:www.someschool.edu/index.html
浏览器从URL中抽取出主机名www.someschool.edu,并将这台主机名传输给DNS应用的客户端
DNS客户向DNS服务器发送一个包含主机名的请求
DNS客户收到一份回答报文,包含该主机名的IP
浏览器接收到该IP地址,向位于该IP地址80端口的HTTP服务器发起一个TCP请求

DNS服务

域名向IP地址的翻译
主机别名,邮件服务器别名
负载均衡:较为繁忙的站点有不同的IP地址对应于同一个域名,DNS服务器可以每次循环选择这些IP地址来确保一定的负载均衡

DNS服务实现

集中式服务的缺点:
单点故障:如果该DNS服务器崩溃,整个因特网随之瘫痪
通信容量:无法同时处理上亿台主机的请求服务
远距离:远距离的查询可能导致很长的时延
维护:服务器中保存的数据过多,并且会需要对很多的IP地址进行更新,这样的开销过大

分布式、层次数据库

在这里插入图片描述
为了解决集中式存在的问题,采取分布式数据库
具体过程为:
当用户查询www.amazon.com时

  1. 客户端查询根服务器,得到com域名服务器
  2. 查询com域名服务器,得到amazon.com服务器的地址
  3. 查询amazon.com服务器,得到www.amazon.com的IP地址,并将地址返回

各层次结构

  1. 根DNS服务器
  2. 顶级域DNS服务器
    对于每个顶级域(com,org,net,edu和gov)和国家的顶级域(uk,fr,ca等)都有TLD服务器
  3. 权威DNS服务器
    提供组织内部服务器的解析服务
    可以由组织提供维护或者由服务提供商进行维护

本地DNS服务器

本地服务器作为代理将这些请求转发到DNS服务器
每个ISP都有一台本地DNS服务器,所有用户查询时都通过这个本地服务器进行查询

DNS查询方式

  1. 迭代查询
    本地DNS服务器向根服务器查询需要的域名,根服务器返回下一层的服务器IP地址,本地服务器再根据这个地址再向下查询
  2. 递归查询
    本地服务器向根服务器查询,根服务器自己向下一层的服务器进行查询,直到查询到最终的地址,最后层层反馈到本地服务器当中

DNS缓存

当某个DNS服务器接受到一个DNS回答时,他会将映射缓存在本地存储器中,这样一来再次查询到该DNS服务器时,就可以直接给到需要的IP地址

DNS记录

DNS服务提供了资源记录Resource Record(RR)
资源记录包含了(Name,Value,Type,TTL),其中TTL表示了存活时间
Type拥有四种类型

  1. Type=A
    此时Name是主机名,Value是对应的IP地址
  2. Type=NS
    Name是个域,Value是个如何知道该域中主机IP地址的权威DNS服务器的主机名
  3. Type=CNAME
    Value是别名为Name的主机的规范主机名
  4. Type=MX
    Value是别名为Name的邮件服务器的规范主机名

DNS报文

DNS协议包含了查询(query)和回复(reply)两种,他们的消息格式相同
在这里插入图片描述

头部包含了

  • Identification:16位查询编号,回复使用相同的编号
  • flags:标识位
    查询或回复,是否期望递归,递归是否可用,是否是权威服务器的回答

域名的注册

  • 向域名管理机构提供权威服务器的名字和IP地址
  • 域名管理机构向顶层com服务器插入两条记录
    在这里插入图片描述
  • 在自己的权威域名服务器中加入需要的网址www.xxx.com的A类记录
    还需要加入MX记录以保存邮件服务器

P2P

服务器/客户机模式下,服务器发送N个文件需要串行地发送N个副本,总共需要的用时:max(NF/us, F/di)
前者表明了服务器的上传时间,后者表示下载时间
F表示一个文件的大小,us表示服务器发送速率,di表示第i个客户端的下载速度
而在P2P模式下,服务器只需要发送至少一个文件,最快的上传速率由服务器和多个用户机共同上传us+Σui
用时为:max(F/us, F/di, NF/(us+Σui))

BitTorrent

torrent(洪流):参与一个特定文件分发的所有对等方的集合
当一个对等方首次加入一个洪流时,它没有块,随后他积累了越来越多的块,当他下载时,也会为其他对等方上载多个块。
Tracker(追踪器):每个洪流具有的一个基础设施节点,当一个对等方加入洪流时,他向追踪器注册自己,并周期性地通知追踪器他仍在洪流中,追踪器也会向这个对等方发送需要的节点的洪流的一部分子集IP地址

传输的选择

  • 获取哪个文件块(最稀缺优先技术rarest first)
    在bt中,每个文件被分为多个文件块,每个用户去获取的块选择都是从最稀缺的资源当中获取,这样一来获得到的稀缺资源就会越来越多,从而也能够再向外界传输。
  • 从哪个邻居获取数据
    每个用户根据传输给自己文件的速率来决定选择,每次选择以最高速率传送的多个邻居,这样的邻居称为疏通(unchoked),每隔十秒该用户会重新选择传送给自己速率最快的邻居
  • 发送到哪个邻居
    在另一方面,每个用户每隔30秒会随机向一个新的用户发送文件,而接收方这边则同样需要回传数据,若两者都满足彼此的最高速率,那么会保持这个传输方式直到发现了新的交换伴侣。
    这样的交换机制被称为“一报还一报”(tit-for-tat)

2021.11.28

P2P索引

在P2P传输中需要利用索引来表示信息到节点位置(IP地址+端口号)的映射
在文件共享(电驴)中,索引动态记录了哪些节点拥有哪些文件,节点可以通过访问索引来获得自己能够获取的文件
在即时消息(QQ)中,索引将用户名映射到具体的位置,用户开启应用时需要通知索引他的位置,节点也会检索索引以确定用户的IP地址

集中式索引

在这里插入图片描述
以中央目录服务器记录节点信息,每个节点都向中央服务器存储
这样做的缺点和众多集中式服务器有着一样的缺

  • 单点失效问题
  • 性能瓶颈
  • 版权问题

洪泛式查询(Query Flooding)

每个节点对自己共享的文件进行索引,且仅对该文件进行索引,这样引入了一个问题:如何查询某个节点需要的文件

覆盖网络

节点之间利用TCP进行连接,连接的节点之间构成一条边,所有的这些活动节点和边构成一个覆盖网络
在这里插入图片描述
通过已有的TCP连接进行查询,节点转发查询消息,直到查询到为止,如果查询命中则利用反向路径返回
缺陷:给网络带来较大负担

层次式覆盖网络

介于两者之间,引入一个超级节点的概念,每个节点或被划分为超级节点,或被分配一个超级节点,超级节点之间采用TCP连接构成覆盖网络,小节点和超级节点之间采用集中式
在这里插入图片描述

P2P例子

Skype应用
用户之间通信本质上采用P2P模式,但索引采取层次式结构,负责维护用户名与IP之间的映射,另外还保有一个登录服务器
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值