一、程序员进阶架构师的基础知识【计算机基础】
二、程序员进阶架构师的基础知识【操作系统】
三、程序员进阶架构师的基础知识【计算机网络基础】
四、程序员进阶架构师的专业知识【软件工程基础】
五、程序员进阶架构师的专业知识【UML建模工具】
六、程序员进阶架构师的专业知识【系统分析】
七、程序员进阶架构师的专业知识【系统设计】
八、程序员进阶架构师的专业知识【架构设计】
九、程序员进阶架构师的专业知识【架构质量及评估】
十、程序员进阶架构师的专业知识【软件测试及维护】
1977 年,国际标准化组织为适应网络标准化发展的需求,制定了开放系 统互联参考模型(Open System Interconnection/Reference Model, OSI/RM),从而形成了网络架构的国际标准。OSI/RM 构造了由下到上的七层模型,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
互联网协议(Internet Protocol Suite)是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,或TCP/IP Protocols),简称 TCP(传输控制协议)/IP(网际协议)。协议族下的各种协议,依其功能不同,被分别归属到这四个层次结构之中,常被视为是简化的七层OSI模型。
层 | 主要功能 | 详细说明 |
---|---|---|
应用层 | 处理网络应用 | 直接为端用户服务,提供各类应用过程的接口和用户接口。例 如HTTP、Tenlent、FTP、SMTP、NFS等 |
表示层 | 数据表示 | 使应用层可以根据其服务解释数据的涵义。通常包括数据编码的约定、本地句法的转换。例如JPEG、ASCII、GIF、DES、 MPEG等 |
会话层 | 互连主机通信 | 负责管理远程用户或进程间的通信,通常包括通信控制、检查点设置、重建中断的传输链路、名字查找和安全验证服务。例 如:RPC、SQL等 |
传输层 | 端到端连接 | 实现发送端和接收端的端到端的数据分组传送,负责保证实现数据包无差错、按顺序、无丢失和无冗余的传输。其服务访问点为端口。代表性协议有TCP、UDP、SPX等 |
网络层 | 分组传输和路由选择 | 在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,网络层解决路由器选择、 网络拥塞、异构网络互联的问题。服务访问点为逻辑地址(网 络地址)。代表性协议有IP、IPX等 |
数据链路层 | 传输以帧为单位的信息 | 建立、维持和释放网络实体之间的数据链路,把流量控制合并在一起。为MAC(媒介访问层)和LLC(逻辑链路层)两个子 层。服务访问点为物理地址(MAC地址)。代表性协议有 IEEE802.3/.2、HDLC、PPP、ATM等 |
物理层 | 二进制为传输 | 通过一系列协议定义了通行设备的机械的、电气的、功能的、 规程的特征。通过布线、光纤、网卡和其它用来把两台网络通信设备连接在一起。代表性协议有RS232、V.35、RJ-45、FDDI等 |
数据在网络中是以“包”的形式传递的,但不同网络的“包”,其格式也是不一样的。如果在不同的网络间传送数据,由于包格式不同,导致数据无法传送,于是网络间连接设备就充当“翻译”的角色,将一种网络中的“信息包”转换成另一种网络的“信息包”。
在应用层中,定义了很多面向应用的协议,应用程序通过本层协议利用网络完成数据交互的任务。这些协议主要有 FTP、TFTP、HTTP、SMTP、DHCP、 Telnet、DNS 和 SNMP 等。
传输层主要有两个传输协议,分别是 TCP 和 UDP(User Datagram Protocol,用户数据报协议),这些协议负责提供流量控制、错误校验和排序服务。
TCP 是整个 TCP/IP 协议族中最重要的协议之一,它在 IP 协议提供的不可靠数据服务的基础上,采用了重发技术,为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务。TCP 协议一般用于传输数据量比较少,且对可靠性要求高的场合。
建立连接
TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接。
TCP三次握手的过程如下:
释放连接
建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。
TCP采用序号、超时重传、确认机制以及流量控制等方式保证报文传输的可靠,具体功能如下:
UDP 是一种不可靠的、无连接的协议,可以保证应用程序进程间的通信, 与 TCP 相比,UDP 是一种无连接的协议,它的错误检测功能要弱得多。可以这样说,TCP 有助于提供可靠性,而 UDP 则有助于提高传输速率。UDP 协议一般用于传输数据量大,对可靠性要求不是很高,但要求速度快的场合。
UDP报头由4个域组成,其中每个域各占用2个字节,具体包括源端口号、目标端口号、数据包长度、校验值。
网络层中的协议主要有IP、ICMP(Internet Control Message Protocol, 网际控制报文协议)、IGMP(Internet Group Management Protocol,网际组管理协议)、ARP(Address Resolution Protocol,地址解析协议)和 RARP(Reverse Address Resolution Protocol,反向地址解析协议)等,这些协议处理信息的路由和主机地址解析。
IP所提供的服务通常被认为是无连接的和不可靠的,它将差错检测和流量控制之类的服务授权给了其他的各层协议,这正是 TCP/IP 能够高效率工作的一个重要保证。网络层的功能主要由 IP 来提供,除了提供端到端的分组分发功能外, IP 还提供很多扩充功能。例如,为了克服数据链路层对帧大小的限制,网络层提供了数据分块和重组功能,这使得很大的 IP 数据包能以较小的分组在网络上传输。
互联网是由许多个网络连接所形成的大型网络。如果要在互联网中传送IP信息包,除了确保网络上每个设备都有一个唯一的IP地址之外,网络之间还必须有传送的机制,才能将IP信息包通过一个个的网络传送到目的地。此种传送机制称为IP路由。各个网络通过路由器相互连接。路由器的功能是为IP信息包选择传送的路径。换言之,必须依靠沿途各路由器的通力合作,才能将IP信息包送到目的地。
当IP数据包经由路由器转发时,如果目标网络与本地路由器直接相连,则直接将数据包交付给目标主机,这称为直接交付;否则,路由器通过路由表查找路由信息,并将数据包转交给指明的下一跳路由器,这称为间接交付。路由器在间接交付中,若路由表中有到达目标网络的路由,则把数据包传送给路由表指明的下一跳路由器;如果没有路由,但路由表中有一个默认路由,则把数据包传送给指明的默认路由器;如果两者都没有,则丢弃数据包并报告错误。
分割
为了能把一个IP报文放在不同的物理帧中,最大IP报文的长度就只能等于这条路径上所有物理网络的MTU的最小值。发送IP报文时,一般选择一个合适的初始长度。如果这个报文要经历的中间物理网络的MTU值比IP报文长度要小,则IP协议把这个报文的数据部分分割成若干个较小的数据片,组成较小的报文,然后放到物理帧中去发送。每个小的报文称为一个分段。分段的动作一般在路由器上进行。如果路由器从某个网络接口收到了一个IP报文,要向另外一个网络转发,而该网络的MTU比IP报文长度要小,那么就要把该IP报文分成多个小IP分段后再分别发送。
重组
重组是分段的逆过程,把若干个IP分段重新组合后还原为原来的IP报文。在目的端收到一个IP报文时,可以根据其分段偏移和MF标志位来判断它是否是一个分段。如果MF位是0,并且分段偏移为0,则表明这是一个完整的IP数据报。否则,如果分段偏移不为0,或者MF标志位为1,则表明它是一个分段。这时目的地端需要实行分段重组。IP协议根据IP报文头中的标识符字段的值来确定哪些分段属于同一个原始报文,根据分段偏移来确定分段在原始报文中的位置。如果一个IP数据报的所有分段都正确地到达目的地,则把它重新组织成一个完整的报文后交给上层协议去处理。
IP(IPV4)地址是一个32位的二进制数的逻辑地址,为了表示方便,将32位二进制数划分成4个字节,每个字节间以“.”区分。例如,IP地址11000000 10101000 11001000 10000000,用十进制表示就是192.168.200.128。
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码,即网络号(决定了可以分配的网络数量)和主机号(决定了可以分配的主机数量)。同一个物理网络上的所有主机都使用同一个网络号,网络上的一个主机(包括网络上工作站,服务器等)有一个主机号与其对应。Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A类~E类。
一个IP分组由首部和数据两部分组成。首部的前20字节是所有IP分组必须具有的,也称固定首部。在首部固定部分的后面是一些可选字段,其长度是可变的。
字段 | 作用 |
---|---|
版本 | IP协议的版本。这里版本号为4。 |
首部长度 | 可表示的最大数值是15个单位(4字节为一个单位),60字节。 |
服务类型 | 不同优先级服务质量不同,只有在使用区分服务(DiffServ) 时有效。 |
总长度 | 首部与数据之和的长度,最大长度为2^16-1=65535字节。 |
标识 | 唯一标识数据报的标识符。 |
标志 | DF:不分片位,MF:片未完位。 |
片偏移 | 指明该段处于原来数据报中的位置。 |
生存时间 | 记为TTL(Time To Live),指示数据报在网络中可通过的路 由器的最大值。 |
协议 | 数据报携带的协议(TCP、UDP、IGMP等) |
首部检验和 | 只检验首部,不检验数据。采用16位二进制反码求和算法。 |
可选字段 | 可记录时间戳 ,通过路径,安全信息等。 |
填充 | 填充为4的倍数 。 |
在传送IP信息包时,一定会指明源地址与目的地址。源地址当然只有一个,但是目的地址却可能代表单一或多部设备。根据目的地址的不同,区分为3种传送方式:单点传送、广播传送以及多点传送。
互联网络能发展到当前的规模,IPv4协议的建立功不可没。但同时它的缺 点也已经充分显现出来,如地址空间耗尽、路由表急剧膨胀、缺乏对 QoS 的支持、本身并不提供任何安全机制、移动性差等问题。尽管采用了许多新的机制来缓解这些问题,如 DHCP 技术、NAT 技术、CIDR 技术等,但都不可避免地要引入其他新的问题,问题没有得到根本解决。于是 IETF 从 90 年代起就开始积极探讨下一代IP网络,经过几年努力,在广泛听取业界和专家意见的基础上,终于在1995年12月推出了下一代网络的RFC文档——IPv6 协议, 该协议最早叫做下一代IP(IP Next Generation,IPng)。现在它的全称是 “互联网协议第 6 版”,即下一代的网际协议。
IPv6的地址长度为128位,是IPv4地址长度的4倍。于是IPv4点分十进制格式不再适用,采用十六进制表示。IPv6有3种表示方法。
字段 | 作用 |
---|---|
版本 | IP协议的版本。这里版本号为6。 |
流量分类 | 通信类型,相当于IPV4服务类型字段。 |
流标签 | 从源点到终点的一系列数据报,同一个流上的数据报标签相同,保证服务质量。 |
有效负载长度 | 除基本首部以外的字节数(所有扩展首部都算在有效负载内),最大 值64KB |
下一头部 | 相当于IPV4的协议字段或可选字段。 |
跳数限制 | 用于检测路由循环,路由器在转发数据报时对这个字段减1,变成0 丢弃该数据报。 |
IPv6协议主要定义了三种地址类型:单播地址(Unicast Address)、组播地址(Multicast Address)和任播地址(Anycast Address)。与原来在IPv4地址相比,新增了“任播地址”类型,取消了原来IPv4地址中的广播地址,因为在IPv6中的广播功能是通过组播来完成的。
考虑到因特网上的系统和设备非常之多,想要一次性从IPv4升级到IPv6是无法做到的。而要实现IP版本的升级,需要花费相当多的时间,且升级过程必须是相当平滑的,防止升级过程中出现任何问题。IETF(Internet Engineering Task Force,国际互联网工程任务组)设计了三种策略来实现平滑的IP版本升级。
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的包头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:
域名系统(Domain Name System,DNS)是把主机域名解析为IP 地址的系统,解决了IP地址难记的问题。该系统是由解析器和域名服务器组成的。DNS使用UDP协议,较少情况下使用TCP协议,端口号均为53。域名系统由三部分构成:DNS名字空间、域名服务器、 DNS客户机。
名字空间是指定义了所有可能的名字的集合。域名系统的名字空间是层次结构的,类似Windows的文件名。它可看作是一个树状结构,域名系统不区分树内节点和叶子节点,而统称为节点,不同节点可以使用相同的标记。
根域:根域处于Internet上域名空间结构树的最高端,是树的根, 提供根域名服务。根域用“.”来表示。
顶级域名:顶级域名在根域名 之下,分为三大类:国际通用顶级域名、国家顶级域名。
顶级域下面是二级域,在二级域之下,组织机构还可以划分子域,使其各个分支部门都获得一个专用的名称标识, 例如www.sales.microsoft.com中的sales是微软销售部门的子域名称。一个域名的长度通常不超过63 个字符,最多不能超过255个字符。
主机:属于最低层域名,处于域名树的叶子端,代表各类主机提供的服务。
名称 | 定义 | 作用 |
---|---|---|
主域名服务器 | 维护本区所有域名信息,信息存于磁盘文件和数据库中 | 提供本区域名解析,区内域名信 息的权威。具有域名数据库。一个域有且只有一个主域名服务器 |
辅助域名服务器 | 主域名服务器的备份服务器提供域名解析服务,信息存于磁盘文件和数据库中 | 主域名服务器备份,可进行域名解析的负载均衡。具有域名数据库 |
缓存域名服务器 | 向其他域名服务器进行域名查询,将查询结果保存在缓存中的域名服务器 | 改善网络中DNS服务器的性能, 减少反复查询相同域名的时间, 提高解析速度,节约出口带宽。 获取解析结果耗时最短,没有域名数据库 |
转发域名服务器 | 负责非本地和缓存中无法查到的域名。接收域名查询请求,首先查询自身缓存,如果找不到对应的,则转发到指定的域名服务器查询 | 负责域名转发,由于转发域名服 务器同样可以有缓存,因此可以 减少流量和查询次数。具有域名 数据库 |
一个需要域名解析的用户先将该解析请求发往本地的域名服务器。如果本地的域名服务器能够解析,则直接得到结果,否则本地的域名服务器将向根域名服务器发送请求。依据根域名服务器返回的指针再查询下一层的域名服务器,依此类推,最后得到所要解析域名的IP地址。查询的两种方式:
网络存储被定义为一种特殊的专用数据存储服务器,包括存储器件(例如磁盘阵列、CD/DVD驱动器、磁带驱动器或可移动的存储介质)和内嵌系统软件,可提供跨平台文件共享功能。网络存储通常在一个LAN上占有自己的节点,无需应用服务器的干预,允许用户在网络上存取数据,在这种配置中,网络存储集中管理和处理网络上的所有数据,将负载从应用或企业服务器上卸载下来,有效降低总拥有成本。
网络存储(Network Storage)是数据存储的一种方式,网络存储结构大致分为三种:直连式存储(DAS:Direct Attached Storage)、网络附加存储(NAS:Network Attached Storage)和存储区域网(SAN:Storage Area Network)。由于NAS对于普通消费者而言较为熟悉,所以一般网络存储都指NAS。
综合布线系统是一个用于传输语音、数据、影像和其他信息的标准结 构化布线系统,是建筑物或建筑群的传输网络,它使语言和数据通信设备、 交换设备和其他信息管理系统彼此相连接。综合布线的热物理结构一般采用模块化设计和分层星型拓扑结构。系统结构有6个独立的子系统: