TCPIP原理1文档格式.docx
《TCPIP原理1文档格式.docx》由会员分享,可在线阅读,更多相关《TCPIP原理1文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
可以适用于以太网、令牌环网、拨号线、X.25网络以及任何其它类型的物理传输介
质。
通用的寻址方案。
该方案允许任何TCP/IP设备唯一的寻址整个网络中的任何其他设
备,该网络甚至可以象全球Internet那样大。
各种标准化的高级协议。
可广泛而持续地提供多种用户服务。
数据通信模型
虽然OSI模型非常有用,但TCP/IP协议并不完全与它的结构相匹配。
因此,在讨论TCP/IP时,我们按下列方法使用该模型中的各层:
应用层应用层是网络中与用户访问有关的协议层。
本教材中所说的TCP/IP应
用程序是在传输层以上发生的任何网络进程。
表示层在OSI中,这一层可提供标准的数据表示例程,而在TCP/IP中,这种
功能是在应用层内处理的。
会话层OSI的会话层管理协作应用程序间的会话(连接),在TCP/IP中,这
一功能基本上是在传输层中实现的,是使用软插口(socket)和端口
(port)来说明协作应用程序间通信的路径。
传输层在OSI参考模型中,传输层可以确保接收方正确的接收到所发出的数
据。
在TCP/IP中,这一功能是由传输控制协议(TCP)完成的。
然而,
TCP/IP还提供了第二种传输层服务,即用户的数据报协议(UDP),
它并不执行端对端的可靠性检查。
网络层网间协议(IP)通常可看作是TCP/IP的网络层,它可以将上层与基本
网络隔离开,并处理寻址和数据传输功能。
数据链路层在基本的物理网络上可靠的传输数据是由数据链路层完成的。
TCP/IP
很少创建数据链路层中的协议,与数据链路层有关的大多数RFC只讨
论IP如何使用现有的数据链路协议。
物理层TCP/IP不定义各种物理标准,它只使用现有的标准。
TCP/IP协议结构
在描述TCP/IP时,一般只定义如图所示的4层模型:
应用层、主机对主机传输层、网络层和网络访问层。
TCP/IP协议结构中的各层
在TCP的应用层中,将数据称为“数据流(stream)”;
而在用户数据报协议(UDP)的应用层中,则将数据称为“报文(message)”。
TCP将它的数据结构称作“段(segment)”,而UDP将它的数据结构称作“分组(packet)”;
网间层则将所有数据看作是一个块,称为“数据报(datagram)”。
TCP/IP使用很多种不同类型的底层网络,每一种都用不同的术语定义它传输的数据,大多数网络将传输的数据称为“分组”或“帧(frame)”.
数据结构
网络访问层(NetworkAccessLayer)
网络访问层(NetworkAccessLayer)是TCP/IP协议结构的最低层,该层中的协议提供了一种数据传送的方法,使得系统可以通过直接连接的网络将数据传送到其它设备,并定义了如何利用网络来传送数据报。
网络访问层协议与较高层协议不一样,它必须知道底层网络的各种细节(如它的分组结构、寻址方式等),以便准确的格式化传输的数据,使其遵守网络规定。
TCP/IP网络访问层可以包括OSI参考模型中下三层(网络层、数据链路层和物理层)的全部功能。
网络访问协议种类繁多,每一个协议都对应一种物理网络标准。
该层执行的功能包括将IP报文封装成被网络传输的帧,并将IP地址映射为网络使用的物理地址。
在UNIX中实施时,这一层的协议通常以设备驱动程序和有关程序的组合形式出现。
这种用网络设备名称标识的模块,通常用来封装数据并传送给网络,而其它程序则执行相关功能,如地址映射。
网间层(InternetLayer)
网间协议IP是TCP/IP的核心,也是网间层中最重要的协议。
IP可提供基本的分组传输服务,这是构建TCP/IP网络的基础。
所有的TCP/IP数据都流经IP,(不管是出去的还是进来的)与它的最终目的地无关。
网间协议(InternetProtocol——IP)
网间协议的功能包括:
1.定义数据报,它是在Internet上的基本传输单元。
2.定义网间寻址方案。
3.在网络访问层和主机对主机传输层之间传输数据。
4.为数据报选择至远程主机的路由。
5.执行数据报的分解和重组。
IP是一个“无连接协议”,是要依靠其它层的协议提供错误检测和错误恢复。
有时将该网间协议称为“不可行协议”,因为它并不包含错误检测和恢复的程序代码。
这并不是说IP协议是不能信赖的,恰恰相反,它可以正确地将数据传送到已连接的网络,不过它并不检验数据是否被正确地接收。
必要是,TCP/IP结构中其它层的协议可以提供这一检验功能。
数据报(Datagram)
数据报(datagram)是网间协议定义的一种分组格式。
如图表示一个IP数据报,数据
报中前5个或6个32位字为控制信息,称为报头。
在缺省形式下,报头的长度是5个字,第6个字是可选的。
由于报头的长度是可变的,因而它包含一个称为“Internet报头长度(IHL)”的字段,以字为单位指出报头的长度。
报头包含着传输该分组所需的全部信息。
31 16 15 0
版本号 IHL 服务类型 总长度
识别码 标志 片偏置量
寿命 协议 报头校验和
源地址
目的地址
选项 填空
数据区
报
头
IP数据报的格式
网间协议通过检查报头第5个字中的目的地址(DestinaationAddress)传送数据报,该目的地址是一个标准的32位IP地址,它可以标识目的网络和在该网络上的特定主机。
如果目的地址是本地网络中一个主机的地址,该分组就直接伟送给目的地;
如果目的地址不在本地网络中,该分组就被传送到网关(gateway)再进行传送。
网关是在不同的物理网络之间交换分组报文的设备。
确定使用哪个网关称为路由选择(routing),IP为每个单独的分组作出路由选择决定。
数据报的路由选择
Internet网关通常(或许更精确地说)是指IP路由器(router),因为它使用网间协议在网络之间选择分组的路由。
在传统的TCP/IP术语中,只有两种类型的网络设备,即网关(gatway)和主机(host)。
网关可以在网络之间转发分组报文,主机却不能。
然而,如果一台主机连接多个网络(称为多地址主机),则就可以在网络间转发分组报文。
当一个多地址主机转发分组报文时,它的作用与其它任何网关一样,可以看成是一个网关。
目前的数据通信术语有时将网关与路由器区别开,术语“网关”和“IP路由器”是可以互换的。
数据报的拆分
每一种类型的网络都有一个“最大传输单元(MTU)”,即网络上可以传输的最大分组。
如果从一个网络上接收到的数据报大于另一个网络的最大传输单元,就必须将它分成较小的“块”才能传输,这一过程称为“拆分(fragmentation)”。
如以太网与X.25网络在物理上也是不同的。
当一个较大的以太网分组在X.25网络上传输之前,IP必须将它分割成较小的分组。
传送数据报到传输层
当IP接收到一个寻址本地主机的数据报时,它必须将该数据报中的数据部分传送给合适的传输层协议,这是利用数据报报头中第3个字内的“协议号(ProtocolNumber)”完成的。
每个传输层协议都有一个唯一的协议号,用来在IP中标识它自己。
网间控制报文协议
网间控制报文协议(InternetControlMessageProtocol–TCMP)是IP的一个不可分割的部分。
该协议是网间层的一部分,它使用IP数据报传输设施去发送报文。
它发送的报文可以为TCP/IP执行下列控制、错误报告、信息等功能:
流控制当数据报到达的速度太快而无法处理时,目的主机或中间网关
就会发送一个“ICMP源站抑制报文(ICMPSourceQuench
Message)”块给发送者,以通知源站暂时停止发送报评议文。
检测不可达的目地当目的地不可到达时,检测到该问题的系统就发送一个“目的
地不可达报文(DestinationUnreachableMessage)”给数
据报的源站。
如果不可达的目的地是一个网络或主机,就由中
间网关发送该报文;
如果是一个不可达的端口,则由目的地主
机发送该报文。
重定向路由网关发送“ICMP重定向报文(ICMPRedirectMessage)”
通知主机使用另一个网关,这大概是因为另一个网关更合适。
只有当源主机与这二个网关都在同一个网络上时才能使用这一
报文。
检查远程主机一台主机可以发送“ICMP回送报文(ICMPEchoMessage)”
以了解远程系统的网间协议是否正在工作。
当系统接收到该回
送报文时,便将同样的分组报文发送回源主机。
UNIX的ping
命令就使用这一报文。
传输层(TransportLayer)
传输层中两个最重要的协议是传输控制协议(TCP)和用户数据报协议(UDP)。
TCP利用端对端错误检测与纠正功能提供可靠的数据传输服务;
而UDP提供低开销的无连接数据报传输服务,二者都可以在应用层和网间层之间传输数据。
对于特定的应用程序,程序设计者可以选择最适合的服务。
用户数据报协议
用户数据报协议(UserDatagramProtocol——UDP)是一个不可靠的无链接数据报协议,其格式如图:
0151631
源站端口
目的站端口
长度
校验和
UDP的报文格式
选用UDP作为一种数据传输服务的原因有好几个,如果传输的数据量很少,那末为建立连接和确保可靠传输而花费的开销可能比重新传输全部数据的开销还高。
在此情况下,UDP就是传输层协议最好的选择。
使用“查询——响应”方式的应用程序也非常适宜使用UDP,其响应可以用作对查询的肯定确认,如果在一定的时间内没有收到响应,应用程序便发出另一个查询。
有些应用程序可提供自己的技术去确保可靠的数据传输,而不需要传输层协议的服务。
传输控制协议(TCP)
TCP是一种可靠的、面向连接的、字节流协议。
TCP提供的可靠性是利用一种称为“重传肯定确认(PositiveAcknowledgmentWithRetranmission——PAR)”机制来实现的。
换句话说,除非一个利用PAR的系统接收到从远端系统发来的肯定确认,否则就重发原数据。
在相互协作的TCP模块之间交换的数据单元称为“段(Segment)”如图:
原端口 目的端口
序列号
确认号
偏移 保留 标志 窗口
校验和 紧急指针
任选 填空
TCP的段格式
每一段包含一个校验值,接收方用它来验证数据是否遭到破坏。
如果接受到的数据段没有遭到破坏,接收者就发送一个肯定确认应答给发送者;
如果遭到破坏,接收者就废弃该段。
过了一段时间后,发送端TCP就重新发送没有受到肯定确认的任何段。
TCP是面向连接的,它在两个通信主机之间建立一个逻辑的端对端连接。
在传输数据之前,建立对话的两个端点之间交换称为握手的控制信息。
TCP通过在段头第4个字的标志字段中设置相应的位来表示一个段的控制功能。
TCP有三个段要交换,故称为“三段试握手”。
如图:
主机A主机B
三段试握手
主机A通过将一个具有“同步序列号(SYN)”的段发送给主机B而开始连接,该段告诉主机B:
主机A希望建立连接并且使用哪个序列号作为主机A的段的起始号(序列号可用来保持数据的正确顺序);
主机B用一个带有“确认应答(ACK)”和“同步序列号(SYN)”位的段响应主机A,以确认收到了A的段,并通知A它将从哪个序列号开始;
最后,A发送一个段,确认收到了B的段,并开始传送第一个实际数据。
当协作双方的模块结束数据传输时,它们就利用包含“无数据发送(FIN)”位的段来交换三段试握手信息,以关闭连接。
TCP发送的是连续的字节流而不是单独的分组。
因此要确保发送和接受的顺序,即用TCP的段头中的“序列号”和“确认号”字
段来保持这个顺序。
每个系统可选择任意“号”作为起点。
但通常情况下ISN总是0。
数据中的每个字节是从ISN开始顺序编号的,因而被发送数据的第一个实际字节的
顺序号为ISN+1(通常为1)。
确认段(ACK)执行两种功能:
肯定确认和流控制。
确认:
是告诉发送者已经接收了多少数据和接收方还可以接收多少数据。
确认号是
远端接收到的最后一个字节的顺序号。
该标准并不要求每个分组都要单独确
认,确认号就是对在该号之前的所有字节的肯定确认。
窗口字段:
含有远端有能力接收的字节数。
窗口6000
已接收的数据
当前段
11001200130014001500160017001
起始序号 确认号序列号4001
02000
TCP数据流
TCP还负责将从IP接收到的数据传送给合适的应用程序。
接收该数据的应用程序是用一个16位的“端口号”标识的。
源端口和目的端口是包含在段头的第一个字节中,使数据正确地传进和传出应用层,这是传输层的一个重要服务。
应用层(ApplicationLayer)
该层中包含了使用传输层协议去传输数据的所有协议,应用层协议很多,一些著名的应用层协议有:
TELNET这是网络终端协议,可通过网络提供远程登陆。
FTP这是文件传输协议,可用于交互式文件传输。
SMTP这是简单邮件传输协议,可用于传送电子邮件。
此外还有:
域名服务(DomainNameService——DNS):
可以将IP地址映射成赋予网络设备的
名字。
路由信息协议(RoutingInformationProtocol——RIP):
路由选择是TCP/IP的工
作核心,网络设备使用RIP去交换路由选择信息。
网络文件系统(NetworkFileSystem——NFS):
该协议允许文件被网络上的各种
主机共享。
综上所述,FTP、TELNET、和SMTP基本上是依赖于TCP的,而NFS、DNS和RIP则基本上依赖于UDP。
一些应用程序型协议,如外部网关协议(ExteriorGatewayProtocol——EGP),它是另一个路由协议,它们不使用传输层服务,而直接使用IP服务。
第二章数据传输
我们已经了解到TCP/IP是一个四层结构。
本章将更详细地探讨数据是如何在网络的协议之间和系统之间传送的,以及如何利用地址路由将数据送到它的目的地、如何为了构建子网而在本地重定义寻址规则。
寻址、路由选择和多路复用
为了在二个Internet主机之间传送数据,就必须通过网络将数据传送给相应的主机,并在该主机内传送给相应的用户或进程。
TCP/IP利用三种方法来完成这些任务:
寻址(Addressing)IP地址可以唯一地标识Internet中的每一台主机,它可
以将数据传送到相应的主机。
路由选择(Routing)网关可以将数据传送到相应的网络。
多路复用(Multiplexing)协议和端口号可以将数据传送到主机内相应的软件模
块。
其中的每一个功能(在主机之间寻址、在网络之间选择路由和在层间多路复用)对于通过Internet在两个协作应用程序间传送数据都是必需的。
IP地址
网间协议(IP)以数据报的形式在主机之间传输数据,每个数据报传送到一个地址,该地址包含在该数据报报头的目的地址(第5个字)中。
目的地址是一个32位的IP地址,它包含着足够的信息以唯一地标识一个网络和该网络中的特定主机。
一个IP地址由一个网络部分和一个主机部分组成,但在每个IP地址中它们的格式是不同的。
用来标识网络和主机的地址位数将根据地址的“类型”而变,A类、B类和C类是三个主要的地址类型。
通过检查一个地址的前几位,IP软件很快就可以确定地址的类别及其结构。
IP遵循以下规则确定地址的类别:
如果IP地址的第一位是0,它就是A类网络的地址。
A类地址的第1位标识其地址
类别,接着的7位标识其网络。
最后的24位标识主机。
A类网络的编号小于128,
但每个A类网络可以包含数百万台主机。
如果该地址的前2位是10,它就是B类网络地址。
在B类地址中,前2位标识类,
接着的14位标识网络,最后16位标识主机。
可以有数千个B类网络编号,每个
B类网络可以包含数千台主机。
如果该地址的前3位是110,它就是C类网络地址。
在C类地址中,前3位是类
标识符,接着的21位是网络地址,最后8位标识主机。
有数百万个C类网络编号,
而每个C类网络包括的主机数量少于254台。
如果该地址的前3位是111,它就是一个专门保留的地址。
这类地址有时称为D
类地址,实际上它并不指向特定的网络,目前这一范围内的编号是赋予广播地址。
广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机,这与共享
同一网络的一组计算机恰好相反。
IP地址通常写成用点(英语句号)分隔开的4个十进制数,其中每一部分的数字值在0到255(一个字节可表达的十进制值)之间。
因为标识类的位和网络地址的位是连在一起的,因而我们可以把IP地址看成是由所有网络地址字节和所有主机地址字节两部分组成。
第1个字节的值的含义是:
如果值小于128,则表示A类地址;
其第1个字节就是网络号,紧接着的三个字
节是主机地址。
值在128到191之间,表示B类地址;
前二个字节标识网络,后二个字节标识
主机。
值在192到223之间,表示C类地址;
前三个字节是网络地址,最后一个字节
是主机号。
·
值大于223,表示该地址是保留的,我们可以不管保留的地址。
并不是所有的网络地址或主机地址都是可用的:
第一个字节大于223的地址都是保留的。
在A类地址中,由两个地址0和127也是留作专用地址,网络0是“缺省路由”,
网络127是“回送地址”。
缺省路由用来简化IP必须处理的路由选择信息,回送
地址由于允许本地主机与远程主机以同样的方式寻址而简化了网络应用程序。
在配
置主机时使用这些专用网络地址。
在所有的网络中主机号0和255也是保留的。
所有主机位都置成0的IP地址用以
标识网络本身。
主机号为0的IP地址是广播地址,即发送到该地址的数据传送到网
络上的每一台主机。
由于合法IP地址的缺乏,设置了一定的保留地址,这些地址将决不被正式的分配给
任何人,而且决不应该被使用在自己网络的外部机构。
(即Internet网上)
如:
A类网10
B类网172.16直到172.31
C类网192.168.0直到192.168.255
一般将IP地址称为主机地址,但实际上IP地址是赋予网络接口的并不是赋予计算机系统的。
IP使用地址的网络部分为数据报在网络之间选择路由。
当数据报到达目的网络是它的全部地址(包括主机信息)用来进行最终的传输。
子网
将主机地址位用作附加的网络地址位,就可以局部地修改IP地址的标准结构。
其实质就是移动网络地址位和主机地址之间的“分解线”,从而创建附加的网络,但却减少了每个网络的主机数量。
这种新分配的网络位就可在一个大型网络内定义一个网络,称为子网(subnet)。
为了解决柘朴上的或组织上的问题,一些组织往往决定组建子网。
构建子网可以分散对主机寻址的管理。
建立子网还可解决硬件差异和距离限制问题。
IP路由器可以将不同的物理网络连接在一起,但这只有当每个物理网络具有唯一的网络地址时才可以。
构建子网则将一个单独的网络地址分成很多唯一的子网地址,因此每个物理网络可以具有自己唯一的地址。
在IP地址上使用一个位掩码(即子网掩码——subnetmask)就可以定义一个子网。
如果掩码位是1,那么其地址中等价位就解释成一个网络位;
如果掩码位是0,则该位就属于主机地址部分。
子网只能在本地识别,对于Internet的其它部分,其地址仍然被看成是标准的IP地址。
例如,与标准B类地址相关的子网掩码是255.255.0.0。
最通用的子网掩码是通过一个附加字节来扩充一个B类地址的网络部分,这样一来该子网就是255.255.255.0。
前三个字节的所有位都是1,而最后一个字节的所有位都是0;
前二个字节定义B类网络,第三个字节定义子网地址,第四个字节定义子网上的主机。
很多网络管理员喜欢使用面向字节的掩码,因为易于阅读和理解。
然而,不要求都以字节边界来定义子网,子网掩码可以面向位,从而就能适用于任何地址类。
例如,利用掩码255.255.255.192,一个小型单位就可将C类地址分成4个子网。
这个掩码将一个C类地址的第四个字节的前二个位定义为该地址的子网部分。
同一个掩码如果用于B类地址,就可构建1000多个子