Luckylau's Blog

你懂网络吗(3)

本文主要是基于学习《CCNA学习指南》总结网络必备的知识。

本篇章涉及以下内容:

网络的工作原理

实现 IP 编址方案和 IP 服务,以满足中型企业分支机构网络的网络需求

DoD 模型

​ DoD 模型的进程/应用层包含大量的协议,以集成分布在 OSI 上三层(应用层、表示层和会话层)
的各种活动和职责 。

​ 主机到主机层的功能与 OSI 模型的传输层相同,定义了用于为应用程序提供传输服务的协议,它
负责解决的问题包括进行可靠的端到端通信和确保正确地传输数据,还对分组进行排序,并确保数据
的完整性。

​ 因特网层对应 OSI 模型的网络层,指定了与通过整个网络对分组进行逻辑传输相关的协议。它负
责对主机进行编址一一给它们分配 IP (因特网协议)地址,还在多个网络之间路由分组。

​ DoD 模型的最底端是网络接入层,它在主机和网络之间交换数据。网络接入层对应 OSI 模型的数
据链路层和物理层,它负责硬件编址,并定义了用于实际传输数据的协议。

DoD模型中的协议

进程/应用层协议

包括如下协议和应用程序:

Telnet

​ 它让远程客户端机器( Telnet 客户端)的用户能够访问另一台机器( Telnet 服务器)的资源。 要建立 Telnet会话,用户首先运行 Telnet 客户端软件,然后登录 Telnet 服务器 。

FTP (File Transfer Protocol ,文件传输协议 )

​ 让你能够传输文件,这可在任何两台使用它的机器之间进行。然而, FTP 不仅仅是协议,还是程序。作为协议, FTP 供应用程序使用;作为程序, FTP 供用户手工执行与文件相关的任务。FTP 让你能够访问目录和文件以及执行某些类型的目录操作,如将其移到其他目录中。

TFTP (Trivial File Transfer Protocol ,简单文件传输协议 )

​ 是 FTP 的简化版,但如果你知道自己要什么以及到哪里去寻找,也可使用它。另外,它使用起来非常简单,速度也很快。然而,它提供的功能没有 FTP 丰富。 TFTP 没有提供目录浏览功能,除发送和接收文件外什么也不能做。

NFS (NetworkFile System ,网络文件系统 )

​ 是一种致力于文件共享的协议,让两种不同的文件系统能够互操作。其工作原理大致如下:假设 NFS 服务器端软件运行在 Windows 服务器上,而 NFS 客户端软件运行在 Unix 主机上, NFS让 Windows服务器的部分 RAM 看起来像存储的是 Unix 文件,可被 Unix 用户使用。虽然 Windows 文件系统和 Unix 文件系统不同一一它们在是否区分大小写、文件名长度、安全性等方面不同,但 Unix 用户和 Windows 用户可像通常那样访问相同的文件,就像文件位于他们通常使用的文件系统中一样。

SMTP (SimpleMail Transfer Protocol,简单邮件传输协议 )

​ 解决了无处不在的邮件收发需求,它使用假脱机(排队)的方式传递邮件。邮件到达目的地后,将被存储到设备(通常是磁盘)中。目标端的服务器软件定期检查队列,看其中是否有邮件。发现邮件后,它将把它们投递给收件人。 SMTP用于发送电子邮件,而 POP3 或 IMAP 用于接收邮件。

POP (Post Office Protocol ,邮局协议 )

​ 提供了一种对到来邮件进行存储的机制,其最新版本为POP3 。 这种协议的工作原理如下:客户端设备连接到POP3 服务器后,可下载发送给它的邮件。它不允许选择性地下载邮件,但邮件下载后,客户端/服务器交互就结束了,用户可在本地随意删除和操作邮件。

MAP4 (Internet Message Access Proωcol,因特网消息访问协议 )

​ 让你能够控制邮件的下载方式,因此使用它可获得亟需的安全性。它让你能够查看邮件头或下载邮件的一部分一一你可以咬住鱼饵,而不是将其整个吞下,进而被藏在鱼饵中的鱼钩钩住。使用 IMAP 时,你可选择将邮件以层次方式存储在电子邮件服务器中,并链接到文档和用户组。lMAP 甚至提供了搜索命令,让你能够根据主题、邮件头或内容搜索邮件。可以想见,它提供了一些身份验证功能一一实际上它支持 MIT 开发的 Kerberos 身份验证方案。 lMAP4 是最新的版本。

TLS (Transport Layer Security,传输层安全 )

​ 及其前身 SSL ( Secure Sockets Layer,安全套接字层)都是加密协议,非常适合用于确保在线数据传输的安全,如 Web 浏览、即时通信、因特阿传真等。

SIP (VoIP,Session lnitiation Protocol,会话发起协议 )

​ 是一种非常流行的信令胁议,用于建立和拆除多媒体通信会话,其应用非常广泛,可用于因特网上的语音和视频呼叫、视频会议、流媒体分发、即时通信、状态信息( presence information )、在线游戏等。

RTP (Real-time Transport,实时传输协议)

​ 是一种分组格式标准,用于通过因特网传输 语音和视频。 虽然它最初被设计为一种组播协议,但现在也被用于单播应用程序中。它常被用于流式媒体、视频会议和一键通( push to talk )系统,这使其成了 VoIP (Voice over IP,四语音)行业的事实标准。

LDP(Line Printer Daemon ,行式打印机守护进程)

​ 协议设计用于共享打印机。 LPD 和 LPR (Line Printer ,行式打印机)程序相互协作,使得能够将打印作业排队并使用 TCPIIP 将其发送给网络打印机 。

XWindow

​ XWindow 是为客户端/服务器操作设计的 , 是一种编写基于 GUI (Graphical User Interface ,图形用户界面)的客户端/服务器应用程序的协议。其基本思想是,让运行在一台计算机上的客户端程序能够通过窗口服务器显示另一台计算机的内容。

SNMP

​ SNMP (Simple Network Management Protocol ,简单网络管理协议)收集并操作有价值的网络信息。它运行在管理工作站上,定期或随机地轮询网络中的设备,要求它们暴露特定的信息,以收集数据。在一切正常的情况下, SNMP将收到基线 (baseline) 信息 , 即描述健康网络运行特征的报告。该协议还可充当网络的看门狗,将任何突发事件迅速告知管理员 。

SSH

​ 安全外壳 (SSH) 协议通过标准 TCPIIP 连接建立安全的 Telnet会话,用于执行如下操作:登录系统、在远程系统中运行程序以及在系统间传输文件等。它在执行这些操作时都使用健壮的加密连接。你可将其视为用于替代 rsh 、 rlogin 甚至 Telnet 的新一代协议。

HTTP
​ 所有出色的网站都会包含图像、文本、链接等,这一切都是拜 HTTP ( Hypertext Transfer Protocol ,超文本传输协议)所赐。 它用于管理 Web 浏览器和 Web 服务器之间的通信,在你单击链接时打开相应的资源,而不管该资源实际位于何地。

HTTPS
​ HTTPS(Hyp巳rtext Transfer Protoco1 Secure ,安全超文本传输协议)使用 SSL ( Secure Socket Layer ,
安全套接字层),有时也称为 SHTTP 或 S-HTTP( 这是一个 HTTP 扩展,不使用 SSL ),但这无关紧要。顾名思义,它是安全版盯TP ,提供了一系列安全工具,可确保 Web 浏览器和 Web 服务器之间的通信安全。当你在网上预订或购物时,浏览器需要使用它来填写表格、签名、验证和加密 HTTP 消息。

NTP
​ NTP (Network Time Protoco1 ,网络时间协议)用于将计算机时钟与标准时间源(通常是原子钟)同步,由特拉华大学的 DavidMills 教授开发 。 NTP 将设备同步,确保给定网络中所有计算机的时间一致。这虽然听起来非常简单,但却非常重要,因为当今的很多交易都需要指出时间和日期。想想你的数据库吧,如果服务器不与相连的计算机同步,哪怕只相差几秒,也会带来严重的混乱(甚至崩溃)。如果某台机器在凌晨 1:50 发起交易,而服务器将交易时间记录为 1:45 ,交易将无法完成。

NNTP
​ NNTP (Network News TransferProtoco1 ,网络新闻传输协议)用于访问 Usenet新闻服务器,这种服务器存储了大量称为新闻组的留言板。你可能知道,这些新闻组可以是任何有特定兴趣的人群。例如,如果你是某款经典车型的发烧友或 WWII 飞机爱好者很可能有大量基于这些兴趣爱好的新闻组供你加入。 NNTP 是在RFC977 中定义的。鉴于新闻阅读器程序的配置非常复杂,我们通常依靠很多网站(甚至搜索引擎)来访问各种资源。

SCP
​ FTP 很好,它易于使用,是一种用户友好型文件传输方式一一前提是你不需要安全地传输这些文件。这是因为使用 FTP 传输数据时,将随文件请求以明文方式发送用户名和密码,根本没有加密,任何人都能看到。这就像绝境中的孤注一掷,你只是将信息发送出去,并析祷信息不要被坏人拦截。在这样的场合, SCP ( Secure Copy Protoco1 ,安全复制协议)可提供帮助,它通过 SSH 保护你金贵的文件。它首先在发送主机和接收主机之间建立一条安全的加密连接,并一直保持这种状态,直到文件传输完毕。有了 SCP ,你孤注一掷抛出的球将只能被目标接收方获得!然而,在当今的网络中,更健壮的 SFTP 比 SCP 更常用。

LDAP
​ 如果管理的网络规模适当,你很可能会在某个地方存储目录,记录所有的网络资源,如设备和用户。但如何访问这些目录呢?通过 LDAP (Lightweight Directory Access Protocol ,轻量级目录访问协议)。该协议对如何访问目录进行了标准化,其第 l 版和第 2 版分别是在RFC 1487 和RFC 1777 中定义的。这两个版本存在一些缺陷,为解决这些问题,人们开发了第 3 版 LDAP (当前最常用的版本),这是在RFC3377 中定义的。

IGMP (Internet Group Management Protocol ,因特网组管理协议)
​ IGMP是一种用于管理 IP 组播会话的TCPIIP 协议,它这样完成其职责:通过网络发送唯一的 IGMP 消息,以揭示组播组信息,并找出主机所属的组播组。 IP 网络中的主机也使用 IGMP 消息来加入和退出组播组。 IGMP 消息非常方便用于跟踪组成员关系以及激活组播流。

LPR
​ 在纯粹的 TCP/IP 环境中打印时,人们通常结合使用 LPR (行式打印机)和 LPD (Line Printer Daemon ,行式打印机守护进程)来完成打印作业。 LPD 安装在所有打印设备上,负责处理打印机和打印作业。 LPR 运行于客户端(发送主机),用于将数据从主机发送到网络打印资掘,让你能够得到打印输出。

DNS ( Domain Name Service,域名服务)

​ 解析主机名,DNS 用于解析 FQDN (Fully Qualified Domain Name ,全限定域名),FQDN 是一种层次结构,可根据域名标识符查找系统。

DHCP/BootP (Dynamic Host Configuration Protocol,动态主机配置协议 )

​ 给主机分配 IP 地址,让管理工作更轻松,非常适合用于各种规模的网络。 DHCP 与 BootP (Bootstrap Protocol ,自举协议)的差别在于, BootP 给主机分配地址,但必须手工将主机的硬件地址输入到 BootP表中。你可将 DHCP 视为动态的 BootP。但别忘了, BootP也可用于发送操作系统,让主机使用它启动,而 DHCP 没有这样的功能。DHCP 是无连接的,这意味着它在传输层使用 UDP 。DHCP 服务器和客户端之间的交互如下:

DHCP 客户端广播一条 DHCP 发现消息,旨在寻找 DHCP 服务器(端口 67 );

收到 DHCP 发现消息的 DHCP 服务器向主机发回一条单播 DHCP 提议消息;

客户端向服务器广播一条 DHCP 请求消息,请求提议的 IP 地址和其他信息;

服务器以单播方式发回一条 DHCP 确认消息,完成交互。

APIPA (Automatic Private IP Addressing ,自动私有 IP编址 )

​ 客户端可在 DHCP 服务器不可用时自动给自己配置 IP 地址和子网掩码(主机用来通信的基本 IP 信息 )。APIPA 使用的Ip 地址范围为169.254.0.1-169.254.255.254 ,客户端还会给自己配置默认的 B 类子网掩码一255.255.0.0 。

DHCP , SNMP 和 TFTP 使用 UDP ,而 SMTP , FTP 和 HTTP 使用 TCP .

主机到主机层协议

TCP (Transmission Control Protocol,传输控制协议 )

​ 接收来自应用程序的大型数据块,并将其划分成数据段。它给每个数据段编号,让接收主机的 TCP 技能够按应用程序希望的顺序排列数据段。发送数据段后,发送主机的 TCP 等待来自接收端 TCP 的确认,并重传未得到确认的数据段。

TCP 数据段的格式

TCP 报头长 20B (在包含选项时为 24B),你必须理解 TCP 数据段中的每个字段。

源端口 发送主机的应用程序的端口号

目标端口 目标主机的应用程序的端口号

序列号 一个编号, TCP 用来将数据按正确的顺序重新排列(称为排序)、 重传丢失或受损的数据。

确认号 TCP 期待接下来收到的数据段。

报头长度 TCP 报头的长度,以 32 位字为单位。它指出了数据的开始位置, TCP 报头的长度为 32 位的整数倍,即使包含选项时亦如此。

保留 总是设置为零。

编码位/标志 用于建立和终止会话的控制功能。

窗口大小 发送方愿意接受的窗口大 。

校验和 CRC (Cyclic Redundancy Check ,循环冗余校验) 由于 TCP 不信任低层,因此检查所有数据。 CRC 检查报头和数据字段。

紧急 仅当设置了编码位中的紧急指针字段时,该字段才有效。如果设置了紧急指针,该字段表示非紧急数据的开头位置相对于当前序列号的偏移量,单位为字节。

选项 长度为 0 或 32 位的整数倍 也就是说,没有选项时,长度为 0。然而,如果包含选项时导致该字段的长度不是 32 位的整数倍,必须填充零,以确保该字段的长度为 32 位的整数倍。

数据 传递给传输层的 TCP 协议的信息,包括上层报头。

UDP

​ 在有些情况下,开发人员选择 UDP 而不是 TCP 是绝对明智的,例如当进程/应用层已确保了可靠性时。 NFS (Network File System,网络文件系统)处理了自己的可靠性问题,这使得使用 TCP 既不现实也多余。但归根结底,使用 UDP 还是 TCP 取决于应用程序开发人员,而不是想更快地传输数据的用户。

​ UDP 不对数据段排序,也不关心数据段到达目的地的顺序。

​ UDP 不建立虚电路,也不在发送信息前与接收方联系。

UDP 数据段的格式 :

源端口号 发送主机的应用程序的端口号。

目标端口号 目标主机上被请求的应用程序的端口号。

长度 UDP 报头和 UDP 数据的总长度。

校验和 UDP 报头和 UDP 数据的校验和。

数据 上层数据。

对比总结:

端口

源主机从范围 1024-65535 中选择一个源端口 ,目的主机的端口一般是知名端口。

数据链路层和网络层协议分别使用硬件地址和逻辑地址标识发送主机,但 TCP 和上层协议不这样做,
它们使用端口号。

因特网层协议

​ 在 DoD 模型中,因特网层的作用有两个:路由选择以及提供单个到上层的网络接口。在网络中,并非条条道路通罗马,而是条条道路通 IP ,因特网层以及上层的所有协议都使用 IP 。接下来将介绍因特网层协议:

因特网协议 (IP)

因特网控制消息协议 (ICMP )

地址解析协议 (ARP)

逆向地址解析协议 (RARP)

代理 ARP

免费 ARP

IP ( Internet Protocol ,因特网协议 )

​ 该层的其他协议都只是为它提供支持。IP 掌控全局,可以说”一切尽收它眼底”,从这种意义上说,它了解所有互联的网络。它之所以能够这样,是因为网络中的所有机器都有一个软件(逻辑)地址,这种地址称为 IP地址。

​ IP 查看每个分组的地址,然后使用路由选择表判断接下来应将分组发送到哪里,从而选择最佳路径。在 DoD 模型底部的网络接入层协议不像 IP 那样胸怀整个网络,它们只处理物理链路(本地网络)。

​ 要标识网络中的设备,需要回答两个问题:设备位于哪个网络中?它在该网络中的 ID 是多少?对于第一个问题,答案是软件(逻辑)地址(正确的街道); 对于第二个问题,答案是硬件地址(正确的邮箱)。网络中的所有主机都有一个逻辑 ID,称为 IP 地址,它属于软件(逻辑)地址,包含宝贵的编码信息,极大地简化了路由选择这种复杂的任务。

​ 网络中的所有主机都有一个逻辑 ID,称为 IP 地址,它属于软件(逻辑)地址,包含宝贵的编码信息,极大地简化了路由选择这种复杂的任务。IP 接收来自主机到主机层的数据段,并在必要时将其划分成数据报(分组)。在接收端, IP 将数据报重组成数据段。每个数据报都包含发送方和接收方的 IP 地址,路由器(第 3 层设备)收到数据报
后,将根据分组的目标 IP 地址做出路由选择决策。

IP 报头 如下:

版本 IP 版本号。

报头长度报头的长度 单位为 32 位字。

优先级和服务类型 服务类型指出应如何处理数据报,前 3 位为优先级位,当前称为区分服务位。总长度整个分组的长度 包括报头和数据。

标识 唯一的 IP分组值,用于区分不同的数据报。

标志 指出是否进行了分段。

分段偏移 在分组太大,无法放入一个帧中时,提供了分段和重组功能。它还使得因特网上可有不同的 MTU (Maximum Transmission Unit,最大传输单元)。

存活时间 生成分组时给它指定的存活时间。如果分组到达目的地之前 TTL就已到期,分组将被丢弃。这可避免 IP 分组因寻找目的地不断在网络中传输。

协议 上层协议的端口 (TCP 为端口 6 , UDP 为端口 7)。还支持网络层协议,如 ARP和ICMP (在有些分析器中,该字段称为类型字段)。稍后我们将更详细地讨论该字段。

报头 校验和对报头执行 CRC 的结果。

源IP 地址 发送方的 32 位 IP 地址。

目标 IP 地址 接收方的 32 位 IP 地址。

选顶用于网络测试、调试、安全等。

数据位于选项字段后,为上层数据。

可能在IP报头的协议字段中指定的协议号

ICMP ( Internet Control Message Protocol ,因特网控制消息协议)

​ 运行在网络层, IP 使用它来获得众多服务。 ICMP 是一种管理协议,为IP提供消息收发服务,其消息是以 IP 数据报的形式传输的。

ICMP 分组具有如下特征:

可向主机提供有关网络故障的信息。

封装在IP数据报中。

与 ICMP相关的常见事件和消息:

目标不可达

如果路由器不能再向前转发 IP 数据报,它将使用 ICMP 向发送方发送一条消息,以通告这种情况。

缓冲区已满

如果用于接收数据报的路由器内存缓冲区已满,路由器将使用 ICMP 发送这种消息,直到拥塞解除。

超过跳数/时间

对于每个 IP 数据报,都指定了它可穿越的最大路由器数量(跳数)。如果数据报还未达到目的地就达到了该上限,最后一台收到该数据报的路由器将把它删除。然后,该路由器将使用 ICMP 发送一条协告,让发送方知道其数据报已被删除。

Ping Packet Internet Groper (Ping , 分组因特网探测器) 使用 ICMP 回应请求和应答消息,以检查互联网络中机器的物理连接性和逻辑连接性。

Traceroute 使用 ICMP 超时来发现分组在互联网络中传输时经过的路径。

虽然 ICMP 运行在因特网(网络)层,它仍使用 IP 来发出Ping 请求,你注意到这一点了吗?在 P 报头中,类型字段的值为 OxOl ,这表明数据报中的数据属于ICMP 协议。别忘了,条条道路通罗马,同样,所有数据段或数据都必须通过 IP 传送。

ARP (Address Resolution Protocol ,地址解析协议)

​ 根据已知的 IP 地址查找主机的硬件地址 , 其工作原理如下: IP需要发送数据报时,它必须将目标端的硬件地址告知网络接入层协议,如以太网或无线。(上层协议已经将目标端的 IP 地址告诉它)如果 IP 在 ARP 援存中没有找到目标主机的硬件地址,它将使用 ARP 获悉这种信息。

RARP

如果 IP 主机为无盘计算机,一开始它不知道自己的 IP 地址,但知道自己的 MAC 地址。无盘机器可使用RARP (Reverse Address Resolution Protocol,逆向地址解析协议)来获悉其IP 地址,这是通过发送一个分组实现的,该分组包含元盘计算机的 MAC 地址和一个请求( 请求提供分配给该 MAC 地址的 IP 地址 )。名叫 RARP 服务器的专用机器将对此作出响应,从而解决身份危机。RARP 使用它知道的信息(即机器的 MAC 地址)来获悉机器的 IP 地址,从而完成身份标识。

RARP 将以太网 (MAC) 地址解析为IP 地址。

代理 ARP

在网络中,我们不能给主机配置多个默认网关。请想一想,如果默认网关(路由器)发生故障,结果将如何呢?主机不能自动将数据发送给另一台路由器,而你必须重新配置主机。但代理 ARP 可帮助主机前往远程子网,而无需配置路由选择甚至默认网关。

使用代理 ARP 的优点之一是,我们可在网络中的一台路由器上启用它,而不影响网络中其他路由器的路由选择表。然而,使用代理 ARP 也存在一个严重的缺陆:使用代理 ARP 将增加网段中的流量,而为处理所有的 IP 地址到 MAC 地址的映射,主机的 ARP 表比通常情况下大。

代理 ARP 并非一种独立的协议,而是路由器代表其他设备(通常是 PC) 运行的一种服务,路由器禁止这些设备查询远程设备,虽然在这些设备看来,它们与远程设备位于同一个子网中。
这让路由器能够在响应 ARP查询时提供自己的 MAC地址,从而将远程 IP地址解析为有效的 MAC地址。

IP 编址

IP 地址是分配给 IP 网络中每台机器的数字标识符,它指出了设备在网络中的具体位置。

基本术语

比特 一个比特相当于一位,其取值为 1 或 0 。

字节 1 B 为 7 或 8 位,这取决于是否使用奇偶校验。 我们都假定是8位。

八位组 (Octet) 由 8 位组成,是普通的 8 位二进制数 ,术语字节和八位组可互换使用。

网络地址 在路由选择中,使用它将分组发送到远程网络 。

广播地址 应用程序和主机用于将信息发送给网络中所有节点的地址。

A 类地址

在 A 类地址中,第一个字节为网络地址,余下的 3B 为节点地址,A 类网络地址的第一个字节的第一位必须为 0 ,A 类地址第一个字节的取值为 0-127(2的7次方)

A 类地址的网路地址数目126个

A 类地址用3B表示节点地址,主机数目为2的24次方-2(全为0和全为1)=16 777 214 个

B类地址

在 B 类地址中,前 2B 为网络地址,余下的 2B 为节点地址 ,B 类网络地址的第一个字节的第一位必须为 1 ,且第二位必须为 0, B 类网络地址第一个字节的取值为 128 -191

B类地址的网路地址要以二进制10开头,因此有2的14次方=16 384

B类地址用 2B 表示节点地址 ,主机数目为2的16次方-2(全为0和全为1)=65534 个

C 类地址

C 类地址的前 3 个字节为网络部分,余下的一个字节表示节点地址,C 类网络地址的第一个字节的前两位必须为 1 ,而第三位必须为 0 , C 类网络地址第一个字节的取值为 192-223

C类地址的网路地址要以二进制110开头,因此有2的21次方-2(全为0和全为1)=2097 152 个

C 类网络用1B 用作节点地址,主机数目为 2的8次方 - 2 (全为 1 和全为 0 ),即 254 个节点地址

私有IP地址

D 类和 E 类网络地址范围

第一个字节为 224-255 的地址被保留用于 D 类和 E 类网络。 D 类 (224 - 239 )用作组播地址,而 E 类( 240 - 255 )用于科学用途。

IPv4 地址类型

第 2 层广播地址 表示 LAN 中的所有节点 ,即FF:FF:FF:FF:FF:FF 。

广播(第 3 层) 地址表示网络中的所有节点 其目标地址的主机位都为 1 。

单播地址 这是特定接口的地址,用于将分组发送给单个目标主机 。

组播地址 用于将分组传输到不同网络中的众多设备,常用一对多来形容 。组播确实支持点到多点通信,这类似于广播,但工作原理不同。组播的关键点在于,它让多个接收方能够接收消息,却不会将消息传递给广播域中的所有主机。然而,这并非默认行为,而是在配置正确的情况下,使用组播达到的。组播地址的范围为 244.0.0.0 - 239.255.255.255

Luckylau wechat
如果对您有价值,看官可以打赏的!