第二章:应用层

应用层内容架构

图源:https://blog.csdn.net/qq_39326472/article/details/88089747

应用层协议原理

网络核心设备并不在应用层上起作用,而仅在较低层起作用

设计核心思想:将应用软件限制在端系统

网络应用程序体系结构

客户-服务器体系结构

在该体系结构中,有一个总是打开的主机,即服务器,它接收和服务来自其他许多被称为客户的主机请求;值得注意的是,在该体系结构中,客户之间是不直接通信的;该服务器具有固定的、周知的地址(IP地址)

P2P体系结构

应用程序在间断连接的主机对之间使用直接通信,这些主机被称为对等方

该体系结构下,对位于数据中心的专用服务器有着最小(或者没有)依赖。

P2P体系结构最引人入胜的特性之一就是它们的自扩展性(self-scalability)(即对等方通过为其他对等方传送文件而为原始拥有者分担压力)

进程通信

运行在不同端系统上的进程之间的通信,运行在不同端系统上的进程对之间通过计算机网络来实现通信

客户与服务器进程

首先发起通信的进程被标记为客户,在会话开始时等待联系的进程被称为服务器。

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

进程通过一个称为套接字(socket)的软件接口向网络发送和接收报文。(套接字是同一台主机内应用层与传输层之间的接口)

应用程序开发者可以控制套接字在应用层的一切内容,但是对于运输层的相关部分,几乎没有控制权(能控制传输层协议的选择,以及设定最大缓存和最大报文长度等几个传输层参数)

进程寻址(标识接收方的地址)

主机地址(IP地址) + 目的主机接收进程的标识符(端口号

端口个数

端口数由两个字节组成,一个字节8个比特位,因此有2的16次方(65536)个端口

可供应用程序使用的运输服务

传输层协议的特点大致可以从以下这四个方面考量:可靠数据传输、吞吐量、定时和安全性

从可靠数据传输、吞吐量、定时、安全性等四个角度来看传输层提供的服务,传输层无法对吞吐量和定时做出保证。但是,今天的因特网能够为时间敏感的应用提供满意的服务,尽管它并不提供任何定时或者带宽保证

因特网提供的传输层服务

TCP

  • 面向连接的服务
  • 可靠的数据传输
  • 提供了拥塞控制机制(不一定会给通行双方带来好处,但是会给网络带来整体好处)

UDP

UDP是无连接的也就是说通信之前没有握手;UDP不提供数据的可靠传输;UDP也没有拥塞控制机制。有些应用场景下,UDP协议将带来更多的便利和效率

WEB和HTTP

HTTP概述

HTTP(HyperText Transfer Protocol)是WEB的应用层协议,它是Web的核心;HTTP有两部分实现,一个客户端程序一个服务器程序;HTTP定义了客户和服务器进行报文交换的方法;

HTTP服务器不存储任何关于该客户的状态信息,因此HTTP被称为无状态协议

持续连接和非持续连接

持续连接即多个对象,一次连接,HTTP既可使用持续连接也可以使用非持续连接。尽管HTTP在静默情况下使用持续连接

非持续连接可以理解为多个对象,多个连接(比如一个HTML中有10个图片,即需对10个图片均进行一次TCP连接)

HTTP报文格式:请求报文和响应报文

请求报文

报文第一行:请求行(包括:方法字段、URL字段、HTTP版本),其中方法字段可为:GET、POST、PUT、DELETE、HEAD等

后继各行:首部行(包含是否在发送完响应报文后关闭TCP连接的Connection;请求的主机地址(该头部信息被Web高速缓存所要求);浏览器版本;可接受的语言等头部信息;)

空行(用于分隔)

实体行:该实体体可以在POST方法里传递Form表单内容或者传递其它一些二进制流数据等

响应报文

状态行:(HTTP版本、状态码、状态信息)

首部行:(发送日期、服务器类型、上一次修改请求资源的时间、内容的类型)

实体体实体包含请求对象本身(HTML文件等)

用户与服务器的交互:Cookie

HTTP是无状态协议,但是Web站点可以使用Cookie技术对用户进行跟踪。Web站点生成一个唯一标识码,下次访问该站点时,浏览器就会查询cookie文件并抽取识别码

Cookie技术包含4个组件

  1. HTTP响应报文里增加一个关于Cookie的首部行;
  2. HTTP请求报文里增加一个关于Cookie的首部行;
  3. 用户端系统保留一个Cookie文件,由浏览器保存维护;
  4. Web站点建立Cookie和用户身份的关联;

Web缓存

Web缓存器(Web cache)也被称为代理服务器(proxy server),能够代表初始Web服务器来满足部分HTTP请求的网络实体

当代理服务器收到一个HTTP请求后,它将检查本地是否缓存过该对象,如果缓存过该对象,将检查是否过期条件GET方法,使用GET方法的时候,增加一个If-Modified-Since首部行,其对应的内容是一个时间),如果没有过期,则直接将该对象返回给浏览器;如果本地不存在或者存在已过期,则代理服务器将根据请求报文里的Host首部行以及请求行里的URL字段向初始服务器发出请求,然后将响应对象返回给浏览器并缓存在本地。

因此,Web缓存器既是服务器又是客户

使用Web缓存器的原因

  1. 大大减少对用户请求的响应时间(规避瓶颈带宽)
  2. 大大减少一个机构的接入链路到因特网的通行量(节省成本)

因特网中的电子邮件

因特网电子邮件系统有三个核心组件:用户代理邮件服务器SMTP(简单邮件传输协议,Simple Mail Transfer Protocol)

SMTP(25号端口)

传输的三个阶段:握手、传输、关闭连接

SMTP是持续连接的,同时由于继承的问题,它限制邮件报文的所有部分只能使用7比特的ASCII表示(导致一些多媒体文件在发送方需要编码,接收方则需要解码)

与HTTP对比

HTTP和SMTP都是用TCP协议;持续的HTTP和SMTP都是用持续连接;但是两者也有区别:

  • HTTP被设计为一个Pull协议而SMTP被设计为一个Push协议。即用户通过HTTP主动向服务器请求内容,而SMTP则是客户将内容推向服务器端;
  • HTTP传输的数据不一定是用ASCII字符,但是SMTP则只能使用ASCII字符;
  • HTTP将每个对象封装在自己的响应报文里,而SMTP则将所有的报文对象放到一个报文之中;

邮件访问协议

需要注意的是,SMTP是邮件服务器之间发送邮件报文的协议,并不是用户通过代理和邮件服务器之间通信的协议;用户代理使用邮件访问协议来从邮件服务器上获取邮件信息;目前常用的邮件访问协议有POP3(Post Office Protocol-Version 3)、因特网邮件访问协议IMAP,Internet Mail Access protocol)和HTTP

DNS:因特网的目录服务

DNS(Domain Name System)域名系统,用于处理主机名和IP地址的转换问题

DNS是一个由分层的DNS服务器组成的分布式数据库和一个使得主机可以查询分布式数据库的应用层协议组成

DNS运行在UDP之上,使用53号端口

DNS工作机理概述

DNS采用分布式的设计方案

因为单一的DNS服务器无法解决单点故障保证通信容量邻近所有的查询主机维护困难等问题

分布式层次的数据库

为了处理扩展性问题,DNS服务器采用层次式组织,并且分布在全世界范围内;大致来说,存在三种DNS服务器:根DNS服务器顶级域DNS服务器权威DNS服务器

分类 作用
根DNS服务器 因特网上有13个根DNS服务器
顶级域DNS服务器 负责顶级域名,如com,org,net,edu,gov以及各个国家的顶级域名的转换
权威DNS服务器 如大学、公司等公共可访问的DNS记录
本地DNS服务器 最重要的DNS服务器,当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将请求转发到DNS服务器层次结构中

域名解析过程

DNS查询有两种,一种是递归查询一种是迭代查询

实践中,查询通常满足这样的模式:从请求主机到本地DNS服务器的查询是递归的,其余查询是迭代的

因此,域名解析过程具体可以描述如下:

  1. 主机先向本地域名服务器进行递归查询
  2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询
  3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址
  4. 本地域名服务器向顶级域名服务器进行查询
  5. 顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址
  6. 本地域名服务器向权限服务器进行查询
  7. 权限服务器告诉本地域名服务器所查询的主机的IP地址
  8. 本地域名服务器最后把查询结果告诉主机

DNS缓存

当某DNS服务器接收一个DNS回答时,其将映射缓存到本地存储器中

由于缓存,除了少数DNS查询以外,根服务器被绕过了

参考

《计算机网络——自顶向下方法》

https://blog.csdn.net/qq_39326472/article/details/88089747

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2019-2021 子夜
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信