《计算机网络自顶向下方法》第二章 应用层 阅读笔记

第二章 应用层

1. 网络应用的体系结构

  1. 客户-服务器体系(c/s:client/server)
    • 服务器:一直运行,服务于来自许多其他客户端的请求。

      • 一直运行
      • 固定IP地址和周知端口号(约定的)
    • 客户端:

      • 主动与服务器通信
      • 与互联网有间歇性的连接
      • 可能是动态的IP
      • 不直接与其他客户端通信
    • c/s模式缺点

      • 扩展性差
      • 随着用户的增加,达到一定的程度,性能断崖式下跌
      • 可靠性较差(服务器宕机)
      • 当请求量大时,需要配备大量主机的数据中心,维护麻烦。
  2. 对等体系结构(P2P)(P2P:Peer to Peer)
    • (几乎)没有一直运行的客户端
    • 任意端系统之间可以进行通信
    • 每一个节点既是服务器有事客户端
    • 参与的主机间歇性连接且可以改变IP地址
      • 缺点是难管理
    • 应用案例:迅雷等
  3. 混合体:客户 - 服务器和对等体系结构
    • Napster
      • 文件搜索:集中
        • 主机在中心服务器上注册其资源
        • 主机向中心服务器查询资源位置
      • 文件传输:
        • 任意Peer节点之间
    • 即时通信
      • 在线检测:集中
        • 当用户上线时,向中心服务器注册其IP
        • 用户与中心服务器联系,以找到其在线好友的位置
    • 两用户之间的聊天:P2P

2.进程通信

发送端生成并向网络中发送请求报文,接收端进程接收该报文并对其进行响应。

进程:在主机上运行的程序。

  • 在同一个主机内,使用进程间通信机制
  • 不同主机,通过交换报文(message)来通信

客户端进程:发起通信的进程

服务端进程:等待连接的进程

注意:P2P架构的应用也有客户端进程和服务器进程之分。

2.1 进程与计算机网络之间的接口

  • 进程向进程发送报文必须通过一个称为套接字(socket)的软件接口向网络发送/接收报文。
  • 套接字是同一台主机内应用层与传输层之间的接口。被称为应用程序和网络之间的应用程序编程接口(API)。
  • 应用程序开发者可以控制套接字在应用端的一切;对套接字的运输层端几乎没有控制权。

2.2 进程寻址

  • 进程为了接收报文,必须有一个标识(发送也需要标示)
    • 主机:唯一的32位IP地址
      • 仅靠IP地址不能否唯一标示一个进程,在一台端系统中有多个进程在运行
    • 所采用的端口号:(port unmbers)
  • 一个进程用IP + port 标示端节点

2.3 传输服务

一个运输层协议能为调用它的应用程序提供:可靠数据传输/ 吞吐量/ 定时/ 安全。

  • 可靠数据传输:确保由应用程序的一端发送的数据正确、完整的交付给应用程序的另一端。

2.4 传输层协议

  • TCP服务:TCP服务模型包括面向连接服务和可靠数据传输服务。
    • **面向连接的服务:**在应用层数据报文开始流动之前,TCP 让客户和服务器互相交换运输层控制信息。经三次握手后,TCP链接(TCP connection) 就在两个进程的套接字之间建立了。这条连接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。当应用程序结束报文发送时,必须拆除该链接。
    • 可靠数据的传送服务:通信进程能够依靠 TCP , 无差错,按适当顺序交付所有发送的数据。当应用程序的一端将字节流传进套接字时,它能依靠 TCP 将相同的字节流交付给接收方的套接字,没有字节的丢失和冗余。
    • 此外TCP协议还具有拥塞控制机制、超时重传机制。

无论 TCP 还是 UDP 都没有提供任何加密机制,都是明文传输。因此不太安全。

  • UDP服务:是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。
    • 是无连接的,因此在两个进程通信前没有握手过程。
    • 该协议提供一种不可靠数据传输服务。只管发送,不管接收。而且不能保证数据的顺序。
    • 没有拥塞控制机制。
    • UDP 存在的必要性:
      • 能够区分不同的进程
      • 无需建立连接,节约时间
      • 没有拥塞控制和流量控制,应用安装设定速度发送数据

2.5 应用层协议

应用层协议定义了运行在不同端系统上的应用程序进程间如何相处传递报文。主要有:

  • 交换的报文类型,例如请求报文和响应报文。
  • 各种报文类型的语法,如报文中的各个字段以及这些字段是如何描述的
  • 字段的语义,即这些字段中的信息的含义
  • 确定一个进程何时以及如何发送报文,对保温进行响应的规则。

3. Web和HTTP

3.1 web

  • Web 页面(也叫文档)是由对象组成的。一个对象(object)只是一个文件。
  • Web 浏览器实现了 HTTP 的客户端。
  • Web 服务器:实现了 HTTP 服务端:它用于存储 Web 对象,每个对象由 URL 寻址。

3.2 HTTP协议

Web应用层协议是超文本传输协议(HTTP)。实现要求:

  • HTTP 由两个程序实现:一个客户程序 和 一个服务器程序。
  • 客户程序和服务器程序在不同的端, 它们通过交换 HTTP 报文进行会话。
  • HTTP 定义了 这些报文的结构以及客户和服务器进行报文交换的方式
  • HTTP 定义了 Web 客户向 Web 服务器请求 Web page 的方式,以及服务器向客户传送 Web 页面的方式
  • HTTP 使用 TCP 作为它的支撑运输协议(而不是在 UDP 上运行)。
  • HTTP 客户首先发起一个与服务器的TCP链接。一旦连接建立,该浏览器和服务器进程就可以通过套接字接口来访问 TCP
  • 服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。—— 所以我们说 HTTP 是一个无状态协议

3.3HTTP连接

  • 非持续性连接

    • 最多只有一个对象在TCP连接上发送。
    • 下载多个对象需要多个TCP连接
    • 假设用户输入URL,从服务器向客户传送一个 Web 页面的步骤。
      1. 客户端发起到服务端的连接请求
      2. 服务器端等待连接,接受连接并通知客户端
      3. HTTP客户端向TCP连接的套接字发送HTTP请求报文
      4. HTTP服务端接收到请求报文,检索请求对象,并给客户端发送响应报文
      5. HTTP 服务器进程通知 TCP 断开该TCP 连接。
      6. HTTP 客户接收响应报文,TCP 连接关闭。解析报文并显示。

    往返时间RTT:一个小的分组从客户端到服务端,再回到客户端的时间。

    响应时间

    • 发起TCP连接消耗一个RTT
    • HTTP请求并等待响应HTTP请求消耗一个RTT时间
    • 总的响应时间为:2 * RTT + 文件传输时间

    非持续性连接的缺点

    1. 必须为每一个请求的对象建立和维护一个全新的连接并分配资源。
    2. 每一个对象经受两倍 RTT 交付时延。
  • 持久连接的特点

    • 服务器在发送响应之后,仍保持TCP连接。
      • 非流水方式的持久HTTP:客户端只能在收到前一个响应后才能发出新的请求。
      • 流水方式的持久HTTP:客户端遇到一个引用对象就立即产生一个请求。
    • 在相同的客户与服务器之间,后续的请求和响应报文能够通过相同的连接进行传送。
    • 它允许在相同连接中多个请求和回答交错,并增加了该连接中优化 HTTP 报文 请求和回答的机制。
  • HTTP请求报文

    • 请求报文构成如下:
      • 请求行
      • 请求头
      • 请求空行
      • 请求体
    • 响应报文构成如下:
      • 状态行
      • 响应头
      • 响应空行
      • 响应体

4. 用户与服务器交互:cookie

当一个 Web 站点常常希望能识别用户 ,为此HTTP使用cookie。cookie 允许站点对用户进行跟踪。

cookie技术有四个组件:

  1. 在 HTTP 响应报文中的一个 cookie 首部行
  2. 在 HTTP 请求报文中的一个 cookie 首部行
  3. 在用户端系统中保留有一个 cookie 文件,并由用户的浏览器进行管理。
  4. 位于 Web 站点的一个后端数据库

5. web缓存(代理服务器)

Web 缓存器(Web cache) 也叫 代理服务器(Proxy server),它是能够代表初始 Web 服务器来满足 HTTP 请求的的网络实体。**其目的是:**不访问原始服务器就可以满足用户的请求。

  • 用户可设置浏览器通过缓存访问Web
  • 浏览器将HTTP请求发送为缓存:
    • 缓存中存在就直接返回
    • 若不存在则请求原始服务器,返回将对象返回给客户端。
  • 为什么要使用Web缓存?
    • 降低客户端的请求响应时间。
    • 可大大减少内部网络与Internet接入链路上的流量。
    • 互联网采用大量缓存:可使较弱的ICP提供有效的服务。

6. DNS

域名系统DNS:提供主机名到IP地址转换的目录服务。

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

DNS提供的主要服务

  • 实现主机名到IP地址的转换
  • 主机别名到规范名字的转换
  • 负载均衡:用在用于的服务器之间进行负载分配。

DNS域名结构

  • DNS采用层次树状结构的命名方法
  • 例如根服务器、顶级域服务器、权威DNS服务器。

域名解析过程:

(1)在浏览器中输入 www.qq.com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址

映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

(2)如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,

如果有,直接返回,完成域名解析。

(3)如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的

首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含

在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

(4)如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,

则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

(5)如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否

设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收

到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。

本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收

到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本

地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,

进行查询,直至找到 www.qq.com 主机。

(6)如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器

进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本

地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器

再返回给客户机。

从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

  1. 通过修改本机host来干预域名解析,例如:

在/etc/hosts文件中添加一句话

保存文件后再ping一下www.baidu.com就会连接到192.168.188.1了

每一行为一条记录,分成两部分,第一部分是IP,第二部分是域名。

一个IP后面可以跟多个域名,可以是几十个甚至上百个

每一行只能有一个IP,也就是说一个域名不能对应多个IP

如果有多行中出现相同的域名(对应的ip不一样),会按最前面的记录来解析

192.168.188.1 www.baidu.com

DNS 查询服务器的基本流程:

  • 打开浏览器,输入一个域名。比如输入www.163.com,这时,你使用的电脑会发出一个DNS请求

    到本地DNS服务器。本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移

    动。

  • DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条

    记录,就可以直接返回结果。如果没有,本地DNS服务器还要向DNS根服务器进行查询。

    根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到域服

    务器上去继续查询,并给出域服务器的地址。

  • 本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。.com域

    服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的

    域名的解析服务器的地址。

  • 最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,

    本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别

    的用户查询时,可以直接返回结果,加快网络访问。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值