TCP IP协议技术应用知识汇总文档格式.docx
《TCP IP协议技术应用知识汇总文档格式.docx》由会员分享,可在线阅读,更多相关《TCP IP协议技术应用知识汇总文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
第一层负责最后将信息编码成电流脉冲或其它信号用于网上传输。
它由计算机和网络介质之间的实际界面组成,可定义电气信号、符号、线的状态和时钟要求、数据编码和数据传输用的连接器。
如最常用的RS-232规范、10BASE-T的曼彻斯特编码以及RJ-45就属于第一层。
所有比物理层高的层都通过事先定义好的接口而与它通话。
如以太网的附属单元接口(AUI),一个DB-15连接器可被用来连接层一和层二。
第二层——数据链路层
数据链路层通过物理网络链路提供可靠的数据传输。
不同的数据链路层定义了不同的网络和协议特征,其中包括物理编址、网络拓扑结构、错误校验、帧序列以及流控。
物理编址(相对应的是网络编址)定义了设备在数据链路层的编址方式;
网络拓扑结构定义了设备的物理连接方式,如总线拓扑结构和环拓扑结构;
错误校验向发生传输错误的上层协议告警;
数据帧序列重新整理并传输除序列以外的帧;
流控可能延缓数据的传输,以使接收设备不会因为在某一时刻接收到超过其处理能力的信息流而崩溃。
数据链路层实际上由两个独立的部分组成,介质存取控制(MediaAccessControl,MAC)和逻辑链路控制层(LogicalLinkControl,LLC)。
MAC描述在共享介质环境中如何进行站的调度、发生和接收数据。
MAC确保信息跨链路的可靠传输,对数据传输进行同步,识别错误和控制数据的流向。
一般地讲,MAC只在共享介质环境中才是重要的,只有在共享介质环境中多个节点才能连接到同一传输介质上。
IEEEMAC规则定义了地址,以标识数据链路层中的多个设备。
逻辑链路控制子层管理单一网络链路上的设备间的通信,IEEE802.2标准定义了LLC。
LLC支持无连接服务和面向连接的服务。
在数据链路层的信息帧中定义了许多域。
这些域使得多种高层协议可以共享一个物理数据链路。
第三层——网络层
网络层负责在源和终点之间建立连接。
它一般包括网络寻径,还可能包括流量控制、错误检查等。
相同MAC标准的不同网段之间的数据传输一般只涉及到数据链路层,而不同的MAC标准之间的数据传输都涉及到网络层。
例如IP路由器工作在网络层,因而可以实现多种网络间的互联。
第四层——传输层
传输层向高层提供可靠的端到端的网络数据流服务。
传输层的功能一般包括流控、多路传输、虚电路管理及差错校验和恢复。
流控管理设备之间的数据传输,确保传输设备不发送比接收设备处理能力大的数据;
多路传输使得多个应用程序的数据可以传输到一个物理链路上;
虚电路由传输层建立、维护和终止;
差错校验包括为检测传输错误而建立的各种不同结构;
而差错恢复包括所采取的行动(如请求数据重发),以便解决发生的任何错误。
传输控制协议(TCP)是提供可靠数据传输的TCP/IP协议族中的传输层协议。
第五层——会话层
会话层建立、管理和终止表示层与实体之间的通信会话。
通信会话包括发生在不同网络应用层之间的服务请求和服务应答,这些请求与应答通过会话层的协议实现。
它还包括创建检查点,使通信发生中断的时候可以返回到以前的一个状态。
第六层——表示层
表示层提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息可以被另一个系统应用层识别。
表示层的编码和转化模式包括公用数据表示格式、性能转化表示格式、公用数据压缩模式和公用数据加密模式。
公用数据表示格式就是标准的图像、声音和视频格式。
通过使用这些标准格式,不同类型的计算机系统可以相互交换数据;
转化模式通过使用不同的文本和数据表示,在系统间交换信息,例如ASCII(AmericanStandardCodeforInformationInterchange,美国标准信息交换码);
标准数据压缩模式确保原始设备上被压缩的数据可以在目标设备上正确的解压;
加密模式确保原始设备上加密的数据可以在目标设备上正确地解密。
表示层协议一般不与特殊的协议栈关联,如QuickTime是Applet计算机的视频和音频的标准,MPEG是ISO的视频压缩与编码标准。
常见的图形图像格式PCX、GIF、JPEG是不同的静态图像压缩和编码标准。
第七层——应用层
应用层是最接近终端用户的OSI层,这就意味着OSI应用层与用户之间是通过应用软件直接相互作用的。
注意,应用层并非由计算机上运行的实际应用软件组成,而是由向应用程序提供访问网络资源的API(ApplicationProgramInterface,应用程序接口)组成,这类应用软件程序超出了OSI模型的范畴。
应用层的功能一般包括标识通信伙伴、定义资源的可用性和同步通信。
因为可能丢失通信伙伴,应用层必须为传输数据的应用子程序定义通信伙伴的标识和可用性。
定义资源可用性时,应用层为了请求通信而必须判定是否有足够的网络资源。
在同步通信中,所有应用程序之间的通信都需要应用层的协同操作。
OSI的应用层协议包括文件的传输、访问及管理协议(FTAM),以及文件虚拟终端协议(VIP)和公用管理系统信息(CMIP)等。
xiong212751cto技术博客
2.2TCP/IP分层模型
TCP/IP分层模型(TCP/IPLayeningModel)被称作因特网分层模型(InternetLayeringModel)、因特网参考模型(InternetReferenceModel)。
图2.2表示了TCP/IP分层模型的四层。
┌────────┐┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│ ││D│F│W│F│H│G│T│I│S│U│ │
│ ││N│I│H│T│T│O│E│R│M│S│其│
│第四层,应用层 ││S│N│O│P│T│P│L│C│T│E│ │
│ ││ │G│I│ │P│H│N│ │P│N│ │
│ ││ │E│S│ │ │E│E│ │ │E│它│
│ ││ │R│ │ │ │R│T│ │ │T│ │
└────────┘└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
┌────────┐┌─────────┬───────────┐
│第三层,传输层 ││ TCP │ UDP │
└────────┘└─────────┴───────────┘
┌────────┐┌─────┬────┬──────────┐
│ ││ │ICMP│ │
│第二层,网间层 ││ └────┘ │
│ ││ IP │
└────────┘└─────────────────────┘
│第一层,网络接口││ARP/RARP │ 其它 │
图2.2 TCP/IP四层参考模型
TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。
ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。
TCP/IP分层模型的四个协议层分别完成以下的功能:
第一层——网络接口层
网络接口层包括用于协作IP数据在已有网络介质上传输的协议。
实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。
相反,它定义像地址解析协议(AddressResolutionProtocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
第二层——网间层
网间层对应于OSI七层参考模型的网络层。
本层包含IP协议、RIP协议(RoutingInformationProtocol,路由信息协议),负责数据的包装、寻址和路由。
同时还包含网间控制报文协议(InternetControlMessageProtocol,ICMP)用来提供网络诊断信息。
第三层——传输层
传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。
其中TCP协议(TransmissionControlProtocol)提供可靠的数据流运输服务,UDP协议(UseDatagramProtocol)提供不可靠的用户数据报服务。
第四层——应用层
应用层对应于OSI七层参考模型的应用层和表达层。
因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等,这也是本书将要讨论的重点。
2.3IP地址
前面的章节我们已经指出,由于不同网络的硬件存在不同类型的地址,TCP/IP需要有它自己的地址编码系统。
IP协议规定每台主机(严格地说是每个因特网接口)都通过一个32位全局唯一的因特网地址来标识。
通常IP地址是采用以点隔开的四个十进制数的形式来表示。
每个数代表地址中的一个二位十六进制数(即八位二进制数)。
例如IP地址205.187.251.2就表示相应的四个二位十六进制值CDBBFB02。
2.3.1地址基本编码格式
在IPv4(IP协议,版本4)标准中,每个32位IP地址包含两个部分:
网络标识符和网络内的主机编号。
没有两个网络能够分配同一个网络标识符,同一网络上的两台计算机也不可能分配同一个主机编号。
IANA负责分配网络标识符,以确保网络标识符的唯一性、因特网服务提供商(InternetServiceProvider,ISP)或网络管理员负责维护同一网络上主机编号的唯一性等。
网络标识符和主机编号的边界由IP地址的类别来确定,不同类别的IP地址能够满足不同规模网络的组网需要。
为了满足不同的网络与主机比例的期望值,IP协议将地址编码分成三种基本类别:
A类、B类、C类。
D类地址是为多点广播而定义的,剩余的E类地址保留为实验使用,如图2.3所示。
0 1 2 3
0 123456789001234567890012345678901
┌─┬─────┬─────────────────────────┐
│0│网络标识符│ 主机编号 │A类
├─┴┬────┴────────┬────────────────┤
│10│网络标识符 │ 主机编号 │B类
├──┴┬────────────┴───────┬────────┤
│110│ 网络标识符 │ 主机编号 │C类
├───┴┬───────────────────┴────────┤
│1110│ 多点广播地址 │D类
├────┴┬───────────────────────────┤
│11110│ 实验保留地址 │E类
└─────┴───────────────────────────┘
图2.3IP地址的五种类别
A类网络地址第一位为“0”。
前8位(0~7)代表网络标识符,后24位(8~31)代表本网络上的主机编号。
因此这类网络存在128(27)个A类网络标识符,每个网络有16777216(224)台主机。
例如10.0.0.1代表A类网10.0.0.0和1号主机。
B类网络地址的前两位是“10”。
前16位(0~15)代表网络标识符,每个网络有65536(216)台主机。
例如128.1.0.1代表B类网128.1.0.0和1号主机。
C类网络地址的前三位是“110”。
前24位(0~23)代表网络标识符,后8位(24~31)代表网络上的主机编号。
C类网络存在2097152(221)个网络标识符,每个网络有256(28)台主机。
例如192.0.1.1代表C类网192.0.1.0和1号主机。
可见地址的类别可以从第一个主机号辨别。
可见IP地址的类别可以由第一个十进制数的范围辨别,如图2.4所示。
┌─┬────────┬───────┬────────┐
│类│第一个10进制数│ 网络数目 │ 主机数目 │
├─┼────────┼───────┼────────┤
│A│ 0~127 │ 127 │16777214│
│B│128~191 │ 16834 │ 65534 │
│C│192~223 │2097151│ 254 │
└─┴────────┴───────┴────────┘
图2.4 IP地址的类别可以由点分十进制数地址的
第一个十进制数的范围辨别
2.3.2子网掩码
在因特网早期,每个组织机构的网络都很简单,通常一个组织机构也只有一个局域网,只需要网络标识符和主机编号这两级结构就足够了。
随着因特网的进一步膨胀,B类地址消耗得很快,这种两级结构很难满足日益增长的网络的要求。
到了1984年,在地址格式中又增加了第三级子网结构,子网对网络内部的地址空间进行再划分,这样就缓解了B类地址的需求,如图2.5所示。
┌─────┬────┬──┐
│网络标识符│ 子网 │主机│
└─────┴────┴──┘
│←─主机编号→│
图2.5三级IP地址格式
子网或子网络是A、B或C类网络的一个子集。
网络掩码用来把网络信息和主机信息分开。
每个A、B或C类地址实际上都是一个自然掩码。
A类地址的自然掩码255.0.0.0;
B类地址的自然掩码是255.255.0.0;
C类地址的自然掩码是255.255.255.0。
如果没有子网的引入,网络标识符的使用会很限。
使用了掩码,网络就可以分化成子网,并把地址的网格部分延伸到主机部分。
子网划分技术增加了子网的数量,减少了主机的数量。
如图2.6所示,掩码255.255.0.0把A类IP地址8.0.0.1划分成一个网络部分、一个子网部分和一个主机部分。
图2.6基本子网划分的例子
要注意的是,子网掩码的格式是有限制的。
子网掩码必须是相邻接的,它们的长度也必须要大于1,也就是说一个掩码应该有从左开始的连续的“1”,其余部分为“0”。
下面的掩码可以用来把C类网络理论上可用的256个地址划分成多个子网。
255(11111100)——64个子网,4台主机/子网
248(11111000)——32个子网,8台主机/子网
240(11110000)——16个子网,16台主机/子网
224(11100000)——8个子网,32台主机/子网
192(11000000)——4个子网,64台主机/子网
128(10000000)——2个子网,128台主机/子网
2.3.3特殊用途的IP地址
一台计算机可以分配一个主机地址,同是一个网络也可以分配一个网络地址。
另外,在很多情况下主机并不知道自己的IP地址或者对方的IP地址,比如在主机启动时就是这样的。
因此IP协议定义了一套特殊地址格式,称作保留地址,保留地址从不分配给某台主机,如图2.8所示。
┌──────────────┐
│ 全0 │本地网上的本主机
└──────────────┘
┌───────┬──────┐
│网络标识符全0│ 主机编号 │本地网上的主机
└───────┴──────┘
│ 网络标识符 │主机编号全0│网络的伯克利广播
│ 全1 │本地网的有限广播
│ 网络标识符 │主机编号全1│网络的直线广播
│ 127 │ 任意 │本地环路
图2.8特殊用途的IP地址格式
IP保留主机编号为0的地址,用它来表示一个网络,例如地址205.187.251.0表示C类网络,该网络的网络标识符是205.187.251。
当网络标识符不知道时,主机地址就可以用全0的网络标识符来代替。
例如:
特殊地址0.0.0.0表示本网络的主机,它被应用在启动协议中;
特殊地址0.X.Y.Z表示本网络的主机X.Y.Z。
这些特殊的IP地址只能当作源地址使用。
为了很方便地发送一个包的副本给同一物理网络上的所有主机,IP为每个网络定义了一个直接广播地址(directedbroadcastaddress)。
IP保留了主机编号中所有位为全1的地址,用它来表示一个网络的直接广播地址。
A.255.255.255、B.B.255.255、C.C.C.255就分别是A、B、C网络的广播地址。
当一个包被发送到上述的一个直接广播地址时,这个包的单个副本通过因特网路由器到达特定网络,然后被传送到这个网络上的所有主机。
在这里有个历史遗留问题,伯克利软件分发(BerkeleySoftwareDistribution,BSD)的TCP/IP协议实现使用主机编号中所有位为全0而不是全1来表示直接广播地址,这种地址格式被非正式地称为伯克利广播(BerkeleyBroadcast)地址。
以上这些特殊的IP地址只能当作目的地址使用。
在测试网络应用程序时,还可以使用IP定义的一个特殊的本地环路地址(loopbackaddress),发往该地址的任何分组都不会传出主机。
它实际上是一个本地环路网络标符,IP保留A类网络127用作本地环路。
任何具有127.X.Y.Z形式的地址都被当作本地环路地址,127.0.0.1是最普遍的本地环路地址,也可以用localhost来表示。
另外,IANA还为某些特殊分组保留了一系列多点广播地址。
224.0.0.1用来表示本地子网上的所有系统;
224.0.0.2用来表示本地子网的所有路由器。
2.4网络数据的传输次序
在PC机中,低位存储地址包含数据的低位字节,这种存储顺序被称作为LittleEndial。
而在因特网传输中,TCP/IP协议规定采用低位存储地址包含数据高位字节的BigEndial存储顺序,并把这种存储次序称作网络标准字节顺序,如图2.9所示。
实际网络传输时,数据按每32位二进制数为一组进行传输。
图中把每个32位二进制数按照书写方式分成4个八位二进制数,并且标明了实际的字节传输顺序。
在传输每个八位二进制时,按照从左到右、从最高的符号位到最低位依次进行传输。
为了使通信的双方都能理解数据分组所携带的源地址、目的地址以及分组的长度等二进制信息,主机和路由器在发送一个分组之前,必须把二进制信息项从本地表示转换成网络标准字节顺序,并且当分组到达目的网络时又把它们从网络字节顺序换成特定的主机顺序。
至于分组中用户数据区的数据,则可以选择任何数据格式,他们不会被转换成网络标准字顺序,而是由具体通信的双方负责解释。
2.5网间协议(IP)
因特网的核心层是网间层和传输层。
IP协议是建立TCP/IP网络的最基本协议,它定义了在整个TCP/IP网络上传输数据所用的基本单元。
网间层协议为上层协调提供了无连接的、不可靠的数据报传送服务,其他协议作为IP数据报的数据被承载。
它只是尽力地、最快地传递数据,同时提供差错校验和路由选择,但产不对数据的到达与否、数据到达的连续性和顺序性作任何保证,也不提供任何纠错功能。
RFC791中定义了IPv4(网间协议,版本4),读者可参考RFC791文件。
2.5.1IP数据报格式
TCP/IP协议使用的IP数据报(IPdatagram)和物理网络上传输数据单元用的硬件帧有相同的格式,它包含一个数据报报头和一个数据区,如图2.10所示。
┌──────┬──────┐
│ IP报头 │IP数据区 │IP数据报
└──────┴──────┘
┌───┬─────────┐
│帧头部│ 帧数据 │硬件帧
└───┴─────────┘
图2.10IP数据报的一般格式
IP数据报头包含有源、目的信息,在穿越因特网时作寻径用,并且指明承载负载的协议类型,如TCP、ICMP、UDP、等。
数据报所携带的数据量不固定,发送方根据特定的用途选择合适的数据量。
在IPv4版本中,一个数据报的数据量可以小到一个字节,而如果包括报头大小的话,数据报则可以大到64K个字节。
图2.11给出了IP数据报更详细的格式。
图2.11IP数据报格式
为了方便编程,这里同时给出了IP数据报的C语言结构。
注意,它并没有包括可选项和填充域。
/*TheIPheaderforVC++*/
typedefstructtagIPHEADER
{
unsignedcharh_len:
4:
/*lengthofththeader*/
unsignedcharversion:
4;
/*version