Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >计算机网络体系结构综述(上)[通俗易懂]

计算机网络体系结构综述(上)[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-09-14 08:09:51
发布于 2022-09-14 08:09:51
1.4K0
举报

大家好,又见面了,我是你们的朋友全栈君。

摘要:

  计算机网络体系结构标准的制定使得两台计算机能够像两个知心朋友那样能够互相准确理解对方的意思并做出优雅的回应。本文首先概述了计算机网络体系结构的提出动机,并结合日常生活中的邮政系统介绍了设计的理念,并给出了相关的基本概念和标准。进一步地,我们着重概述了计算机网络体系结构的分层原理及其最重要的组成部分——协议,使得读者能够对计算网路体系结构有一个全新的、系统的认识。


版权声明与致谢:

  本文原创作者:书呆子Rico   作者博客地址:http://blog.csdn.net/justloveyou_/

  本文正使用的大部分插图均来自于课件《计算机网络体系结构》,并且对于其中部分插图笔者做了进一步的修改,该课件可以在我的CSDN上下载到,其链接为《计算机网络体系结构》。在此,我们感谢这份课件的制作者及其传播者,感谢他们的无私分享。


友情提示:

  为了更好地了解计算机网络体系结构,笔者以两篇博客的篇幅来介绍这个计算机网络中最为重要的知识点,即:《计算机网络体系结构综述(上)》《计算机网络体系结构综述(下)》。在本文,我们概述了计算机网络体系结构的提出动机,并结合日常生活中的邮政系统介绍了设计的理念,并给出了相关的基本概念和标准,并着重介绍了计算机网络体系结构的分层原理及协议的内涵。在此基础上,本篇的姊妹篇《计算机网络体系结构综述(下)》详尽地介绍了两种典型的计算机网络系统结构标准:OSI七层模型与TCP/IP四层模型。


一. 为什么需要计算机网络体系结构?

  众所周知,计算机网络是个非常复杂的系统。比如,连接在网络上的两台计算机需要进行通信时,由于计算机网络的 复杂性 异质性,需要考虑很多复杂的因素,比如:

  (1). 这两台计算机之间必须有一条传送数据的通路;   (2). 告诉网络如何识别接收数据的计算机;   (3). 发起通信的计算机必须保证要传送的数据能在这条通路上正确发送和接收;   (4). 对出现的各种差错和意外事故,如数据传送错误、网络中某个节点交换机出现故障等问题,应该有可靠完善的措施保证对方计算机最终能正确收到数据。

  计算机网络体系结构标准的制定正是为了解决这些问题从而让两台计算机(网络设备)能够像两个知心朋友那样能够互相准确理解对方的意思并做出优雅的回应。也就是说,要想完成这种网络通信就必须保证相互通信的这两个计算机系统达成 高度默契。事实上,在网络通信领域,两台计算机(网络设备)之间的通信并不像人与人之间的交流那样自然天然,这种 计算机间高度默契的交流(通信) 背后需要十分复杂、完备的网络体系结构作为支撑。那么,用什么方法才能合理地组织网络的结构,以保证其具有结构清晰、设计与实现简化、便于更新和维护、较强的独立性和适应性,从而使网络设备之间具有这种 “高度默契” 呢?

  答案是分而治之,更进一步地说就是分层思想。


二. 计算机网络体系结构设计基本思想

分而治之的思想 正好可以解决上面提到的这个复杂的问题。也就是说,我们可以将这个庞大而复杂的问题转化为若干较小的、容易处理的、单一的局部问题,然后在不同层次上予以解决,这也就是我们所熟悉的 分层思想 。在计算机网络体系结构中,分层思想的内涵就是: 每层在依赖自己下层所提供的服务的基础上,通过自身内部功能实现一种特定的服务。


1、分层思想在日常生活中的应用

  在我们的日常生活中有很多分层思想的应用,比如邮政系统、银行系统等。我们就以邮政系统的组织结构作为例子进行说明:

  从上图我们知可以看出,用户和用户之间的通信依赖于下层的服务,但是他们并不需要关心快递、运输等细节,也就是说,寄信者只需将写好的信交给快递员而收信者只需从快递员手中查收信件即可。类似地,快递员也只需要从寄信人手中拿到信件并交给分检员或将信件从分检员手中拿走并交给收信人即可,至于分检员为何要把这份信交给他进行投递(事实上,每个快递员会负责某个片区,分检员根据收信人地址将信件分发给不同的快递员),他不需要关心也没必要关心。显然,在这个邮政系统中,各个角色(用户、快递员…)在功能上相互独立却又能协调合作达成一种 “高度默契”,这在很大程度上得益于分层思想的理念和应用。下图更直观地体现了邮政系统的分层思想:

  此外,我们日常使用的操作系统也是分层思想的实践者。实际上,一般而言,对于一个庞大而又复杂的系统而言(比如银行系统、邮政系统等),其必定存在着对分层思想的应用。


2、分层思想的优点

 (1). 耦合度低(独立性强) 上层只需通过下层为上层提供的接口来使用下层所实现的服务,而不需要关心下层的具体实现。也就是说,下层对上层而言就是具有一定功能的黑箱。

 (2). 适应性强 只要每层为上层提供的服务和接口不变,每层的实现细节可以任意改变。

 (3). 易于实现和维护 把复杂的系统分解成若干个涉及范围小且功能简单的子单元,从而使得系统结构清晰,实现、调试和维护都变得简单和容易。也就是说,对于设计/开发人员而言,这种方法使设计/开发人员能够专心设计和开发他们所关心的功能模块;对于调试/维护人员而言,这种方法也方便调试/维护人员去处理他们所负责的功能模块。


三. 计算机网络体系结构的概念与标准

  如你所料,计算机网络体系结构也采用了分层的思想。那么,既然计算机网络体系结构的设计采用的是分层思想,那么它就必须得解决以下几个问题:

(1). 网络体系结构应该具有哪些层次,每个层次又负责哪些功能呢? (分层与功能) (2). 各个层次之间的关系是怎样的,它们又是如何进行交互的呢? (服务与接口) (3). 要想确保通信的双方能够达成高度默契,它们又需要遵循哪些规则呢? (协议)


1、计算机网络体系结构的概念

  根据上面的几个问题,计算机网络体系结构必须包括三个内容,即分层结构与每层的功能,服务与层间接口 和 协议。所以,计算机网络体系结构的定义为:

在计算机网络中,层、层间接口及协议的集合被称为计算机网络体系结构。


2、计算机网络体系结构的标准

  目前,由国际化标准组织ISO制定的网络体系结构国际标准是 OSI七层模型,但实际中应用最广泛的是 TCP/IP体系结构。换句话说,OSI七层模型只是理论上的、官方制定的国际标准,而TCP/IP体系结构才是事实上的国际标准。这看起来是不可理喻的,但这却是实际存在的,是一些历史原因造成的,无疑这些原因又是复杂的,笔者在此处略加介绍,以慰读者。OSI标准的制定者以专家、学者为主,他们缺乏实际经验和商业驱动力,并且OSI标准自身运行效率也不怎么好。与此同时,由于Inernet在全世界覆盖了相当大的范围,并且占领市场的标准是TCP/IP体系结构,因此导致OSI标准没有市场背景,也就只是理论上的成果,并没有过多地应用于实践。


四. 计算机网络体系结构的分层原理

1、基本概念

  在介绍网络体系结构的分层原理前,我们有必要先了解以下几个基本概念,其对应关系如下图所示:

  • 实体: 任何可以发送和接收信息的软硬件进程;
  • 对等层: 两个不同系统的同一层次;
  • 对等实体: 分别位于不同系统对等层的两个实体;
  • 接口: 上层使用下层所提供的功能的方式;
  • 服务: 某一层及其以下各层的所完成的功能,通过接口提供给相邻的上层;
  • 协议: 通信双方在通信过程中必须遵循的规则。

2、网络体系结构模型

  我们在网络中的任何一个系统都是按照上图中的层次结构模型来组织的,该模型具有以下特点:

  • 同一网络中,任意两个端系统必须具有相同的层次;
  • 每层使用其下层提供的服务,并向其上层提供服务;
  • 通信只在对等层间进行,当然这里所指的通信是间接的、逻辑的、虚拟的,非对等层之间不能互相“通信”;
  • 实际的物理通信只在最底层完成;
  • Pn代表第n层的协议,即第n层对等实体间通信时必须遵循的规则或约定。

3、对等层通信的实质

在逻辑上,网络分层体系结构原理允许不同主机的对等实体进行通信,但禁止不同主机非对等实体间进行直接通信;在物理上,每一层必须依靠下层提供的服务来与另一台主机的对等层通信,这是 对等层通信的实质 。也就是说,模型中的上层(第n+1层)使用下层(第n层)所提供的服务,是下层(第n层)服务消费者;而模型中的下层(第n层)向上层(第n+1层)提供服务,是上层(第n+1层)的服务生产者(提供者)。

  进一步地,源进程传送消息到目标进程的过程是这样子的: 首先,消息送到源系统的最高层,紧接着消息从最高层开始自上而下逐层封装 ,最后该消息经物理线路传输到目标系统。而当目标系统收到信息后,其会将该信息 自下而上逐层处理并拆封,最后由最高层将消息提交给目标进程。这个处理过程与邮政通信过程类似,如下图所示:


4、协议

  正如上图所示,发信人和收信人对信件内容的共识就是二者之间的协议,正是由于这种协议的存在使得他们都能读懂信的内容并理解对方的意思,达成默契;类似地,寄件邮局与收件邮局也能对信件的传递达成共识,也就是说,有一套规则来保证邮局之间的“ 默契,二者间的这种默契要么能把信件完好无损地送给收信人,要么能够把信件完好无损地退给发信人;同样地,运输系统也能对信件如何运输达成共识,而正是由于这种共识,信件才能到达指定邮局也就是说,对等实体间的这种默契(共识)就是协议。

同样地,在计算机网络体系结构中,不同层需要完成不同的功能或者提供不同的服务。比如,计算机网络体系结构应该提供对应的差错控制,从而使对等层的通信更加可靠;除此之外,还应该提供流量控制以控制发送端的发送速率以便接收端能来得及接收消息;分段和重装机制也很必要,就是说发送端在发送消息时应该将数据块分成更小的单位以便传输,而接收端能够准确地将这些数据块重新组合并还原数据的原貌; 通信会话复用同一条低层连接可以提高效率;建立连接和释放连接机制是不同主机通信的保障,等等。上面列举的这些功能(服务)实际上都是由计算机体系结构中具体的某一层来实现的,更具体地说,主要是通过每层相应的通信协议来实现这些功能的。也就是说,计算机间网络中所有的通信活动都是由协议控制的,也正是各种各样的协议保证了计算机间高度默契的通信。下图对比了人相互交流的协议和计算机间相互通信的协议:


五. 通信协议

  上一节的最后一部分非常形象地介绍了协议的内涵,使我们对网络通信协议有了一个感性的理解。实际上,人类在相互交流过程中也遵守某种“协议”,只不过这种协议是一种文化而已。其与计算机间相互通信的协议对比如下:


1、协议的概念

  通信协议定义了 网络实体间发送报文和接收报文的格式、顺序以及当传送和接收消息时应采取的行动(规则)。这个定义指明了通信协议的三要素:

  • 语义 语义是指对协议中各协议元素的含义的解释,例如:在HDLC协议中,标志Flag(7EH)表示报文的开始和结束;在BSC协议中,SOH(01H)表示报文的开始,STX(02H)表示报文正文的开始,ETX(03H)表示报文正文的结束。

  • 语法 语法是指协议元素与数据的组合格式,也就是 报文格式,如下图所示:

  • 时序 时序是指在通信过程中,通信双方操作的执行顺序与规则,如本节开头的图示。

  • 协议三要素之间的关系 计算机间通信的本质就在于信息报文的交换,而信息报文也就是我们在下面提到的协议数据单元(PDU)。实际上,语法规定了PDU的格式;而在此基础上,语义赋予了PDU的特定内涵;时序通过控制这种具有特定语义的报文来实现计算机间的通信,也就是说,时序是通信规则的体现。   现在我们类比一下人类的对话来理解协议三要素之间的内在联系。假设这样一个场景,Rico在和Livia交谈,Rico说:“Livia,早上好啊~”,这时Livia会莞尔一笑并答道:“早上好,Rico~”。对于这段会话,语法就是这些汉字/语句的组织规则,正是由于这种组织规则这些简单汉字的叠加才有了一定的语义,而时序保证了你问我答的这种会话(交流)的进行,更进一步地,时序保证了通信各方对PDU语义的理解并做出恰当的回应。   总的来说,语法是语义的载体,而时序又是对语义的有序组织。正是基于这种关系,计算机在通信时才得以保持高度默契。

实际上,在网络体系结构中,每层可能会有若干个协议,但一个协议只隶属于一个层次。在实现方式上,协议可以由软件或硬件来实现。比如,网络通信协议软件、网络驱动程序,网络硬件等。常用协议组有:TCP/IPWindowsUnixLinux、…)、NetBEUI(Windows)、IPX/SPX(NetWare、Windows)等。


2、协议数据单元(PDU)

  计算机网络体系结构中,对等层之间交换的信息报文统称为 协议数据单元(Protocol Data Unit,PDU)。PDU由 协议控制信息(协议头) 数据(SDU) 组成,如下图所示。

  其中,协议头部中含有完成数据传输所需的控制信息,比如地址、序号、长度、分段标志、差错控制信息等。传输层及以下各层的PDU均有各自特定的名称:

  • 传输层 —— 段(Segment)
  • 网络层 —— 分组/包(Packet)
  • 数据链路层 —— 帧(Frame)
  • 物理层 —— 比特(Bit)

(1). PDU的封装

在计算机网络体系结构中,下层把上层的PDU作为本层的数据加以封装,然后加入本层的协议头部(和尾部)形成本层的PDU,如下图所示。在这里,封装就是在数据前面加上特定的协议头部。因此,数据在源站自上而下递交的过程实际上就是不断封装的过程,而到达目的地后自下而上递交的过程就是不断拆封的过程,如下图所示。这个过程类似发送信件的过程,数据在传输时,其外面实际上要被包封多层“信封”。在目的站,某一层只能识别由源站对等层封装的“信封”,而对于被封装在“信封”内部的“数据”仅仅是拆封后将其提交给上层,本层不作任何处理。特别需要注意的是,每一层只处理本层的协议头部!


(2). PDU封装实例

  下图演示了PDU在TCP/IP协议组的封装过程:


六. 小结

  计算机网络体系结构标准的制定使得两台计算机能够像两个知心朋友那样能够互相准确理解对方的意思并做出优雅的回应。本文首先概述了计算机网络体系结构的提出动机,并结合日常生活中的邮政系统介绍了设计的理念,并给出了相关的基本概念和标准。进一步地,我们着重概述了计算机网络体系结构的分层原理及其最重要的组成部分——协议,使得读者能够对计算网路体系结构有一个全新的、系统的认识。


七. 更多

  更多关于OSI七层参考体系结构和TCP/IP四层协议结构及每种体系结构中的各层的任务、功能、协议及与其他相似层的区别等区别的介绍,请读者移步我的博客《计算机网络体系结构综述(下)》


引用 计算机网络体系结构

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158269.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年7月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Word域的应用和详解
■第一章 域基础 一、域的作用   微软的文字处理软件Microsoft Word系列,其方便和自动化程度是其他任何文字处理软件所望尘莫及的。究其原因,其一,微软有强大的软件开发技术人员队伍。其二,Word与其本公司的操作系统 Windows的密切结合。微软至今也没有公布Windows 操作系统和Word 文字处理软件的源代码,就是为了保住自己的垄断地位。其三,在 Word 中引入了域和宏,将某些特殊的处理方法用函数或编程的的形式交给用户,大大提高了文字处理的灵活性、适应性和自动化程度。   由于域和宏的引入,Word 文档易受病毒的攻击。此外,要灵活使用域和宏,要求用户学习一定的编程基础知识。一提到编程,有的人就感到头痛。其实,Word中的域和宏所包含的知识是非常基础的,也是比较容易学会的。   域相当于文档中可能发生变化的数据或邮件合并文档中套用信函、标签的占位符。   通过域,可以调用宏 命令;也可以通过宏的语句在文档中插入域。   现在我们通过举例来简单了解一下Word 中的域能干些什么:    1. 给段落自动编号,如:1. 2. 3. ,一、二、三、,1.1.1,1.1.2,等等。    2. 插入用常规方法无法实现的字符,如:
全栈程序员站长
2022/07/01
7K0
Word域的应用和详解
Word 域代码:TOA(引文目录)域「建议收藏」
建立一个目录。TOC 域根据标题级别、指定样式或由 TC(目录项)域指定的项目来收集目录项。在使用“插入”菜单中“引用”子菜单中的“索引和目录”命令时,Microsoft Word 将插入 TOC 域。
全栈程序员站长
2022/09/02
2.7K0
一篇文章学会ChIP-seq分析(下)
写在前面:《一篇文章学会ChIP-seq分析(上)》《一篇文章学会ChIP-seq分析(下)》为生信菜鸟团博客相关文章合集,共九讲内容。带领你从相关文献解读、资料收集和公共数据下载开始,通过软件安装、数据比对、寻找并注释peak、寻找motif等ChIP-seq分析主要步骤入手学习,最后还会介绍相关可视化工具。 第五讲:测序数据比对 比对就很简单的了,各种mapping工具层出不穷,我们一般常用的就是BWA和bowtie了,我这里就挑选bowtie2吧,反正别人已经做好了各种工具效果差异的比较,我们直接用就
生信技能树
2018/03/08
12.3K0
一篇文章学会ChIP-seq分析(下)
ESP定律原理详解,只看这一篇文章就够了
闲着也是闲着,在逆向某软件时深入了解了下ESP定律,然后就想写个文章记录并分享下。
Java程序猿
2023/02/22
1.5K0
有 Bug 不会调试 ? 这篇文章很详细 !
Debug 用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用 Debug 模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用 Debug 模式来跟踪代码的运行流程去学习三方框架的源码。
哲洛不闹
2019/11/07
7770
有 Bug 不会调试 ? 这篇文章很详细 !
Word设置“第X页共Y页”页码且不计目录、前言等的页数
  本文介绍在Word文档中,不考虑封面、目录、前言等的页数,为正文添加“第X页,共X页”样式页码的方法。
疯狂学习GIS
2024/01/30
4100
Word设置“第X页共Y页”页码且不计目录、前言等的页数
Markdown如何学习,看完这篇文章就够了。
不论是开发者还是写文章的博主。现在主流编辑器是Markdown,所以学习Markdown语法对提升技能很有帮助。想要学习Markdown,这篇文章就够了。
Python兴趣圈
2023/11/10
4320
Markdown如何学习,看完这篇文章就够了。
一篇文章学会使用 gitk,排查 Git 问题就靠它了
现在软件开发已经离不开版本控制系统。版本控制系统不仅能保留每个文件所有版本的历史信息,还能够方便查找。另外,也能够让团队协作不受空间和时间的限制。
DevOps时代
2020/02/11
7.3K0
一篇文章学会使用 gitk,排查 Git 问题就靠它了
IntelliJ IDEA 2019 快捷键终极大全
常用的有fori/sout/psvm+Tab即可生成循环、System.out、main方法等boilerplate样板代码 。
乔戈里
2019/08/26
2.7K0
一篇文章让你彻底掌握 Shell
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
硬件开源小站
2023/04/07
2.2K0
一篇文章带你了解HTML语法
在做web开发时,我们必不可少的要使用到Html,因为它包含了最基础的网页结构,虽然Html只能帮助我们构建静态网页,但是却是我们最不能缺少的部分,如果把网页比作一个房子,那么Html就是地基,也就是第一件要做的事,可见它的重要性。那么,现在大家就跟随我的脚步去学习下吧。
前端皮皮
2020/11/26
2.7K0
一篇文章带你了解HTML语法
idea快捷键大全最新文档(ctrl快捷键大全截图)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127575.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/25
9480
万字长文!超详细的IntelliJ IDEA 教程!
工欲善其事,必先利其器。在Java开发中挑选一款好的Ide环境能大大提升我们的开发效率,IntelliJ IDEA正是一个不二选择。本教程会介绍怎么对idea进行配置、使用idea进行debug和经常使用的快捷键,最后会推荐几个牛逼的idea插件,大大提升开发体验和效率。
dizhiguo
2022/09/30
4K0
万字长文!超详细的IntelliJ IDEA 教程!
word文档页码不连续编号怎么办_怎样给论文加页码
像下面这个文档,对页面分成了两栏,如果现在想给每一栏都添加一个页码序号,也就是在第1页的左右两栏分别显示第1页和第2页,在第2页的左右两栏分别显示第3页和第4页,这样的效果该如何设置呢?
全栈程序员站长
2022/11/17
2.5K0
Markdown笔记 | 一篇最详细的Markdown 教程 --> 收好
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。Markdown具有一系列衍生版本,用于扩展Markdown的功能(如表格、脚注、内嵌HTML等等),这些功能原初的Markdown尚不具备,它们能让Markdown转换成更多的格式,例如LaTeX,Docbook。Markdown增强版中比较有名的有Markdown Extra、MultiMarkdown、 Maruku等。这些衍生版本要么基于工具,如Pandoc;要么基于网站,如GitHub和Wikipedia,在语法上基本兼容,但在一些语法和渲染效果上有改动。
野原测试开发
2019/07/10
30.9K0
Sublime Text 快捷键
ctrl+shift+t:重新打开最近关闭文件 快捷键功能 ctrl+shift+n 打开新Sublime ctrl+shift+w 关闭Sublime,关闭所有打开文件 ctrl+shift+t 重新打开最近关闭文件 ctrl+n 新建文件 ctrl+s 保存 ctrl+shift+s 另存为 ctrl+f4 关闭文件 ctrl+w 关闭 ctrl+k, ctrl+b 切换侧边栏显示状态 f11 切换全屏状态 shift+f11 免打扰模式状态切换 bac
deepcc
2018/05/16
1.2K0
windows10切换快捷键_Word快捷键大全
今天与大家分享一下最全的Windows10键盘快捷键汇总,包括:Windows10系统快捷键、Windows10内置应用快捷键、Windows10辅助功能快捷键、Microsoft Surface Hub快捷键、Win10手机Continuum模式快捷键,并且本文会随着Win10版本的更新和新快捷键的增加而持续更新。
全栈程序员站长
2022/11/10
5.9K0
一篇极其容易上手的 LaTex 学习文档
LaTeX 有一些列自定义的书写规则组成,有特定的语法,比如Markdown,但语法和变量比前者多。本篇文章,适合刚学习LaTex的小白同学,会对下列几个方面进行介绍:
前端修罗场
2022/07/29
2.7K0
一篇极其容易上手的 LaTex 学习文档
IntelliJ IDEA 2019 快捷键终极大全,速度收藏!
常用的有fori/sout/psvm+Tab即可生成循环、System.out、main方法等boilerplate样板代码 。
芋道源码
2019/08/06
9910
IDEA日常配置和操作小结
本文系统的介绍了开发工具 IDEA 的常用操作,从开发过程中的编码,到运行调试,循序渐进;结合实际项目开发,从常用配置、快捷键使用、编码技巧及调试技巧、常用插件等角度,系统介绍如何高效的使用 IDEA 开发项目。
程序员Leo
2023/08/07
1.5K0
IDEA日常配置和操作小结
相关推荐
Word域的应用和详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档