TCP/IP基础知识大全~~~
TCP/IP
TCP/IP简史TCPIIP1973年面世,并于1978年被划分成两个协议:TCP和田。1983年,TCPIIP取代了NCP_ (NetworkControlProtocol,网络控制协议),并被批准成为官方数据传输方式,用于任何连接到ARPnet匾.的网络。ARPnet是因特网的前身,由ARPA(美国国防部高级研究计划署)开发,而ARPA是为应对前苏联的人造地球卫星计划于1957年成立的。不久后,ARPA改名为DARPA并被划分为ARPAnetMIL(同样发生在1983年),这两个部门都于1990年解散。
但出乎你想象的是,大部分TCPIIP开发工作都是由位于加州北部的加州大学伯克利分校完成的。在加州大学伯克利分校,当时还有一个科学家小组在开发伯克利分校的UNIX版本,这一系列UNIX版本称为BSD(BerkeleySowareDistribution)。当然,鉴于TCPIIP很好,它被集成到了后续的BSDUNIX中,并提供给其他购买了该软件的大学和机构。因此,BSDUNIXTCPIIP最初基本上是学术界的一个共享软件,这使其成了当前取得巨大成功并呈几何级数增长的因特网的基础,也是小型私有企业内联网的基础。
就这样,虽然最初的TCPIIP狂热者不多,但随着它的发展,美国政府制定了测试计划,对新发布的标准进行测试,确保它们符合特定的标准。这旨在保护TCPIIP的完整性,避免开发人员对其做剧烈的修改或添加专用功能。正是这种特质(TCPIIP系列协议采用的开放系统方法)让TCPIIP得以流行,因为它确保各种硬件和软件平台能够彼此无条件互联。
DoD模型是OSI模型的精简版,它包含层(而不是7层):
口 进程/应用层:
口 主机到主机层;
口 因特网层;
口 网络接入层。
图3-1对DoD模型和OSI参考模型进行了比较。正如你看到的,这两个模型在概念上是相似的,但它们包含的层数不同,各层的名称也不同。
注意:讨论 裁中的各种协议时, OSI和Do模型的层可互换。换句话说,因特网层 和网络层是一回事,而主机到主机层和传输层是一回事。
DoD模型的进程/应用层包含大量的协议,以集成分布在OSI上三层(应用层、表示层和会话层) 的各种活动和职责,本章后面将深入介绍这些协议。进程/应用层定义了用于节点间应用程序通信的协 议,还定义了用户界面规范。主机到主机层的功能与OSI模型的传输层相同,定义了用于为应用程序提供传输服务的协议,它负责解决的问题包括进行可靠的端到端通信和确保正确地传输数据,还对分组进行排序,并确保数据的完整性。
因特网层对应OSI模型的网络层,指定了与通过整个网络对分组进行逻辑传输相关的协议。它负 责对主机进行编址一一给它们分配IP(因特网协议)地址,还在多个网络之间路由分组。DoD模型的最底端是网络接入层,它在主机和网络之间交换数据。网络接入层对应 OSI模型的数 据链路层和物理层,它负责硬件编址,并定义了用于实际传输数据的协议。DoD模型和OSI模型在设计和概念上相似,且对应层的功能也类似。图3-2显示了TCPIIP 协议 簇以及其中协议对应的DoD模型层。
1.TeInet
Telnet是这些协议中的变色龙,专司终端模拟。它让远程客户端机器(Telnet 客户端)的用户能够访问另一台机器( Telnet服务器)的资源。为此, Telnet 在Telnet服务器上耍花招,让客户端机器看起来像是与本地网络直接相连的终端。这实际上是使用软件营造的假象一可 与选定的远程主机交互的虚拟终端。
这些模拟终端使用文本模式,可执行指定的操作,如显示菜单,让用户能够选择选项以及访问服务器的应用程序。要建立Telnet会话,用户首先运行Telnet客户端软件,然后登录Telnet服务器。
2. FTP
FIP ( File Transfer Protocol,文件传输协议)让你能够传输文件,这可在任何两台使用它的机器之间进行。然而,FTP不仅仅是协议,还是程序。作为协议,FTP供应用程序使用;作为程序, FTP供用户手工执行与文件相关的任务。FtTP 让你能够访问目录和文件以及执行某些类型的目录操作,如将其移到其他目录中。
通过FTP访问主机只是第-步,随后用户必须通过身份验证登录,因为系统管理员可能使用密码和用户名来限制访问。要避开这种身份验证,可使用用户名anonymous,但这样获得的访问权将受到限制。
即使被用户用作程序,FTP 的功能也仅限于列出和操作目录、输人文件内容以及在主机之间复制文件,而不能远程执行程序。
3. TFTP
TFTP ( Trivial File Transfer Protocol,简单文件传输协议)是FTP的简化版,但如果你知道自己要什么以及到哪里去寻找,也可使用它。另外,它使用起来非常简单,速度也很快。然而,它提供的功能没有FTP丰富。TFTP没有提供目录浏览功能,除发送和接收文件外什么也不能做。这个紧凑的小协议的开销很小,它发送的数据块比FTP发送的小得多,也不像FTP那样需要进行身份验证,因此更不安全。鉴于这种固有的安全风险,支持它的网站很少。
4. NFS
NFS ( Network File System,网络文件系统)是-种致力于文件共享的协议,让两种不同的文件系统能够互操作。其工作原理大致如下:假设NfS服务器端软件运行在Windows服务器上,而NFS客户端软件运行在Unix主机上,NFS 让Windows服务器的部分RAM看起来像存储的是Unix文件,可被Unix用户使用。虽然Windows文件系统和Unix文件系统不同一它们在是否区分大小写、 文件名长度、安全性等方面不同,但Unix用户和Windows用户可像通常那样访问相同的文件,就像文件位
于他们通常使用的文件系统中一样。
真实案例
什么情况下应使用FTP?
旧金山办事处的同事要求你立刻将一个50GB的文件发送给他,你该如何办呢?大多数电子邮件服务器都会拒绝这样的邮件,因为它们对邮件大小有限制。即使对邮件大小没有限制,将这样大的文件发送到旧金山也需要一段时间。此时,FTP可提供帮助。如果你需要将大型文件给他人或需要从他人那里获取大型文件,FTP 是不错的选择。如果你安装了DSL或有线电视调制解调器,对于较小的文件(小于5MB),只需通过电子邮件发送。然而,大多数ISP都不允许电子邮件附件超过5MB或10MB,因此需要收发大型文件时(这年头谁不需要呢),FTP是你应该考虑的一种选择。要使用FTP,你需要在因特网上搭建服务器,以便能够共享文件。
另外,FTP的速度比电子邮件快,这是使用FTP收发大型文件的另一个原因。还有,它使用TCP,是面向连接的,所以如果会话中断, FTP可从中断的地方续传。电子邮件客户端不支持续传!
5. SMTP
SMTP ( Simple Mail Transfer Protocol,简单邮件传输协议)解决了无处不在的邮件收发需求,它使用假脱机(排队)的方式传递邮件。邮件到达目的地后,将被存储到设备( 通常是磁盘)中。目标端的服务器软件定期检查队列,看其中是否有邮件。发现邮件后,它将把它们投递给收件人。SMTP用于发送电子邮件,而POP3或IMAP用于接收邮件。
6. POP
POP ( Post Office Protocol,邮局协议)提供了一种对到来邮件进行存储的机制,其最新版本为POP3。这种协议的工作原理如下:客户端设备连接到POP3服务器后,可下载发送给它的邮件。它不允许选择性地下载邮件,但邮件下载后,客户端/服务器交互就结束了,用户可在本地随意删除和操作邮件。接下来将介绍-种更新的标准一一IMAP, 它正逐渐取代POP3,这是什么原因呢?
7. IMAP4
由于IMAP4 ( Internet Message Access Protocol,因特网消息访问协议)让你能够控制邮件的下载方式,因此使用它可获得亟需的安全性。它让你能够查看邮件头或下载邮件的- -部分——你可以咬住鱼饵,而不是将其整个吞下,进而被藏在鱼饵中的鱼钩钩住。使用IMAP时,你可选择将邮件以层次方式存储在电子邮件服务器中,并链接到文档和用户组。IMAP甚至提供了搜索命令,让你能够根据主题、邮件头或内容搜索邮件。可以想见,它提供了一些身份验证功能一实际 上它支持MIT开发的Kerberos身份验证方案。IMAP4 是最新的版本。
8.TLS
TLS ( Transport Layer Security, 传输层安全)及其前身SSL ( Secure Sockets Layer,安全套接字层)都是加密协议,非常适合用于确保在线数据传输的安全,如Web浏览、即时通信、因特网传真等。它们极其相似,本书不详细介绍它们之间的差别。
9. SIP (VoIP)
SIP ( Session Initiation Protocol,会话发起协议)是yi 种非常流行的信令协议,用于建立和拆除多媒体通信会话,其应用非常广泛,可用于因特网上的语音和视频呼叫、视频会议、流媒体分发、即时通信、状态信息( presence information )在线游戏等。
10. RTP (VoIP)
RTP ( Realtime Transport Protocol, 实时传输协议)是-种分组格式标准,用于通过因特网传输语音和视频。虽然它最初被设计为-种组播协议,但现在也被用于单播应用程序中。它常被用于流式媒体、视频会议和一键通(push to talk)系统,这使其成了VoIP ( Voice over IP, IP 语音)行业的事实标准。
11. LDP
LDP ( Line Printer Daemon,行式打印机守护进程)协议设计用于共享打印机。LPD和LPR ( LinePrinter,行式打印机)程序相互协作,使得能够将打印作业排队并使用TCP/IP将其发送给网络打印机。
12. X Window
X Window是为客户端/服务器操作设计的,是一种编写基于GUI ( Graphical User Interface,图形用户界面)的客户端/服务器应用程序的协议。其基本思想是,让运行在一台 计算机上的客户端程序能够通过窗口服务器显示另一台计算机的内容。
13. SNMP
SNMP ( Simple Network Management Protocol, 简单网络管理协议)收集并操作有价值的网络信息。它运行在管理工作站上,定期或随机地轮询网络中的设备,要求它们暴露特定的信息,以收集数据。在一切正常的情况下,SNMP将收到基线( baseline)信息,即描述健康网络运行特征的报告。该协议还可充当网络的看门狗,将任何突发事件迅速告知管理员。这些网络看门狗称为代理,出现异常情况时,代理将向管理工作站发送称为trap的警告。
SNMP版本1、版本2和版本3
SNMP第1版和第2版相当陈旧了,然而你仍会在网络中遇到它们,但v1很旧,已经过时了。SNMPv2做了改进,尤其在性能方面,它添加的最佳功能之一是GET-BULK,让主机能够一次获取大量数据。然而,在网络领域,v2从未流行过。SNMPv3是最新的标准,它使用TCP和UDP,而v1只使用UDP。v3进一步提高了安全性和消息完整性、身份验证和加密。
14. SSH
安全外壳( SSH )协议通过标准TCP/IP连接建立安全的Telnet会话,用于执行如下操作:登录系统、在远程系统中运行程序以及在系统间传输文件等。它在执行这些操作时都使用健壮的加密连接。你可将其视为用于替代rsh、rlogin 甚至Telnet的新-代协议。
15. HTTP
所有出色的网站都会包含图像、文本、链接等,这一切都是拜HTTP ( Hypertext Transfer Protocol,超文本传输协议)所赐。它用于管理Web浏览器和Web服务器之间的通信,在你单击链接时打开相应的资源,而不管该资源实际位于何地。
16. HTTPS
HTTPS ( Hypertext Transfer Protocol Secure,安全超文本传输协议)使用SSL ( Secure Socket Layer,安全套接字层),有时也称为SHTTP或S-HTTP (这是一个HTTP扩展,不使用SSL),但这无关紧要。顾名思义,它是安全版HTTP,提供了一系列安全工具,可确保Web浏览器和Web服务器之间的通信安全。当你在网上预订或购物时,浏览器需要使用它来填写表格、签名、验证和加密HttP消息。
17. NTP
NTP ( Network Time Protocol,网络时间协议)用于将计算机时钟与标准时间源( 通常是原子钟)同步,由特拉华大学的David Mills教授开发。NTP将设备同步,确保给定网络中所有计算机的时间一致。这虽然听起来非常简单,但却非常重要,因为当今的很多交易都需要指出时间和日期。想想你的数据库吧,如果服务器不与相连的计算机同步,哪怕只相差几秒,也会带来严重的混乱(甚至崩溃)。如果某台机器在凌晨1:50 发起交易,而服务器将交易时间记录为1:45,交易将无法完成。因此,NTP可避免因“没有Delorean"就回到未来”而导致网络崩溃,这点确实非常重要。
18. NNTP
NNTP ( Network News Transfer Protocol,网络新闻传输协议)用于访问Usenet新闻服务器,这种服务器存储了大量称为新闻组的留言板。你可能知道,这些新闻组可以是任何有特定兴趣的人群。例如,如果你是某款经典车型的发烧友或WWII飞机爱好者,很可能有大量基于这些兴趣爱好的新闻组供你加入。NNTP是在RFC977中定义的。鉴于新闻阅读器程序的配置非常复杂,我们通常依靠很多x网站(甚至搜索引擎)来访问各种资源。
19. SCP
FTP很好,它易于使用,是-种用户友好型文件传输方式一前 提是你不需要安全地传输这些文件。这是因为使用FTP传输数据时,将随文件请求以明文方式发送用户名和密码,根本没有加密,任何人都能看到。这就像绝境中的孤注一掷,你只是将信息发送出去,并祈祷信息不要被坏人拦截。在这样的场合,SCP ( Secure Copy Protocol,安全复制协议)可提供帮助,它通过SSH保护你金贵的文件。它首先在发送主机和接收主机之间建立一条安全的加密连接,并一直保持这种状态, 直到文件传输完毕。有了SCP,你孤注-掷抛出的球将只能被目标接收方获得!然而,在当今的网络中,更健壮的SFTP比SCP更常用。
20. LDAP
如果管理的网络规模适当,你很可能会在某个地方存储目录,记录所有的网络资源,如设备和用户。但如何访问这些目录呢?通过LDAP ( Lightweight Directory Access Protocol,轻量级目录访问协议)。该协议对如何访问目录进行了标准化,其第1版和第2版分别是在RFC 1487和RFC 1777中定义的。这两个版本存在一些缺陷, 为解决这些问题,人们开发了第3版LDAP (当前最常用的版本),这是在RFC 3377中定义的。
注意:
从1969年开始,请求评论(RFC)形成了一系列因特网(最初为ARPAnet)注释。这些注释讨论了计算机通信的很多方面,它们的重点是协议、规程、程序和概念,但也包含会议记录、观点和幽默故事。要寻找RFC,可访问www.iana.org。
21. IGMP
IGMP ( Internet Group Management Protocol,因特网组管理协议)是-种用于管理IP组播会话的TCP/P协议,它这样完成其职责:通过网络发送唯一的IGMP消息,以揭示组播组信息,并找出主机所属的组播组。IP 网络中的主机也使用IGMP消息来加人和退出组播组。IGMP消息非常方便用于跟踪组成员关系以及激活组播流。
22. LPR
在纯粹的TCP/IP 环境中打印时,人们通常结合使用LPR (行式打印机)和LPD ( Line PrinterDaemon,行式打印机守护进程)来完成打印作业。LPD安装在所有打印设备上,负责处理打印机和打印作业。LPR运行于客户端(发送主机),用于将数据从主机发送到网络打印资源,让你能够得到打印输出。
23. DNS
DNS ( Domain Name Service,域名服务)解析主机名,具体地说是因特网名称,如www.routersim.com。你并非一定要使用DNS,可只输人要与之通信的设备的IP地址。IP 地址表示网络和因特网中的主机,然而,DNS旨在让我们的生活更便捷。想想下面这种情形:如果要将网页移到另一家服务提供商,结果将如何呢? IP 地址将改变,但没有人知道新的IP地址。DNS让你能够使用域名指定IP地址,你可以随时修改IP地址,而不会有人感觉到有何不同。DNS用于解析FQDN ( Fully Qualifed Domain Name,全限定域名),如www.lammle.com 或todd.lammle.com。FQDN是-种层次结构,可根据域名标识符查找系统。如果要解析名称todd,则要么输人FQDN todd.lammle.com,要么让设备( 如PC或路由器)帮助你添加后缀。例如,在思科路由器中,你可使用命令ip domain-name Tammle. com给每个请求加上域名lammle.com。如果不这样做,则你必须输人FQDN,这样DNS才能对名称进行解析。
提示:有关DNS需要牢记的一个重点是,如果能够使用IP地址ping某台设备,但使用其FQDN不管用,则可能是DNS配置有问题。
24. DHCP/BootP
DHCP ( Dynamic Host Configuration Protocol,动态主机配置协议)给主机分配IP地址,让管理工作更轻松,非常适合用于各种规模的网络。各种类型的硬件都可用作DHCP服务器,包括思科路由器。DHCP与BootP ( Bootstrap Protocol,自举协议)的差别在于,BootP给主机分配IP地址,但必须手工将主机的硬件地址输入到BootP表中。你可将DHCP视为动态的BootP。但别忘了,BootP 也可用于发送操作系统,让主机使用它启动,而DHCP没有这样的功能。主机向DHCP服务器请求IP地址时,DHCP服务器可将大量信息提供给主机。下面是DHCP服务器可提供的信息列表:
口 IP地址;
口 子网掩码;
口 域名;
口 DNS服务器的地址;
口 WINS服务器的地址。
DHCP服务器还可提供其他信息,但上面列出的信息是最常见的。为获得IP地址而发送DHCP发现消息的主机在第2层和第3层都发送广播:
口 第2层广播的地址在十六进制表示下全为F,即FF:FF:FF:FF:FF:FF;
口 第3层广播的地址为255.255.255.255,这表示所有网络和所有主机。
DHCP是无连接的,这意味着它在传输层使用UDP ( User Datagram Protocol,用户数据报协议)这层也叫主机到主机层,稍后将介绍它。为防止你不相信我,下 面是我信任的分析器的输出示例:
Ethernet II,Src: 0.0.0.0 (00:0b: db:99:d3:5e),Dst: Broadcast(ff:ff:ff:ff:ff:ff)
Internet Protoco1, Src: 0.0.0.0 (0.0.0.0),Dst: 255.255.255.255(255.255.255.255)
数据链路层和网络层都给“全体成员”发送广播,指出“帮帮我,我不知道自己的IP地址”。
!注意
图3-3说明了DHCP服务器和客户端之间的交互。
客户端向DHCP服务器请求IP地址的4个步骤如下:
(1) DHCP客户端广播一条DHCP发现消息,旨在寻找DHCP服务器(端口67 );
(2)收到DHCP发现消息的DHCP服务器向主机发回一条单播DHCP提议消息;
(3)客户端向服务器广播一条DHCP请求消息,请求提议的IP地址和其他信息;
(4)服务器以单播方式发回一条DHCP确认消息,完成交互。
●DHCP冲突
两台主机使用相同的IP地址时,就发生了DHCP地址冲突。这听起来很糟糕,不是吗?当然糟糕!在介绍IPv6的那章,根本不需要讨论这个问题。
在分配IP地址的过程中,DHCP服务器在分配地址池中的地址前,将使用ping程序来测试其可用性。如果没有主机应答, DHCP服务器将认为该IP地址未分配出去。这有助于服务器知道它要分配的地址未被占用,但主机呢?为进一步避免如此糟糕的 IP地址冲突问题,主机可广播自己的地址。
主机使用免费ARP ( gratuitous ARP )来帮助避免地址重复。为此,DHCP客户端在本地LAN或VLAN中发送ARP广播,并要求解析分配新给它的地址,从而将冲突消灭在萌芽状态。
如果检测到IP地址冲突,相应的IP地址将从DHCP地址池中删除;且在管理员手工解决冲突前,该地址不会被分配给任何主机,牢记这一点很重要。
!注意:有关在Cisco路由器中如何配置DHCP,以及DHCP客户端和DHCP服务器分别位于路由器两边(不同网络中)的结果将如何,请参阅第6章。
25. APIPA
如果一台交换机或集线器连接 了多台主机,且没有DHCP服务器,该如何办呢?你可手工添加IP信息(称为静态IP编址),但Windows提供了APIPA ( Automatic Private IP Addressing,自动私有IP编址),这种功能只有较新的Windows操作系统才有。有了APIPA,客户端可在DHCP服务器不可用时自动给自己配置IP地址和子网掩码(主机用来通信的基本IP信息)。APIPA 使用的IP地址范围为169.254.0.1 ~ 169.254.255.254,客户端还会给自己配置默认的B类子网掩码-255.255.0.0。
然而,如果在有DHCP服务器的公司网络中,主机使用了该范围内的IP地址,则表明要么主机的DHCP客户端不正常,要么服务器停止运行了或因网络问题而不可达。在我认识的人当中,还没有谁在看到主机使用该范围内的IP地址后还感到高兴的。
END
为了方便广大网络爱好学习者一起学(聚)习(众)交(搞)流(基),特开设思科干货交流群,里面已经上传大量学习资料,欢迎广大网络工程师进群学习!
来,试试新的分享键