计算机网络开荒2-应用层

文章介绍了网络应用的三种主要体系结构——客户机/服务器(C/S)、点对点(P2P)和混合结构,详细阐述了HTTP协议的工作机制,包括连接类型、消息格式和Cookie技术。同时,讨论了Web缓存技术的重要性以及P2P网络中的BitTorrent协议和不同类型的索引方法。
摘要由CSDN通过智能技术生成

一、网络应用体系结构

2.1 客户机/服务器结构(Client-Server,C/S)

在这里插入图片描述
服务器

  • 7*24提供服务
  • 永久性访问地址/域名
  • 利用大量的服务器实现可扩展性

客户机

  • 与服务器通信,使用服务器提供的服务
  • 间隙性接入网络
  • 可能使用动态IP地址
  • 不会与其他客户机直接通信

在这里插入图片描述

2.2 点对点结构(Peer-to-peer,P2P)

  • 没有永久的在线服务器

  • 任意端系统/节点之间可以直接通信

  • 节点间歇性接入网络

  • 结点可能改变IP

  • 优点:高度可伸缩

  • 缺点:难以管理
    在这里插入图片描述

2.3 混合结构(Hybrid)

将p2p 和 C/S 结构混合在一起的结构
利用两者的优点、规避两者的缺点

Napster

  • 文件传输使用P2P结构
  • 文件搜索使用C/S结构—集中式
    • 每个节点想中央登记自己的内容
    • 每个节点向中央查询请求,查找感兴趣的内容
      在这里插入图片描述

二、网路应用的进程通信

进程:主机上运行的程序

2.1 套接字Socket

进程使用Socket发送接受消息
在这里插入图片描述

  • 传输基础设施向进程提供API

    • 传输协议的选择
    • 参数的设置
  • 不同主机上的进程通信,每个进程必须拥有标识符

  • 标记寻址主机----IP地址

  • 端口号 port number

  • 每个需要通信的进程都需要分配一个端口号

    • HTTP Server:80
    • Mail Server: 25
      进程的标识符
    • IP + 端口
      网络应用都应该遵循应用层协议
      公开的协议
    • 有RFC(Request For Comments)定义 TCP/IP的RFC
    • 允许互操作
    • HTTP、SMTP RFC的集合

2.2 应用层协议的内容

  • 消息的类型(type)
    • 请求消息
    • 响应消息
  • 消息的语法(syntax)格式
    • 哪些字段
    • 字段如何描述
  • 字段的语义semantics
    • 字段中信息含义
  • 规则rules

三、网络应用的需求与传输层服务

  • 数据丢失data lose / 可靠性 reliability
  • 时间timing 延迟delay
  • 带宽bandwidth

在这里插入图片描述

四、Web

World Wide Web

  • 网页
  • 网页互相链接

网页web page包含多个对象object

  • 对象:HTML、JPEG、视频、动态脚本
  • 基本HTML:包含对其他对象引用的链接

对象的寻址(addressing)

  • URL(Uniform Resource Locator):统一资源定位器 RFC1738
  • Schema://host:port/path

4.1 HTTP

超文本传输协议 HyperText Transfer Protocol

在这里插入图片描述

C/S结构

  • 客户–Browser:请求、接受、展示Web对象
  • 服务器–Web Server:响应客户的请求,发送对象

HTTP版本:

  • 1.0 RFC1945

  • 1.1 RFC2068

  • 使用TCP传输服务

    • Server 80 等待客户机请求
    • 浏览器发起到Server的TCP连接(创建Socket)
    • Server 接受来自浏览器的TCP连接
    • 浏览器和服务器 交换HTTP消息
    • 关闭TCP
  • 无状态(stateless)

    • 服务器不维护任何有关客户端过去所发请求的消息

4.1.1 HTTP连接类型

4.1.1.1 非持久性连接 Nonpersistent HTTP

每个TCP连接最多允许传输一个对象
HTTP 1.0中使用非持久性连接

在这里插入图片描述
在这里插入图片描述
RTT(Round Trip Time)

非持久性连接需要的时间:
在这里插入图片描述

非持久性连接的问题:

  • 每个对象都需要2个Rtt
  • OS需要对每个TCP连接开销资源
  • 浏览器会并行打开多个TCP连接,给服务器造成影响
4.1.1.2 持久性连接 Persistent HTTP

每个TCP连接允许传输多个对象
HTTP 1.1默认使用

  • 发送相应后,服务器保持TCP连接的打开
  • 后续的HTTP消息可以通过这个连接发送

无流水pipelining的持久性连接

  • 客户端收到前一个相应后才发送新的请求
  • 每个对象需要1个RTT(开头创建对象还需要1个RTT)

有流水的持久性连接

  • HTTP1.1默认选项
  • 不用等待前一个对象收到就可以直接发送下一个请求
  • 理论收到所有引用对象只需要1个RTT
    在这里插入图片描述

4.1.2 HTTP消息格式

4.1.2.1 请求消息

请求消息 request
响应消息 response

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

上传数据的方法

  • POST方法

    • 网页需要填写的表格form
    • 在请求消息的消息体entity body中上传客户端的输入
  • URL方法

    • 输入消息通过requset行的URL字段上传
      www.somesite.com/animalsearch?monkeys&banana

方法的类型

  • HTTP1.0
    • GET
    • POST
    • HEAD:请Server不要将所请求的对象放入响应消息中
  • HTTP 1.1
    • GET POST HEAD
    • PUT:将消息体中的文件上传到URL字段所指定的路径
    • DELETE:删除URL字段所指定的文件
4.1.2.2 响应消息

在这里插入图片描述
状态行的代码

  • 200 OK
  • 301 Moved Permenently
  • 400 Bad Request
  • 404 Not Found
  • 505 HTTP Version Not Supported

在这里插入图片描述

4.2 Cookie

HTTP是无状态的
如何掌握历史的链接行为
eg:登录 购物车

Cookie:网站为了辨别用户身份、进行Session跟踪二存储在用户本地终端上的数据(通常经过加密)

Cookie组件

  • HTTP响应消息的cookie头部行
  • HTTP请求消息的cookie头部行
  • 保存在客户端主机上的cookie文件、浏览器管理
  • Web服务器端的后台数据
    在这里插入图片描述

Cookie的作用:

  • 身份认证
  • 购物车
  • 推荐
  • Web Email

4.3 Web缓存技术

在不访问Server的情况下,满足HTTP请求

  • 缩短响应时间
  • 减少机构组织流量
  • 在大范围内Internet实现有效的内容分发

在这里插入图片描述
正向代理Proxy:
反向代理:
透明代理:透明代理隐藏在网络内部,对用户和服务器透明,不需要特殊配置便可以使用代理服务。透明代理通常被用于流量控制、内容过滤等场景。例如,GFW就可以通过透明代理屏蔽某些IP地址或者URL

在这里插入图片描述

五、P2P

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

  • 没有服务器
  • 任意节点直接可以通信
  • 节点阶段性接入Internet
  • 节点可能更换IP

5.1 BitTorrent

在这里插入图片描述

虽然BitTorrent具有高效、快速、安全的有点,但是因为一些缺点被很多网站禁止:

  • 版权侵犯:传播盗版影视
  • 安全问题:去中心化特性容易被黑客利用,篡改Torrent问题件恶意植入病毒
  • 传输质量:不能保证文件传输质量和完整性,文件下载一部分无法完成

5.2 索引

P2P系统的索引:信息到节点位置(IP+port)的映射
文件共享(电驴)

  • 利用索引动态跟踪节点锁共享的文件的位置
  • 节点需要告诉索引自己有哪些文件
  • 节点搜索索引,从而能够获知哪些文件

即时消息(QQ)

  • 索引负责讲用户映射到位置
  • 当用户开启IM应用,需要知道索引它的位置
  • 节点检索索引,确定用户的IP

5.2.1 集中式索引

在这里插入图片描述

  • 节点加入时:通知中央服务器IP 内容

集中式索引缺点:

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

5.2.2 洪泛式查询 Query flooding

  • 完全分布式架构
  • 每个节点只对自己共享的文件进行索引
  • 节点X & Y 若有TCP连接,那么构成边(虚拟链路)
  • 所有活动节点构成网络
  • 节点一般邻居< 10个
  • 查询命中的话,反向路径发回查询节点

Gnutella采用这种

在这里插入图片描述

5.2.3 层次式覆盖网络

集中式 和 洪泛式 结合
在这里插入图片描述
分为 超级节点 普通节点

  • 节点和超级节点之间维持TCP连接
  • 超级节点之间维持TCP连接
  • 超级节点跟踪子节点的内容
  • 索引分布在每个超级节点上
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oifengo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值