linux

位置:IT落伍者 >> linux >> 浏览文章

在 Linux 下配置 TCP/IP


发布日期:2019年07月15日
 
在 Linux 下配置 TCP/IP

一 关于本教程

这个教程适合我吗?

本教程首先回顾 TCP/IP 的起源然后阐述 TCP/IP 发展所依据的模型最后还讨论 TCP/IP 是如何工作的 — 包括 IP 地址子网以及路由打好这些理论基础之后我们将讨论 Linux 所需要的各种网络配置文件以及如何初始化网络接口和如何编辑系统路由表在本教程的最后我们将简要看一下如何分析网络以及如何确保数据准确无误地到达应到之处

关于作者

Tom Syroid 是个技术冒险主义者他现在是一家领先的作家机构的一名职业作家他与其他人合着了 Outlook in a Nutshell(OReilly)和 OpenLinux Secrets(IDG)同时他还擅长于 *NIX 系统管理系统安全性Apache 部署和配置以及跨不同平台的文件共享

可以通过 向他查询或提出您的意见

二 理解 TCP/IP 协议

TCP/IP 简史

近年来随着传输控制协议/网际协议(TCP/IP)套件的广泛使用它已经成为网络通信中事实上的标准这绝大部分要归功于因特网的迅猛发展以及对在不同平台设备和操作系统中以它们都理解的语言来共享数据的需要让我们首先了解 TCP/IP 的历史

世纪 年代后期美国国防部(DOD)意识到其内部日渐突出的通信问题在 DOD 工作人员研究实验室大学以及承包商之间日益增长的电子信息通信量遇到了严重的障碍组成 DOD 的不同实体和组织拥有来自不同计算机制造商的计算机系统这些计算机系统运行不同的操作系统并使用不同网络拓扑结构和协议

高级研究项目局(Advanced Research Projects AgencyARPA)被授命提出一种解决这个问题的方案ARPA 与各大学和计算机制造商结盟来开发一组通信标准该联盟确定并构建了 节点的网络这就成为当今因特网的基础 世纪 年代该网络移植到一个新的核心的协议设计中这个协议就成为 TCP/IP 的基础

开放系统互连(Open System InterconnectionOSI)模型

现在我们使用许多不同类型的计算机它们有着不同的操作系统CPU 和网络接口等等这些不同使得计算机系统间的通信出现问题国际标准化组织(ISO)创建了一个小组委员会来开发数据通信标准以促进多供应商的互操作性其结果就是开放系统互连(OSI)模型

OSI 模型并未确定任何通信标准或协议相反它只是提供了通信任务应该遵循的一些指导性建议

OSI 模型只是一种模型或框架它确定了要执行的功能理解这一点很重要它并未详细说明如何执行这些功能但是对于部分 OSI 模型ISO 也确实接纳了某些符合 OSI 标准的具体协议例如ISO 接受 CCITT X 协议该协议作为一种实现提供了 OSI 模型中网络层的大部分服务

个 OSI 层

为简单起见ISO 小组委员会采用分而治之的方法将复杂的通信过程分为较小的子任务问题就变得更容易处理每个子任务可以分别优化OSI 模型由 层组成

&#; 应用层

&#; 表示层

&#; 会话层

&#; 传输层

&#; 网络层

&#; 数据链路层

&#; 物理层

给每一层都分配了一组特定的功能每一层都使用下层的服务并为其上层提供服务例如网络层使用数据链路层的服务并为传输层提供与网络相关的服务

利用相邻层的服务和为其相邻层提供服务这种层的概念很简单考虑公司是如何运做的秘书写备忘录来向总裁(相邻的上一层)提供秘书服务秘书使用信使的服务(相邻的下一层)来发送消息通过将这些服务分开秘书(应用程序)就不必知道消息实际上是如何传递到接收者手中秘书只需要求信使(网络)发送消息即可正如许多秘书通过使用这种标准的信使服务来发送备忘录一样分层的网络可以通过将信息包交给网络层来发送这些信息包

不要将应用层与在计算机上执行的应用程序混淆(在英文中都是一个词 — application)请记住应用层是 OSI 模型的一部分它并未具体指定用户和通信路径之间的接口是如何工作的应用程序是这个接口的具体实现实际的应用程序通常执行应用层会话层和表示层的服务而将传输层网络层数据链接层和物理层服务留给网络操作系统来处理

跨层通信

每一层都与其它计算机中的同一层通信例如一个系统中的第 层与另一个计算机系统的第 层通信

当信息从一层传到下一层时会在数据前面加一个头以指出该信息的来源和目的地来自某一层的由数据和头所组成的信息块又成为下一层的数据例如当第 层将数据传递到第 层时它会添加自己的头当第 层将该信息传递到第 层时 层会将来自第 层的头加数据作为它的数据并在该数据前添加第 层的头然后才将这个头 + 数据组合传给下一层

每一层信息单元的名称都不同

应用层 > 消息

传输层> 段

网络层 > 数据报

数据链路层 > 帧(也称做信息包)

物理层 > 位

在 OSI 模型出现前美国国防部定义了它自己的网络模型即 DOD 模型DOD 模型与 TCP/IP 协议套件有紧密的联系这将在下一节说明

TCP/IP 协议栈(TCP)

TCP/IP 协议栈表示了与 OSI 模型类似的网络体系结构

但 TCP/IP 不象 OSI 模型那样详细区分协议栈的上面几层OSI 最上面的 层大致与 TCP/IP 的网际处理协议相当处理协议的一些示例有 TelnetFTPSMTPNFSSNMP 和 DNS

OSI 模型的传输层负责可靠数据的发送在网际协议栈中这对应于主机到主机协议这方面的示例是 TCP 和 UDPTCP 用来转换来自上层协议的不定长消息以及提供远程系统间必要的确认和面向连接的流控制

UDP 与 TCP 相似但它不是面向连接的而且不对数据接收进行确认UDP 仅接收消息并将其传递给上层协议因为 UDP 没有与 TCP 有关的那些开销所以它为如远程磁盘服务等操作提供更高效的接口

网际协议(IP)负责系统间无连接方式的通信它相当于 OSI 模型中网络层的一部分它负责网络间的信息移动通过检查网络层地址来完成这种通信该地址确定了发送消息的系统和路径

IP 提供与网络层相同的功能并帮助获取系统间的消息但是它不保证这些消息能够成功传送IP 还可以将这些消息分成多个段然后在目的地重组这些段另外每一段可以采用不同的网络路径在系统间传送如果这些段到达时乱了次序IP 则会在目的地将这些信息包重组成正确的序列

三 IP 寻址子网和路由

IP 地址

网际协议要求为网络上的每个设备分配一个地址这个地址就是 IP 地址它由 个八位元组成这些八位元每个都定义唯一的地址这个地址的一部分表示网络(有时也可以表示子网)而另一部分则表示网络上特定的节点

在 TCP/IP 网络中有几个地址具有特殊含义

&#; 以零开头的地址表示当前网络中的本地节点例如 指当前网络中的 号工作站地址 指当前工作站

&#; 在进行故障排除和网络诊断时 开头的地址非常重要形式上将网络地址块 xxx 定义为 A 类地址保留了该地址块以用于内部回送(loopback)

&#; 将地址上所有位全置为 (也就是值 )代表所有地址所以 意味着将消息发送给 网络上的所有节点类似的 意味着将消息发送给因特网上的每个节点这些地址用于多点广播消息和服务公告

注意给系统分配节点号时不要使用 它们都是保留数字具有特殊含义

IP 地址类型

将 IP 地址按一定范围分配称为将 IP 地址分类这取决于应用和组织的规模三种最常见的类型地址是 A 类地址B 类地址和 C 类地址这三种分类表示了可为本地网络分配的 IP 地址中位的数目

A 类地址用于非常大的网络或相关网络的集合B 类地址用于超过 个节点(但少于 个节点)的大型网络而大多数组织采用 C 类地址一个组织采用几个 C 类地址的做法是一个好主意因为 B 类地址的数量是有限的 D 类地址被保留用于网络上消息的多点广播E 类地址则被保留用于实验和开发

类 地址

A 从 xxx 到 xxx

B 从 xx 到 xx

C 从 x 到 x

D 从

E 从 xxx 到

专用IP 地址

如果您的网络没有连接到因特网而且最近也不会连接的话则可以自由选择任何合法的网络地址只是要确保您内部网络信息包不会跑到实际的因特网中即可要确保即便信息包确实跑出也不会有任何危害应该使用为专用而保留的那些网络地址的某个号码因特网赋号管理局(Internet Assigned Numbers AuthoritIANA) 已经在 AB 和 C 类地址中保留了一些网络号您无需注册就可以使用这些地址这些地址只有在专用网络中才有效而且(理论上)不会路由到实际的因特网站点中

A

B

C

请注意第二块和第三块分别包含 个和 个网络

从这些网络号码中选择一个地址对于那些完全没有连接到因特网的网络是十分有用的通过将单个主机用做网关仍然可以实现访问另一个网络(如因特网)对于本地网络而言可以通过内部专用 IP 地址来访问该网关而外部世界则通过正式注册的地址(由带宽供应商分配)知道该网关

子网和子网掩码

划分子网是将大型的实际的网络分成较小的逻辑网

上一篇:Linux 使用基本知识: 用at和cron进行任务调度

下一篇:Linux IP Masquerade mini HOWTO 中译版(1)