• 【计算机网络】应用层


    网络应用模型

    网络边缘的端系统中运行的程序之间通信方式通常可分为两大类:C/S方式P2P方式

    客户/服务器模型

    客户/服务器(Client/Server, C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求。

    • 工作流程:
      1. 服务器处于接收请求的状态
      2. 客户机发出服务请求,并等待接收结果
      3. 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。
    • 特点:
      • 客户是服务请求方,服务器是服务提供方
      • 网络中各计算机的地位不平等,服务器可以通过对用户权限的控制来达到管理客户机的目的,使它们不能随意存储删除数据,或进行其他受限的网络活动。

        整个网络的管理工作由少数服务器担当,故网络的管理非常集中和方便。

      • 客户机相互之间不直接通信。

        例如,在Web应用中两个浏览器并不直接通信。

      • 可扩展性不佳。受服务器硬件和网络带宽的限制,服务器支持的客户机数有限。
    • 适用性:
      常见的C/S应用包括Web、文件传输协议(FTP)、远程登录和电子邮件等。

    P2P模型

    对等连接(peer-to-peer, P2P)是指两个主机在通信时并不区分客户和服务器。任意一对计算机,直接相互通信
    其实本质上仍然使用客户/服务器方式,每个结点既作为客户访问其他节点的资源,也作为服务器提供资源给其他节点访问。

    • 优点:
      • 减轻了服务器的计算压力,消除了对某个服务器的完全依赖。
      • 多个客户机之间可以直接共享文档
      • 可扩展性好
      • 网络健壮性强
    • 缺点:
      在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度。

    • 适用性:
      常见的P2P应用包括PPlive、Bittorrent和电驴等。

    域名系统(DNS)

    域名系统(Domain Name System, DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的域名(即 Internet上某一台计算机或计算机组的名称)转换为便于及其处理的IP地址
    注意:域名与主机、IP地址、MAC地址并不一一对应。一个域名可以用多台服务器来分担负载,不同时间可以解析出不同的IP地址。多个域名也可指向同一台主机IP地址。

    • DNS系统采用客户/服务器模型,其协议运行在UDP之上(多对一)(多个主机访问一个域名),使用53号端口

    繁忙的站点被冗余分配在多台Sever上(Server farm)每台Server有不同的IP,多个IP对应同一个域名。当客户请求解析该域名时,DNS Server会返回所有IP地址的集合,但旋转排放IP地址的排列顺序。客户机按最前面的地址发送HTTP请求报文。

    层次域名空间

    因特网采用层次树状结构的命名方法。采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名(Domain Name)。

    • 域(Domain)是名字空间中一个可被管理的划分。
    • 域还可以划分为子域,这样就形成了顶级域、二级域、三级域等。
    • 每个域名都由标号序列组成,而各标号之间用点(".")隔开。

    • 注意:
      • 标号中的英文不区分大小写
      • 标号中除连字符(-)外,不能使用其他的标点符号
      • 每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符
      • 级别最低的域名写在最左边(打头阵),级别最高的域名写在最右边(最后出马)
    • www.cskaoyan.com:com是顶级域名,cskaoyan是二级域名,www是三级域名。

      本地域名服务器要DNS查询三次,用根域名服务器返回.com顶级域名服务器地址,再用顶级域名服务器返回cskaoyan二级域名服务器地址,二级域名服务器地址返回www三级域名地址,所以就直接找到了。

    域名 .com .cskaoyan www
    域名级别 顶级域名 二级域名 三级域名
    找到地址
    域名服务器指针 根域名服务器 顶级域名服务器 二级域名服务器

    一层管一层:根服务器找顶级域名,顶级服务器找二级域名,二级服务器找三级域名。

    当二级域名服务器找到三级域名www.cskaoyan.com时,就不需要三级域名服务器往下找了。

    • 本地域名服务器DNS查询次数域名等级一致。

    • 顶级域名(Top Level Domain, TLD)分类:
      • 国家顶级域名(nTLD, National Top-Level Domain):国家和某些地区的域名,如".cn"(中国),".hk"(中国香港特别行政区)。
      • 通用顶级域名(gTLD, Generic Top-level Domain):常见的有".com"(commercial公司)、".net"(网络服务机构)、".org"(非营利性组织)、".gov"(美国政府部门)等。
      • 基础结构域名:这种顶级域名只有一个,即arpa,用于反向域名解析,因此又称反向域名

    域名服务器

    • 域名到IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的)范围称为区。
    • 分类:
      • 根域名服务器:(知道所有顶级域名地址)最高层次的域名服务器,知道所有顶级域名服务器的IP地址。

        不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。

      • 顶级域名服务器:(自身是顶级域名,知道所有在它之下的二级域名的地址)知道所有授权域名服务器的IP地址。
      • 授权域名服务器:(自身是多级域名,知道所有在它之下的更低一级的域名的地址)知道所有自己管辖的区的主机的地址。每一个主机都必须在授权域名服务器处登记,它总是能够将其管辖的主机名转换为该主机的IP地址。
      • 本地域名服务器:(储存着常用的域名映射)也称为默认域名服务器。

        根顶授本:固定首部。

    域名解析

    使用UDP(多对一)(多个主机访问一个域名),所以不能TCP
    域名解析是指把域名映射为IP地址正向解析)或把IP地址映射成域名反向解析)的过程。

    1. 解析器通过网络向本地域名服务器53号端口发送一个以UDP数据报封装的DNS请求报文,询问与该域名对应的IP地址;
    2. 本地域名服务器查找自己的域名数据库(映射文件),将域名对应的IP地址组成一个以UDP数据报封装的DNS响应报文,返回给解析器;若在本地域名数据库中查不到,则此域名服务器就暂时成为全球DNS中的另一个客户,并向其它.域名服务器发出查询请求,直至找到能回答请求的域名服务器为止,并将解析结果响应给本地域名服务器;本地域名服务器再将解析结果返回给客户端解析器;
    3. 客户端解析器最终收到响应报文后,再将解析得到的IP地址返回给应用程序。
    • 递归与迭代相结合的查询:
      • 主机向本地域名服务器使用递归查询
      • 其他使用迭代查询

    • 递归查询:

    • 高速缓存:
      • 一旦(任何)域名服务器得知了某个映射,就将其缓存。
      • 在一定时间间隔后缓存的条目将会过期(自动消除)

    文件传输协议(FTP)

    • FTP采用客户/服务器的工作方式,它使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个用户进程提供服务。(端口21/20

      注意:服务器端,控制连接使用TCP的21号端口,数据连接使用TCP的20号端口;
      而在客户端,控制连接和数据连接的TCP端口号都是由客户端系统自动分配的。(客户机端口随意,服务器端口固定

    注意:这些说明的协议端口号,都是相应协议的服务器端所使用的端口号,而客户端使用系统自动分配的端口号向这些服务的熟知端口发起连接。

    工作原理

    文件传输协议(File Transfer Protocol, FTP)是因特网上使用得最广泛的文件传输协议。

    • FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
    • 它屏蔽了计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件。
    • 功能:
      • 提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。
      • 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力。
      • 以匿名FTP的方式提供公用文件共享的能力。
    • 进程:
      • 一个主进程:负责接收新的请求。
      • 若干个从属进程:负责处理单个请求。
    • 工作步骤:
      • 打开熟知端口21(控制端口),使客户进程能够连接上。
      • 等待客户进程发送连接请求。
      • 启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
      • 回到等待状态,继续接收其他客户进程的请求。

        FTP服务器必须再整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置。

    连接

    FTP在工作时使用两个并行的TCP连接:一个是控制连接(端口号21),一个是数据连接(端口号20)。使用两个不同的端口号可使协议更加简单、更容易实现。

    • 控制连接:(内含:用户名、密码)
      • 服务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接
      • 用来传输控制信息(如 连接请求、传送请求等),并且控制信息都以7位ASCII格式发送
      • 在整个会话期间一直保持打开状态。
    • 数据连接:(内含:文件)
      • 数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后“数据传送连接”结束运行

      因为FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外(Out-of-band)传送(即 控制信息不与数据在同一条连接上传输)的。

    • 过程:
      1. 服务器监听21号端口
      2. 控制连接三次握手
      3. 客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。

        注意:在传输文件时还可以使用控制连接(如 客户在传输中途发一个终止传输的命令),因此控制连接在整个会话期间一直保持打开状态。

      4. 服务器端的控制进程接收到FTP客户发来的文件传输请求
      5. 创建“数据传送进程”和“数据连接”
      6. 数据连接用来连接客户端和服务器端的数据传送进程
      7. 数据传送进程实际完成文件的传送
      8. 在传送完毕后“数据传送连接”结束运行。

    电子邮件

    电子邮件系统的组成结构

    • 用户代理(User Agent, UA):用户与电子邮件系统的接口。
    • 邮件服务器:组成电子邮件系统的核心。采用C/S方式工作,当能够同时充当客户和服务器。
    • 邮件发送协议和读取协议:
      • 邮件发送协议:用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,通常使用SMTP

        SMTP采用的是“推”(Push)的通信方式,即 在用户代理向邮件服务器发送邮件及在邮件服务器之间发送邮件时,SMTP客户端主动将邮件“推”到SMTP服务器端。

      • 邮件读取协议:用于用户代理从邮件服务器读取邮件,如 POP3

        POP3采用的是“拉”(Pull)的通信方式,即 用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮件中的邮件。

    多用途网络邮件扩充(MIME)

    由于SMTP只能传送一定长度的ASCII码,许多其他非英语国家的文字(如中文)就无法传送,且无法传送可执行文件及其他二进制对象,因此提出了多用途网络邮件扩充(Multipurpose Internet Mail Extensions, MIME)。(相当于一个翻译官,非ASCII码↔ASCII码

    简单邮件传输协议(SMTP)

    简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息。

    • SMTP采用客户/服务器方式,使用TCP连接,端口号为25。(“推”

      负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。

    • 邮件报文必须使用7-bit ASCII表示。

    • 过程:
      • 连接建立
      • 邮件传送
      • 连接释放

    邮局协议(POP3)

    邮局协议(Post Office Protocol, POP)是一个非常简单但功能有限的邮件读取协议,现在使用的是它的第3个版本POP3。

    • POP也采用客户/服务器的工作方式,使用TCP连接,端口号为110
    • 工作方式:
      • 下载并保留
      • 下载并删除
    • 用户使用POP3协议无法在邮件服务器上建立远程文件夹,对自己的邮件进行重组织,只能将邮件下载到本地计算机进行重组织。

      注意:IMAP、POP3协议在传输层是使用明文来传输密码的,并不对密码进行加密。

    网际报文存取协议(IMAP)

    网际报文存取协议(Internet Mail Access Protocol, IMAP)

    • 比POP3复杂得多
    • 允许用户在服务器上建立远程文件目录,组织自己的邮件
    • 允许用户代理读取邮件的一部分

    基于万维网的电子邮件

    • 电子邮件从A发送到网易邮件服务器使用HTTP协议。
    • 两个不同邮件服务器之间的传送使用SMTP。
    • 邮件从新浪邮件服务器传达到B是使用HTTP协议。
    • 特点:
      • 用户浏览器邮件服务器之间的邮件发送或接收使用HTTP
      • 仅在不同邮件服务器之间传送邮件时才使用SMTP
    • 优点:
      只要能够找到上网的计算机,打开任何一种浏览器就可以非常方便地收发电子邮件

    万维网(WWW)

    万维网(World Wide Web, WWW)是一个资料空间,在这个空间中:一个有用的事物称为一个“资源”,并由一个全域“统一资源定位符”(URL)标识,这些资源通过超文本传输协议(HTTP)传送给使用者,而后者通过单击链接来获取资源。

    • 万维网客户/服务器方式工作。

      浏览器是在用户计算机上的万维网客户程序,而万维网文档所主流的计算机则运行服务器程序,这台计算机称为万维网服务器。

    • 万维网的内核部分:
      • 统一资源定位符(URL):负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL。(相当于一个文件名在网络范围的扩展)
      • 超文本传输协议(HTTP):一个应用层协议,它使用TCP连接进行可靠的传输,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。
      • 超文本标记语言(HTML):一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述。
    • URL:统一资源定位符=网址
      • 一般形式:<协议>://<主机>:<端口>/<路径>

        常见的协议有http、ftp等;主机是存放资源的主机在因特网中的域名,也可以是IP地址;端口路径有时可以省略。

      • 在URL中不区分大小写。

    超文本传输协议(HTTP)

    HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

    • 从层次上看,HTTP是面向事务的(Transaction-oriented)应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件的重要基础。

    • 工作过程:
      • 每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80(默认)
      • 当监听到连接请求后,便与浏览器建立连接。
      • TCP连接建立后,浏览器就向服务器发送请求获取某个Web页面的HTTP请求。
      • 服务器收到HTTP请求后,将构建所请求的Web页的必需信息,并通过HTTP响应返回给浏览器。
      • 浏览器再将信息进行解释,然后将Web页显示给用户。
      • 最后,TCP连接释放。
    • 例子
      用户点击鼠标后所发生的事件:
      1. 浏览器分析超链指向页面的URL。
      2. 浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址。
      3. 域名系统DNS解析出清华大学服务器IP地址。
      4. 浏览器与服务器建立TCP连接
      5. 浏览器发出取文件命令:GET /chn/ yxsz/ index. htm。
      6. 服务器给出响应,把文件index. htm发给浏览器
      7. TCP连接释放。
      8. 浏览器显示“清华大学院系设置”文件index.htm中的所有文本。
    • HTTP的主要特点:
      • HTTP是无状态的。也就是说,同一个用户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。

        因为服务器并不记得这个曾经访问过的客户,也不记得为该客户曾经服务过多少次。(服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器)

      • HTTP协议本身是无连接的,虽然它使用了面向连接的TCP向上提供的服务,但通信的双方在交换HTTP报文之前是不需要建立HTTP连接的(只用建立TCP连接)。

    注意:是用1个RTT启动TCP连接,虽然是三次握手,但是第三次的时候,携带了数据,所以只是用1个RTT启动TCP连接,另1个RTT发送了请求报文(第三次握手),并接收了响应报文。

    • 连接:

      HTML文件是Web页面的基础,它可以包括各种各样的对象,是一个容器对象。如果一个HTML文件包含5个图片,就一共有6个对象。

      • HTTP协议使用非持久连接(HTTP/1.0):建立TCP连接后,一个HTTP请求过去,一个HTTP响应过来,然后就断开TCP连接。
        • ((1RTT(建立TCP)+1RTT(请求和接收))*(1(一个基本网页)+n(n张图片))=2(n+1)RTT

          注意:这里建立TCP只需要1RTT,因为第三次握手的报文段捎带了客户对HTML文件的请求,所以请求并接收耗时1RTT

      • HTTP协议使用持久连接(HTTP/1.1):万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。
        • 非流水线方式:
          1RTT(建立TCP)+1RTT(请求并接收一个基本网页)+nRTT(请求并接收n个基本网页上的图片)=(n+2)RTT

          注意:这里建立TCP只需要1RTT,因为第三次握手的报文段捎带了客户对HTML文件的请求,所以请求并接收耗时1RTT
          客户在收到前一个响应后才能发出下一个请求。
          这比非持续连接的两倍RTT的开销节省了建立TCP连接所需的一个RTT时间。但服务器在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。

        • 流水线方式:
          1RTT(建立TCP)+1RTT(请求并接收一个基本网页)+1RTT(请求并接收n个基本网页上的图片)=3RTT

          注意:这里建立TCP只需要1RTT,因为第三次握手的报文段捎带了客户对HTML文件的请求,所以请求并接收耗时1RTT
          客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。
          一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档效率。

    • HTTP的报文结构:

      HTTP是面向文本的(Text-Oriented),因此报文中的每个字符都是一些ASCII码串,并且每个字段的长度都是不固定的

    • 分类:
      • 请求报文:从客户向服务器发送的请求报文。
        • GET:请求读取由URL标识的信息。读取URL标示的信息。
        • HEAD:请求读取由URL标识的信息的首部。类似GET,不返回请求对象。
        • POST:给服务器添加信息(如注释)。提交表单。
        • CONNECT:用于代理服务器。
      • 响应报文:从服务器到客户的回答。

    本文图片来源:https://blog.csdn.net/w372426096/article/details/78484149

  • 相关阅读:
    面试基础02
    CustomerView
    Java封装性
    Java中参数传递机制:值传递
    Java重载 (Overlaod)与几个面试题
    数据结构、算法概述和简单的JVM内存解析
    异常捕捉

    面向接口的编程方式
    看程序的方法
  • 原文地址:https://www.cnblogs.com/blknemo/p/11561835.html
Copyright © 2020-2023  润新知