php 网站 教程,潍坊网站开发公司,推广公司app好做吗,lamp网站架构引言
协议分层
协议分层使我们可以将大任务化简成几个更小、更简单的任务。模块化指的是独立的协议层。一个协议层#xff08;模块#xff09;可以定义为一个具有输入和输出而不需要考虑输入是如何变成输出的黑匣子。当向两台机器提供相同输入得到相同输出时#xff0c;它…引言
协议分层
协议分层使我们可以将大任务化简成几个更小、更简单的任务。模块化指的是独立的协议层。一个协议层模块可以定义为一个具有输入和输出而不需要考虑输入是如何变成输出的黑匣子。当向两台机器提供相同输入得到相同输出时它们 就可以相互替换。
TCP/IP协议族 分层架构 地址和数据包名称 在应用层我们通常使用名称比如someorg.com或者邮箱地址比如so.mebodycoldmail.com定义提供服务的站点。在传输层地址被称为端口号端口号的作用是在源和目标之间定义应用层程序。端口号通过各程序的本地地址来辨别多个同时运行的本地程序。在网络层这些地址在整个因特网范围下是全球化的网络层的地址独一无二地定义了该设备与因特网的连接。链路层地址有时称为MAC地址是在本地定义的地址每一个链路层地址在计算机网络局域网LAN或广域网WAN中定义一个特定的主机或者路由器。
应用层
应用层模式
在网络的生命周期中应用程序发展出了两种模式来为两个应用程序彼此交互提供服务客户机-服务器模式和端到端模式。 传统模式客户机-服务器模式 服务提供者是一个应用程序叫作服务器进程这个进程一直运行等待另一个叫作客户端进程的应用程序通过因特网连接请求服务。通常一些服务器进程可以提供某特定种类的服务但是向这些服务端进程请求服务的用户会很多因此很多服务器进程需要一直运行而客户端程序只在需要时运行。一些传统服务仍然在使用这种模式包括万维网WWW和它的超文本传输协议HTTP、文件传输协议FTP、安全外壳协议SSH、邮件服务等等。 新模式端到端模式 在端到端模式中不需要一直运行并等待客户端进程连接的服务器进程。这个责任是在端与端之间共享的。一台与网络相连接的计算机可以在一个时间段提供服务又在另一个时间段接收服务。一台计算机甚至可以在同一时间提供和接收服务。 这个模式完全适用的领域之一是网络电话。通过电话通信确实是一个端到端活动任何一方都没有必要一直运行来等待另一方的呼叫。端到端模式可以使用的另一个领域是当一些计算机与网络连接来互相共享一些东西的时候。例如、一个网络用户有一个需要与其他网络用户共享的文件时不需要将这个文件夹变成服务器并且一直运行服务器进程来等待其他用户的连接和获得这个文件。
标准客户机-服务器模式
万维网WWW和超文本传输协议HTTP 万维网 Web客户端浏览器 各种各样的供应商提供了能解释和显示网页的商用浏览器。它们几乎使用了相同的体系结构。每个浏览器通常由三部分构成控制器、客户端协议和解释器。 控制器接收来自键盘或鼠标的输入 使用客户端程序存取文挡。在文档被存取之后控制器使用一个解释器在屏幕上显示文档。客户端协议可以是稍后要描述的协议中的一种HTTP、FTP。根据文档类型解释器可以是HTML、Java或Ja aScrip。 Web服务器存储网页。每当请求到达时相应的文档会发送至客户端。 统一资源定位符URL 作为文件网页需要唯一的标识符来将它和其他网页区分开来。定义一个网页需要3个标识符主机、端口和路径。然而在对网页进行定义之前需要告诉浏览器我们想要使用的客户机-服务器应用程序这叫作协议。这意味着我们得要4个标识符来定义网页第一个是用来得到网页的工具种类剩下三个的组合定义目标对象网页。 协议为了访问网页需要的第一个标识符是客户机-服务器程序的缩写。比如HTTP。主机标识符主机标识符可以是服务器的IP地址或服务器的特定名称。端口号端口号通常是为客户机-服务器应用程序预定义的16位整数。路径路径标识该文件在基本的操作系统中的名字和位置。 超文本传输协议HTTP是一个用来定义如何编写客户机-服务器程序以便从网络中检索网页的协议。HTTP客户端发送请求。
文件传输协议FTP
文件传输协议FTP是TCP/IP提供的标准协议用于从一台计算机复制文件到另一台计算机。虽然从一个系统到另一个系统的文件传输看起来简单直接但有些问题必须首先处理。例如两个系统可能使用不同的文件命名约定。两个系统也可能有不同的方式表示数据。两个系统有不同的目录结构。所有这些问题都被FTP使用非常简单优美的方法解决了。
FTP的基本模式客户端由三部分组成用户接口、客户端控制进程和客户端数据传输进程。服务器由两部分组成服务器控制进程和服务器数据传输进程。控制连接建立在控制进程间数据连接建立在数据传输进程间。
FTP中的两个连接有着不同的生命周期。控制连接在整个交互式FTP会话中都是保持打开的而数据连接为每个文件传输活动打开和关闭。每次涉及使用文件传输命令时它就打开文件传输结束后它就关闭。当控制连接打开如果需要传输多个文件数据连接可以打开和关闭多次。
域名系统DNS
为了确认一个实体TCP/IP协议族使用唯一定义了该主机和网络之间连接的IP地址。但是人们更愿意使用名字而不是数字化的地址。因此网络需要一个可以将名称映射到地址的目录系统。这和电话网络是相似的电话网络为了使用电话号码而非姓名而设计人们可以保存一份私人文件来将名字映射到相应电话号码也可以直接通过电话簿来打电话。
端到端模式
准备好共享资源的网络用户成为同位体peer并逐渐构成网络。当网络中的一个同位体有可共享的文件例如一个音频或视频文件时这个文件对于其他同位体而言是可获得的。感兴趣的同位体可以与存储该文件的计算机连接并下载这个文件。在一个同位体下载这个文件之后这个文件可用于其他同位体的下载。随着更多同位体加入和下载该文件这个文件的更多副本就会提供到组中。由于同位体列表可能增长也可能收缩因此问题是该模式应当如何跟踪忠实的同位体和文件位置。为了回答这个问题我们需要把端到端模式分成两类集中的和分散的。 集中网络 在一个集中的端到端网络中目录系统列出同位体和它们提供了什么以使用客户机-服务器模式但是文件的存储和下载都使用端到端模式完成。在这种网络中一个同位体先通过一个中央服务器注册然后同位体提供它的IP地址和它准备共享的文件列表。 为了寻找一个特定文件同位体向主服务器发送一个查询要求。服务器在它的目录中搜索并给出存有该文件副本的节点的IP地址。同位体连接这些节点之一并下载文件。随着节点加入和离开同位体这个目录一直在更新。 集中网络使目录的维护得到简化但是也造成一些障碍。访问目录可能产生巨大的流量并使系统变慢。这些中心服务器很容易受到攻击如果它们全都出现故障整个系统就会停机。 分散网络 分散P2P网络不依赖于集中目录系统。在这个模型中同位体组织形成一个在物理网络之上的逻辑网络称为重叠网络。 基于重叠网络中节点之间的连接方式分散P2P网络分成结构化的和未结构化的两大类。 在一个未结构化的P2P网络中节点随机地连在一起。在未结构化的P2P中进行搜索不是很有效因为寻找一个文件的查询涌入网络并造成巨大的流量即使这样这个查询请求也不一定得到解决。 结构化的网络使用一组预设的规则来链接节点这样一个查询就可以有效且高效地解决。为了达到这个目的最常用的技术是分布式散列表DHT。很多应用都使用了DHT包括分布式数据结构DDS、内容分布式系统CDS、域名系统DNS、P2P文件共享。一个使用DHT的常用P2P文件共享协议是BT下载。
传输层
TCP/IP协议族中的传输层位于应用层和网络层之间它从网络层接收服务并且为应用层提供服务。传输层作为一个客户程序和服务器程序之间的联络是一个进程间连接。传输层是TCP/IP协议族的核心部分它是一个在网络中从一点向另一点进行数据传输的端与端之间的逻辑媒介。
传输层服务 进程间通信 传输层的第一个责任是提供进程间通信。进程是使用传输层服务的应用层实体运行中的程序。 网络层负责在计算机层面的通信(主机间通信)。网络层协议只能将消息传输到目的计算机。然而这是一个不完整的传递这个消息仍然需要被传递给正确的进程。这就是传输层协议的工作它的责任是将消息送抵相应的进程。 端口号 本地主机和远程主机用IP地址进行定义。为了定义这些进程我们需要第二个标识符称为端口号。在IP协议族中端口号是 6553516位之间的整数。
传输层协议 用户数据报协议UDP 用户数据报协议UDP是不可靠的无连接传输协议。它除了提供进程间通信而不是主机间通信以外没有向网络层服务添加任何东西。UDP是一个极简单同时开销最少的协议。如果一个进程想要发送一条短的消息且不关心可靠性那么就可以使用UDP。通过UDP发送一条短消息比用TCP发送造成发送者和接收者之间的互动要少得多。UDP数据包也叫作用户数据报有一个固定大小为8字节的头。由于UDP用户数据报是存储在总长度为65535字节的IP数据报中的所以其整体长度会比较短。 传输控制协议TCP 传输控制协议TCP是一个面向连接的可靠协议。它明确地定义了连接设施、数据传输和连接拆卸段以提供面向连接的服务。这里面向连接的服务指的是在来自应用层的同一消息中的所有数据包段之间有连接关联。TCP使用序列号来定义段的顺序。序列号与每一段的字节数有关。比如在一个6000字节的消息中第一段的序列号是0第二段的序列号是2000第三段的序列号是4000。这样如果一段丢失了接收者会持有另外两段直到发送者重置丢失的那段。在传输层TCP将一些字节组合成一个叫作段的数据包。TCP在每一段之前加上一个头目的是方便控制并且将这些段发送至网络层进行传输。这些段都封装在IP数据报里。
网络层
TCP/IP协议族中的网络层负责源到目的地主机间通信的消息发送。
网络层提供的服务 打包 在源主机侧对传输层数据进行打包对来自目的主机网络层的数据包进行拆包。通过三个步骤完成。 源网络层协议从传输层协议接收数据包添加包含源地址和目的地址以及其他层协议所需信息的头。网络层协议在逻辑上将该数据包传递至目的地处的网络层协议。目标主机接收网络层数据包解除有效负荷的封装并将其传输至上一层协议。 如果在源主机或路径中的路由器处时数据包为碎片状网络层有责任等待直到所有碎片到达对它们重新组合并发送至上一层协议。传输层的有效负荷可以封装在几个网络层数据包中。 数据包传递 网络层的数据包传递是无连接且不可靠的。 在网络层传递的数据包是不可靠的这意味着这些数据包可能损毁、丢失或者重复。我们要通过使用传输层协议中的TCP才能保证消息没有损毁。如果在传输层的一个有效负荷由于数据链路层的不可靠传递损毁了TCP会丢弃这个数据包并且要求重新发送。网络层的传递也是无连接的但是这里的无连接不是说发送者和接收者之间没有物理连接而是说网络层对每个数据包的处理是单独的。换句话说属于相同传输层有效负荷的数据包之间是没有联系的。如果一个传输层数据包由4个网络层数据包构成那么无法保证这4个数据包到达的顺序与它们发送的顺序相同这是由于每个数据包都可能依照不同的路径到达目的地。目的地的传输层负责等待和接收所有数据包再将它们组合在一起并传送至应用层。 路由 网络层有一个和其他层一样重要的职责就是路由。网络层负责将数据包从它的源传送到目的地。物理网络是网络LAN和WAN和连接这些网络的路由器的集合这意味着从源到目的地有不止一条路线。网络层的责任是在这些可能的路线中找到最优路线它需要有一些特定的策略来定义最优路线。在现在的网络中这需要通过在数据包到达时运行一些路由协议来帮助多个路由器协调它们对于周边的知识并且提出一致的路由表来实现。
网络层协议 第四版网际协议IPv4 IPv4地址 在TCP/IP协议族的IPv4层中用来标记每个设备和互联网之间的连接的标识符叫作网络地址或IP地址。 有三种较普遍的表示法来表现IPv4地址二进制表示法以2为底、带点的十进制表示法以256为底和十六进制表示法以16为底。在二进制表示法中IPv4地址展示为32位。为了使IPv4地址更易读通常将它写成十进制的形式 不同字节利用小数点分开。这个格式被称为带点的十进制表示法。带点的十进制表示法中每个数字都在0~255之间。 32位的IPv4地址也是分级的但是只分成两个部分。地址的第一部分叫作前级定义网络;地址的第二部分叫作后缀定义节点设备和网络的连接。前缀的长度是n位后缀的长度就是32-n位。前缀和后缀的长度取决于网络组织的站点。IPv4数据报 IP使用的数据包叫作数据报。数据报是一种长度不一的数据包。这种数据包包括两部分头和有效负荷数据。头的长度是20~60字节并且它包含路由和传递时必要的信息。注意一个字节是8位。 第六版网际协议IPv6 IPv4的一些地址耗尽之类的缺点促进了20世纪90年代早期IP协议的一种新版本的出现。IPv6是一个在扩大IPv4的地址空间的同时重新设计IP数据包的格式并修改一些辅助性协议的计划。下面展示了IPv6协议中的主要改变。 IPv6地址 为了防止地址耗尽IPv6使用128位来定义任何连接到网络的设备。地址显示为二进制或冒号十六进制的格式。第一个格式用来在计算机中存储地址第二个格式是供人类使用的。IPv6中的地址事实上定义了三个等级站点组织、子网和到主机的连接。
数据链路层
TCP/IP协议族没有定义数据链路层中的任何协议。这一层是网络中连接起来后可以构成因特网的区域。这些网络有线或者无线都接收服务并将服务提供给网络层这正可以为我们提供当今市场上有多少种标准协议的线索。
因特网是通过连接设备路由器或者交换机胶合在一起的网络的组合体。如果一个数据报是从一台主机传输到另一台主机它需要通过这些网络传递。
节点和链接
虽然应用层、传输层和网络层的通信都是端到端的但数据链路层的通信是节点对节点的。网络中一点的数据单元需要穿过很多网络LAN和WAN才能到达另外一点。这些LAN和WAN都是通过路由器连在一起的。传统上会将两个端主机和路由器看作节点它们之间的网络看作链接。