配色: 字号:
TCP-IP基本原理
2022-02-16 | 阅:  转:  |  分享 
  
TCP/IP基本原理1TCP/IP概述1TCP/IP概述2IP协议及IP地址2IP协议及IP地址2IP协议及IP地
址2IP协议及IP地址2IP协议及IP地址2IP协议及IP地址2IP协议及IP地址2IP协议及IP地址2I
P协议及IP地址2IP协议及IP地址2IP协议及IP地址2IP协议及IP地址2IP协议及IP地址3TCP协议
3TCP协议3TCP协议3TCP协议3TCP协议3TCP协议3TCP协议3TCP协议4UDP协议4
UDP协议IP基础-子网掩码(Subnet-Mask)一、问题的提出1、例如:A企业分配到了ClassB
的IP地址,如果将6万多计算机连接在同一个网络中,势必导致网络效能下降,因此实际上是不可能的。2、例如:B企业有257台计算机,
如果分配一个C类地址,不够;分配一个B类地址,浪费。3、如何解决呢?二、解决方法——允许企业能自行在内部网络中分割Subnet
(子网络)1、例如:将A企业分配到的B类地址分割成规模较小的Subnet,再分配给多个实体网络。换言之,Subnet技术让原先只
有3种等级的IP地址更加具有弹性。三、Subnet分割的原理——从Host-id中借用bits来作为“子网位”这样IP地址=网
络地址+子网地址+主机地址例如:A企业申请到ClassB的IP地址如下:10101000.01011111.00000000
.00000000(168.95.0.0)按照原先的等级规划,前16bits是net-id,后16bits是Host-id。如果
要分割Subnet,可以借用部分Host-id的位数来作为子网位10101000.01011111.00000000.00000
000(168.95.0.0)网络地址主机地址子网地址IP基础-子网掩码(Subnet-Mask)原先的
net-id不可更动,但是这8bits却是可以自行分配的。如果SubnetID使用了3bits,则产生了8个子网。换言之,从h
ost-id借用了3bits后,您可以分割出8个Subnet。当然,相对地Host-id长度变短后,所拥有的的IP地址数量减少了。
以上例而言,原先ClassB可以有65536个主机地址;而新建的Subnet每个子网的用户数仅8192个。为了表示借用了多少
位主机地址作为子网地址,采用子网掩码形式:11111111.11111111.11100000.00000000表示方法:与I
P地址对应,表示网络地址和子网地址的bit用1表示,表示主机地址的bit用0表示。例如:A类地址的默认掩码:255.0.0.0
B类地址的默认掩码:255.255.0.0C类地址的默认掩码:255.25
5.255.0上例中,虽然从第一个数字看,其为B类地址,默认掩码应是255.255.0.0但是由于
从主机位借用了3bits,所以掩码应该=11111111.11111111.11100000.00000000=255.255.2
24.0采用子网划分后,地址从Classful—>Classless,每个IP地址必须和掩码一起才能准确地描述一个设备在网络上的
位置。IP基础-子网掩码(Subnet-Mask)1、掩码的表示方法:除了上面提到的可以用原始的二进制表示、点
分十进制表示外,还可以用长度表示,掩码长度=网络bit位数+子网bit位数。例如:A类地址默认子网掩码长=8,一个IP地址可表示
为10.110.10.8255.0.0.0
或者10.110.10.8/8
B类地址默认子网掩码长=16,一个IP地址可以表示为135.198.2.34255.255.0.0

或者135.198.2.34/16C类地址默认子网掩码长=24,一个IP地址可以表示为
198.24.10.2255.255.255.0
或者198.24.10.2/24
上例中子网掩码长=19一个IP地址可以表示为168.95.10.1255.2
55.224.0
或者168.95.10.1/19IP基础-特殊IP地址
1、网络地址不能全为0,全0代表“本网络”,例如:0.0.0.27代表本网络上host-id=37的主机;网络地址全为1,作为广播
用途保留。2、主机地址不能全为0,全0代表网络号,例如:203.74.205.0代表网络号为203.74.205.Z的网络。如果
网络地址和主机地址都为0代表本机,例如:DHCP开始时,主机没有IP地址,其申请报文中主机IP地址填写的为0.0.0.03、主机
地址不能全为1,全1代表该网络的广播地址。4、127.x.y.z代表主机环回地址2.3IP数据包报文结构版本字段:4位,I
P协议的版本号,目前为4。报头长:4位,IP数据报的报头长度(以32位为单位)。服务类型字段:8位,用于规定优先级,传送速率,
吞吐量和可靠性等参数。总长度:16位,包含IP头在内的数据单元的总长度(字节数)。标识符:16位,标明一个数据报或分段的数据。
标志:3位,数据报是否分段标志。分段偏移量字段:如果一个数据报被分成2个以上的段,分段偏移量字段指出该段在被传送的初始数据报
中的偏移量。因此,该字段指出一个段在整个数据报中的位置。生命期字段:8位,允许数据报在网间传输的存活时间。协议字段:8位,发送
数据报的上层协议。报头校验和:16位,仅用于报头的检查。源地址和目的地址字段:每一个地址代表一个网络和网络中的一台主机。备
注:版本字段版本字段有4位,用来标识创建数据报的IP协议的版本。目前的IP协议版本是4,今后将逐渐过渡到下一代IP协议IPV
6头长与全长字段头长(IHL)字段有4位。该字段紧跟在版本号字段后,用32位为单位来指出头的长度。比较而言,全长字段指出数据报
的长度,包括头和高层信息。由于该字段有16位,因此一个IP数据最多有216或65535字节。服务类型字段服务类型字段指明数据报
将被如何处理。这个字段有8位,其中3位用来标识由发送者指定的优先权或重要程度。因此,该字段提供了IP数据报路由的优先权机制。全长
包含IP头在内的数据单元的总长度(字节数)标识符与分段偏移量字段标识字段用来标明一个数据报或分段数据报。如果一个数据报被分成
2个以上的段,分段偏移量字段指出该段在被传送的初始数据报中的偏移量。因此,该字段指出一个段在整个数据报中的位置。该字段的值是整型,
以8位字节为单位,可提供64位单位的偏移量。对安全设备来说,能识别出所有分段属于同一个数据报是非常重要的。生命期字段生命期(T
TL)字段定义了数据报可存在的最大期限,这个字段用来阻止被错误寻址的数据报在因特网或专用IP网络中无休止地游荡。由于确切的生存时间
很难把握,该字段通常用跳跃站点数来度量,标志字段标志字段中有2位用于标明是如何分段的,第3位目前还没有使用。用于分段的2位中第
1位用来实现直接分段控制机制,其值为0指明数据报已分段,值为1时指明数据报没有分段。第2位为0指明该分段是数据报的最后一个分段,为
1指明后面还有分段。协议字段协议字段指出用于创建数据报携带报文的高层协议。例如,其值为十进制6时,表示是TCP协议,值为十进制
17时,表示是UDP协议。标志:占3比特,只用到低位的两个比特??MF(MoreFragment)??MF=1,后
面还有分片的数据包??MF=0,分片数据包的最后一个??DF(Don''tFragment)??DF=1,不允许
分片??DF=0,允许分片2.4IP数据包选路IP路由选择主要完成以下这些功能:搜索路由表,寻找能与目的IP地址完
全匹配的表目。搜索路由表,寻找能与目的网络号相匹配的表目。搜索路由表,寻找标为“默认(default)”的表目。完整主
机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。默认路由,以及下一站路由器发送的ICMP间接报文(如果我们为数据
报选择了错误的默认路由),是IP路由选择机制中功能强大的特性。为一个网络指定一个路由器,而不必为每个主机指定一个路由器,这是IP路
由选择机制的另一个基本特性。备注:在一般的体制中,IP可以从TCP、UDP、ICMP和IGMP接收数据报(即在本地生成的数
据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。IP层在内存中有一个路由表。当收到一份数据报并进行发送
时,它都要对该表搜索一次。当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址。如果确实是
这样,数据报就被送到由IP首部协议字段所指定的协议模块进行处理。如果数据报的目的不是这些地址,那么(1)如果IP层被设置为路由器
的功能,那么就对数据报进行转发(也就是说,像下面对待发出的数据报一样处理);(2)数据报被丢弃。路由表中的每一项都包含下面这些
信息:(1)目的IP地址。它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字段来指定。主机地址有一个
非0的主机号,以指定某一特定的主机,而网络地址中的主机号为0,以指定网络中的所有主机(如以太网,令牌环网)。(2)下一站
(或下一跳)路由器(next-hoprouter)的IP地址,或者有直接连接的网络IP地址。下一站路由器是指一个在直接相连网络上的
路由器,通过它可以转发数据报。下一站路由器不是最终的目的,但是它可以把传送给它的数据报转发到最终目的。(3)标志。其中一
个标志指明目的IP地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口
(4)为数据报的传输指定一个网络接口。IP路由选择是逐跳地(hop-by-hop)进行的。IP并不知道到达任何目的的
完整路径(当然,除了那些与主机直接相连的目的)。所有的IP路由选择只为数据报传输提供下一站路由器的IP地址。它假定下一站路由器比发
送数据报的主机更接近目的,而且下一站路由器与该主机是直接相连的。MTU:网络最大传送单元.不同类型的物理网对一个物理帧可传送的数
据量规定不同的上界.分片和重组:在MTU小的网络上,把大的数据报分成较小的单位。这种较小的单位叫做数据报片或段(fragme
nt),划分数据报的过程叫做分片或分段(fragmentation)。下图表示了这样的一个需要分片的案例:网络1和3的MTU为
1500,网络2的MTU为620,当主机A和主机B通信时,路由器R1把从A发送到B上的长数据报分片,路由器R2把从B发
送到A上的长数据报分片。(数据报头中的标识、标志和分片位移三个字段用作控制分片和重组。)数据报的重组:有两种方法,一是在通过一个
网络后就将分片的数据报重组;而是在到达目的主机后重组。在TCP/IP实现中,采用的是后一种方法。2.5IP分片及重组备注
:单片IP数据报的MF=0。分成多个报片后,只有最后一个报片的MF=0,其余报片的MF=1。分片位移指明该报
片在原数据报中的位置。分片影响的报头字段包括MF位、分片位移、报头长、总长度及报头校验和。各分片报头的这些字段要重新计算,其它
字段只要从原报头拷贝即可。分片后的数据报在转发过程中还可能经过某个物理网络,其允许的包长更短,这时还要再分片。对DF=1的数
据报禁止分片,若途经的下一个网络要求分片,路由器只能将此数据报丢弃。数据报头中的标识、标志和分片位移三个字段用作控制分片和重组
。路由器在对数据报分片时,把报头中的大部分字段都拷贝到每个分片的报头中,其主要目的是为了让目的主机知道每个到达的数据报片属于哪个数
据报。目的主机通过数据报片的标识字段、源IP地址及目的IP地址来识别数据报。目的主机要缓存数据报的分片,等分片到齐后进
行重组。但可能有一些分片在传输中丢失,为此IP规定了分片保留的最长时间。从数据报的最先到达的分片开始计时,若逾期分片未到齐,则
目标主机丢弃已到达的分片。ARP协议—基本概念ARP(AddressResolutionProtocol)—地址解析协
议1、为什么要用ARP:帧是在局域网上传递,而MAC地址是局域网中设备的唯一标识,只有获取了MAC地址,IP报文(IP报头+IP
包)才能被正确地封装,发送到指定的位置。因此,MAC地址是必须的。但是通常我们只知道目的地的IP地址,如何通过IP地址找到相应的M
AC地址呢?答案:ARP协议。ARP/RARP协议简介:实现IP地址与硬件地址(MAC地址)之间的相互解析ARP/RA
RP报头结构2.6IP层协议实例硬件类型字段:指明了发送方想知道的硬件接口类型,以太网的值为1;协议类型字段
:指明了发送方提供的高层协议类型,IP为0800(16进制),0806代表ARP包;硬件地址长度和协议长度:指明了硬件地址
和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;操作字段:用来表示这个报文的类型,
ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;备注:硬件类型字段:指明了发送方想知道的硬件接口
类型,以太网的值为1;协议类型字段:指明了发送方提供的高层协议类型,IP为0800(16进制);硬件地址长度和协议长度:指
明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;操作字段:用来表示这个报文的类型,AR
P请求为1,ARP响应为2,RARP请求为3,RARP响应为4;发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;
发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;发送方IP(0-1字节):源主机硬件地址的前2个字节;发送方
IP(2-3字节):源主机硬件地址的后2个字节;目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;目的硬件地址(2
-5字节):目的主机硬件地址的后4个字节;目的IP(0-3字节):目的主机的IP地址。◆ARP的工作原理:每台主
机都会在自己的ARP缓冲区(ARPCache)中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一
个数据包要发送到目的主机时,首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,若有﹐则直接转发;若没有,就向本地网段发起
一个ARP请求的广播包,查询此目的主机对应的MAC地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己
的IP地址一致。如果不相同,就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP
表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址。源主机收到这
个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没
有收到ARP响应数据包,表示ARP查询失败。2.6IP层协议实例ARP协议—基本过程◆RARP的工作原理:是反向ARP
协议,即由硬件地址查找逻辑地址发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的
RARP服务器分配一个IP地址。本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。如
果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用。如果不存在,RARP服务器对此不做任何的响应
。源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败
。2.6IP层协议实例◆ICMP协议:与IP协议同属于OSI的网络层,用于传送有关通信问题的消息,实现故障隔离和故障恢复
。ICMP报文格式如下图所示。2.6IP层协议实例数据(可变长)未使用检验和代码(0)类型(0或8)类型:标识生成
的错误报文,它是ICMP报文中的第一个字段;代码:进一步地限定生成ICMP报文。该字段用来查找产生错误的原因;校验和:存储了I
CMP所使用的校验和值;未使用:保留字段,供将来使用,起值设为0。ICMP协议提供的诊断报文类型如下表所示。2.6IP层协
议实例地址掩码应答(与类型17一起使用)18地址掩码请求(与类型18一起使用)17信息应答(与类型15一起使用)16
信息请求(与类型16一起使用)15时标应答(与类型13一起使用)14时标请求(与类型14一起使用)13参数问题12
超时11路由器请求(与类型9一起使用)10路由器公告(与类型10一起使用)9回应请求(Ping请求,与类型8的Ping
应答一起使用)8重定向5源消亡4目的不可达3回应应答(Ping应答,与类型8的Ping请求一起使用)0描述类
型实例分析ping这个名词源于声纳定位操作,目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主
机,并等待返回ICMP回显应答。ICMP回显请求和回显应答报文下图所示。2.6IP层协议实例在主机100.0.6.46
ping主机218.56.46.2,通过抓包工具进行抓图可以更加清晰的理解上面所讲内容。实例分析2.6IP层协议实例图
1PING回显请求与回显应答图2Ping回显请求报文图2Ping回显应答报文实例分析2.6IP层协议实例从
上面图可以看出,正常情况下,ping回显请求与回显应答都是成对出现。使用的IP协议号为1。Ping回显请求报文的ICMP类型字
段值为8,回显应答报文的ICMP类型字段值为0。TTL(TimeToLive)为249。回显时延是通过包的时间戳字段相减得到。
如下图显示第一个回显响应如何得到time值。同时,我们可以知道时延(time)为ping主机发送报文到被ping主机来回总共的
时间。(A)Ping回显请求的时间戳(B)Ping回显响应的时间戳Ping回显时延time=762-609=153ms
面向数据流虚电路连接有缓冲的传输无结构的数据流全双工连接3.1TCP协议的特点备注:·
面向数据流:当两个应用程序传输大量数据时,将这些数据当作一个可划分为字节的比特流。在传输时,在接收方收到的字节流与发送方发出的完全
一样。·虚电路连接:在传输开始之前,接收应用程序和发送应用程序都要与操作系统进行交互,双方操作系统的协议软件模块通过在互联网络
上传送报文来进行通信,进行数据传输的准备与建立连接。通常用“虚电路”这个术语来描述这种连接,因为对应用程序来说这种连接好像是一条专
用线路,而实际上是由数据流传输服务提供的可靠的虚拟连接。·有缓冲的传输:使用虚电路服务来发送数据流的应用程序不断地向协议软件提
交以字节为单位的数据,并放在缓冲区中。当累积到足够多的数据时,将它们组成大小合理的数据报,再发送到互联网上传输。这样可提高传输效率
,减少网络流量。当应用程序传送特别大的数据块时,协议软件将它们划分为适合于传输的较小的数据块,并且保证在接收端收到的数据流与发送的
顺序完全相同。·无结构的数据流:TCP/IP协议并未区分结构化的数据流。使用数据流服务的应用程序必须在传输数据前就了解数据流的
内容,并对其格式进行协商。·全双工连接:TCP/IP流服务提供的连接功能是双向的,这种连接叫做全双工连接。对一个应用程序而言
,全双工连接包括了两个独立的、流向相反的数据流,而且这两个数据流之间不进行显式的交互。全双工连接的优点在于底层协议软件能够在与送来
数据流方向相反方向的数据流中传输控制信息,这种捎带的方式降低了网络流量。◆顺序号:占32比特。用来标识从TCP源端向TCP目
标端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。◆确认号:占32比特。只有ACK标志为1时,确认号字段才有
效。◆报头长度:占4比特。给出报头中32bit字的数目,它实际上指明数据从哪里开始。◆标志位(U、A、P、R、S、F):占6
比特。它们中的多个可同时被设置为1。URG:为1表示紧急指针有效;ACK:为1表示确认号有效;PSH:为1表示是带有PUS
H标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满;RST:用于复位由于主机崩溃或其他原因而出现错误
的连接;SYN:同步序号,为1表示连接请求,用于建立连接和使顺序号同步;FIN:释放一个连接。为1表示发送方已经没有数据发送
了,即关闭本方数据流◆窗口大小:占16比特。此字段用来进行流量控制。◆紧急指针:占16比特。只有当URG标志置1时紧急
指针才有效。3.2TCP报文结构0
151631数据(可变)可选项(0或
32)紧急指针(urgentpointer)校验和(checksum)窗口大小(windowsize)标志位(6)保
留(6)报头长度(4)确认号(acknowledgementnumber)顺序号(sequencenumber)目的端
口号(destinationport)源端口号(sourceport)◆TCP使用滑动窗口的机制来提高网络吞吐量,同
时解决端到端的流量控制。滑动窗口技术是简单的带重传的肯定确认机制的一个更复杂的变形,它允许发送方在等待一个确认信息之前可以发送多个
分组。如下图所示,窗口内包括8个分组的滑动窗口协议,收到对1号分组的确认信息后,窗口滑动,使得9号分组也能被发送。
3.3TCP的流量控制◆TCP的建立连接三次握手过程:如图1所示。◆TCP的释放连接的四次握手过程:如图2
所示。3.4TCP的建链全过程图1TCP建立连接的三次握手过程图2TCP释放连接的四次握手过程备注:
2.TCP建立连接过程TCP会话通过三次握手来初始化。三次握手的目标是使数据段的发送和接收同步。同时也向其他主机表明其
一次可接收的数据量(窗口大小),并建立逻辑连接。这三次握手的过程可以简述如下:·源主机发送一个同步标志位(SYN)置1的TCP数
据段。此段中同时标明初始序号(InitialSequenceNumber,ISN)。ISN是一个随时间变化的随机值。·目标主
机发回确认数据段,此段中的同步标志位(SYN)同样被置1,且确认标志位(ACK)也置1,同时在确认序号字段表明目标主机期待收到源主
机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。此外,此段中还包含目标主机的段初始序号。·源主机再回送一个数据段,
同样带有递增的发送序号和确认序号。至此为止,TCP会话的三次握手完成。3.TCP释放连接过程建立一个连接需要
三次握手,而终止一个连接要经过四次握手。这由TCP的半关闭(half-close)造成的。既然一个TCP连接是全双工(即数
据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。TCP连接的释放需要进行四次握手,步骤是:·源主机发送一个释放连
接标志位(FIN)为1的数据段发出结束会话请求。·目的主机收到一个FIN,它必须通知应用层另一端已经终止了那个方向的数据传送。
发回一个确认,并将应答信号(ACK)设置为收到序号加1,这样就终止了这个方向的传输。·同时目标主机也发出一个数据段,将FIN置1
,请求终止本方向的连接。·源主机收到FIN,再回送一个数据段,同样带有递增的确认序号。◆TCP的建立过程3.5
实例分析图1TCP建立过程这三行的核心意思就是TCP协议的三次握手图2TCP建链过程一,请求端22号机(100
.0.5.22)发送一个初始序号(SEQ)3265668752给服务器101号机(59.151.21.101)在主机100.0
.5.22上通过web页面访问www.google.cn,并通过sniffer抓包分析一下TCP的工作过程◆TCP的建立过程
3.5实例分析图3TCP建链过程二,服务器101号机收到这个序号后,将此序号加1值为3265668753作为应答
信号(ACK),同时随机产生一个初始序号(SEQ)2802975878,这两个信号同时发回到请求端22号机。图4TCP建链过
程三,请求端22号机收到后将确认序号设置为服务器的初始序号(SEQ)2802975878加1为作为2802975879应答信号
。3.5实例分析图5数据传输过程,是数据传输过程中一个发送一个接收的过程。TCP提供一种面向连接的、可靠的字节流服务。
当接收端收到来自发送端的信息时,接受端要发送一条应答信息,表示收到此信息。◆TCP的终止连接过程图7TCP终止连接过程二,
22号机收到收到FIN关闭请求后,发回一个确认,并将应答信号(ACK)设置为收到序号加1,这样就终止了这个方向的传输。图6
TCP终止连接过程一,若长时间不再浏览网页,服务器44号机(61.135.152.44)将FIN置1连同序号(SEQ)257361
1649发给客户端22号机(100.0.5.22)44号机请求终止连接◆TCP的数据传输3.5实例分析◆TCP的终
止连接过程图9TCP终止连接过程四,44号机收到FIN关闭请求后,发回一个确认,并将应答信号(ACK)设置为收到序号加1,至
此TCP连接彻底关闭。图8TCP终止连接过程三,22号机将FIN置1连同序号(SEQ)69409574发给44号机请求终止连
接。4.1UDP协议介绍UDP是一个简单的面向数据报的传输层协议,提供了不可靠的无连接传输服务。UDP的封装如下
图4.2UDP报文格式端口号:表示发送进程和接收进程。UDP长度字段指的是UDP首部和UDP数据的字节长度UDP检
验和覆盖UDP首部和UDP数据传输控制协议/Internet协议(TCP/IP)是业界标准的协议组,为跨越L
AN和WAN环境的大规模互联网络设计。如下面的时间线所示,TCP/IP始于1969年,也就是美国国防部(DoD)委
任高级资源计划机构网络(ARPANET)的时间。ARPANET是资源共享实验的结果。其目的是在美国不同地区的各种超级计算
机之间提供高速网络通讯链路。早期协议,如Telnet(用于虚拟终端仿真)和文件传输协议(FTP)是最早开发的,以指定通过
ARPANET共享信息所需的基本实用程序。随着ARPANET在规模和作用范围上的日益扩大,出现了其他两个重要协议:·在1
974年,传输控制协议(TCP)作为规范草案引入,它描述了如何在网络上建立可靠的、主机对主机的数据传输服务。·在1981
年,Internet协议(IP)以草案形式引入,它描述了如何在互联的网络之间实现寻址的标准以及如何进行数据包路由。198
3年1月1日,ARPANET开始对所有的网络通讯和基本通讯都要求标准使用TCP和IP协议。从那天开始,ARPA
NET逐渐成为众所周知的Internet,它所要求的协议逐渐变成TCP/IP协议组。TCP/IP协议组在各种TCP/I
P软件中实现,可用于多种计算机平台,并经常用于建立大的路由专用国际网络。TCP/IP的特点TCP/IP协议有一些重要的特点,
以确保在特定的时刻能满足一种重要的需求,即世界范围的数据通信。其特点包括:·开放式协议标准。可免费使用,且与具体的计算机硬件或操
作系统无关。由于它受到如此广泛的支持,因而即使不通过Internet通信,利用TCP/IP来统一不同的硬件和软件也是很理想的。
·与物理网络硬件无关。这就允许TCP/IP可以将很多不同类型的网络集成在一起,它可以适用于以太网、令牌环网、拨号线、X.25网络以
及任何其它类型的物理传输介质。·通用的寻址方案。该方案允许任何TCP/IP设备唯一的寻址整个网络中的任何其他设备,该网络甚至可以
象全球Internet那样大。·各种标准化的高级协议。可广泛而持续地提供多种用户服务。·网络接口层它只是要求能够提供给其
上层--网络层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。·互联
网层它接受来自传输层的请求,传输某个具有目的地址信息的分组。该层把分组封装到IP数据报中,填入数据报的首部(也称为报头),使
用路由算法来选择是直接把数据报发送到目标机还是把数据报发送给路由器,然后把数据报交给下面的网络接口层中的对应网络接口模块。该层还有
处理接收到的数据报,检验其正确性,使用路由算法来决定对数据报是否在本地进行处理还是继续向前传送。·传输层TCP协议是一个面向连
接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给
下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区
接收发送方发送的大量数据。UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。·应用层
其中,有基于TCP协议的,如文件传输协议(FileTransferProtocol,FTP)、虚拟终端协议(TELNET)、超
文本链接协议(HyperTextTransferProtocol,HTTP),简单邮件传输协议(SimpleMailTr
ansportProtocol,smtp);也有基于UDP协议的,如网络文件系统(NetworkFileSystemNFS
)、简单网络管理协议(SimpleNetworkManagementProtocolSNMP)、域名系统(DomainN
ameServerDNS)以及简单文件传输系统(TheTrivialFileTransferProtocolTFTP
)。1.包包(packet)是网络上传输的数据片段,也称分组。在计算机网络上,用户数据要按照规定划分为大小适中的若干组,每个
组加上包头构成一个包,这个过程称为封装(encapsulation)。网络上使用包为单位传输的目的是为了更好地实现资源共享和检错、
纠错。包是一种统称,在不同的协议不同的层次,包有不同的名字,如TCP/IP协议中,数据链路层的包叫帧(Frame),IP层的包称
为IP数据报,TCP层的包常称为TCP报文等。应用程序自己也可以设计自己的包类型,如在自己设计的socket程序中使用包
。2.网络字节顺序??由于不同体系结构的计算机存储数据的格式和顺序都不一样,要建立一个独立于任何特定厂家的机器结构或网络硬
件的互联网,就必须定义一个数据的表示标准。例如,将一台计算机上的一个32位的二进制整数发送到另一台计算机,由于不同的机器上存储整数
的字节顺序可能不一样,如Intel结构的计算机存储整数是低地址低字节数,即最低存储器地址存放整数的低位字节(叫做小端机,Lit
tleEndian),而SunSparc结构的计算机存储整数是低地址高字节数,即最低存储器地址存放整数的高位字节(叫做大端
机,BigEndian)。因此,直接把数据按照恒定的顺序发送到另一台机器上时可能会改变数字的值。为了解决字节顺序的问题,T
CP/IP协议定义了一种所有机器在互联网分组的二进制字段中必须使用的网络标准字节顺序(networkstandardbyte
order):必须首先发送整数中最高有效字节(同大端机)。因此,网络应用程序都要求遵循一个字节顺序转换规则:“主机字节顺序──
>网络字节顺序──>主机字节顺序”,即发送方将主机字节顺序的整数转换为网络字节顺序然后发送出去,接收方收到数据后将网络字节顺
序的整数转换为自己的主机字节顺序然后处理。3.服务、接口、协议服务、接口、协议是TCP/IP体系结构中非常重要的概念,它
们贯穿了整个参考模型的始终。·简单地讲,服务是指特定一层提供的功能。例如网络层提供网络间寻址的功能,我们就可以说它向它的上一层
(即传输层)提供了网间寻址服务;反之,也可以说传输层利用了网络层所提供的服务。·接口是上下层次之间调用功能和传输数据的方法。它
类似于程序设计中的函数调用,上层通过使用接口定义的方法来方便地使用下层提供的服务。·协议是对等层必须共同遵循的标准。它定义包格
式和它们的用途的规则集。大多数包都由包头和信息组成:包头常常包括诸如源和目的地址、包的长度和类型指示符等信息;信息部分可以是原始数
据,也可以包含另一个包。一个协议则规范了交换的包的格式、信息的正确顺序以及可能需要采取的附加措施。网络协议是使计算机能够通信的
标准。典型的协议规定网络上的计算机如何彼此识别、数据在传输中应采取何种格式、信息一旦到达最终目的地时应如何处理等,协议还规定对遗失
的和被破坏的传输或数据包的处理过程。IPX、TCP/IP、DECnet、AppleTalk都是网络协议的例子。4.寻址
网络的核心概念是“寻址”。在网络中,一个设备的地址是它的唯一标识。网络地址通常是由数字组成的,具有标准的、以定义好的格式。网络上的
所有设备都需要给定一个遵循标准格式的唯一标识,即设备的地址。在一个有路由能力的网络中,地址至少包括两个部分:网络部分(或域部分)和
节点部分(或主机部分)。5.端口号TCP/UDP使用IP地址标识网上主机,使用端口号来标识应用进程,即TCP/UDP用主机IP
地址和为应用进程分配的端口号来标识应用进程。端口号是16位的无符号整数,TCP的端口号和UDP的端口号是两个独立的序列。尽管相互独
立,如果TCP和UDP同时提供某种知名服务,两个协议通常选择相同的端口号。这纯粹是为了使用方便,而不是协议本身的要求。利用端口号,
一台主机上多个进程可以同时使用TCP/UDP提供的传输服务,并且这种通信是端到端的,它的数据由IP传递,但与IP数据报的传递路径无
关。端口号的分配是一个重要问题。有两种基本分配方式:第一种叫全局分配,这是一种集中控制方式,由一个公认的中央机构根据用户需要进
行统一分配,并将结果公布于众。第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回一个
本地唯一的端口号,进程再通过合适的系统调用,将自己与该端口号联系起来(绑扎)。TCP/UDP端口号的分配综合了上述两种方式。TC
P/UDP将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。因此,每一个标准服务器都拥有一个全局公认的端口(we
ll-knownport),即使在不同机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。A类地址的最高位为“0”,
其后7位是网络号,24位用作主机号。A类地址共126个网,它用于少数主机数量众多的大型网络,主机数可以16777216–
2=16777214。B类地址的最2位为“10”,其后14位为网络号,16位用作主机号。B类地址共16384个
网,它用于中等规模的网络,每个网络主机数最多为65536-2=65534。C类地址的最高位为“110”,其后21位
为网络号,8位用作主机号。C类地址共2097152个网,它用于小型网络,每个网络的主机数只能少于256–2=254
。D类地址为组播(multicast)地址,它用一个地址代表一组主机。Multicast是到一个“主机组”的IP数据报的传送
,主机组是由零个或多个用同一D类IP目的地址表示的主机集合。Multicast数据报被传递到其目的主机组的所有成员,并且同常规
单点传送的IP数据报一样可靠。主机组的成员是动态的,也就是说,主机可以在任何时间加入或离开主机组。主机组中成员在位置上和数量上
都没有限制,一个主机可以同时是一个以上主机组的成员。随着网络视频传播越来越多,multicast使用越来越广泛,将会在后面章节
详细讲解。E类是实验性地址,保留给将来使用。在同一个互联网上,A、B、C类的IP地址必须唯一。另外,它还有如下规则
:·A类地址中以127打头的保留作为内部回送地址(loopback),不能用作公共网地址;·网络号的第一个8位组不能
为0,网络号为0解释为本网,网络号为0的主机地址表示该地址是本地主机;·网络号的第一个8位组不能为255,数字255
用作广播地址;·主机号部分各位不能为全“1”,全“1”地址是广播地址,在网络号所指的网络上传播;·主机号部分各位不能为全“
0”,全“0”地址是指示本网络。版本字段版本字段有4位,用来标识创建数据报的IP协议的版本。目前的IP协议版本是4,今后将逐
渐过渡到下一代IP协议IPV6头长与全长字段头长(IHL)字段有4位。该字段紧跟在版本号字段后,用32位为单位来指出头的长度。
比较而言,全长字段指出数据报的长度,包括头和高层信息。由于该字段有16位,因此一个IP数据最多有216或65535字节。服务类型
字段服务类型字段指明数据报将被如何处理。这个字段有8位,其中3位用来标识由发送者指定的优先权或重要程度。因此,该字段提供了IP数
据报路由的优先权机制。全长包含IP头在内的数据单元的总长度(字节数)标识符与分段偏移量字段标识字段用来标明一个数据报或分段
数据报。如果一个数据报被分成2个以上的段,分段偏移量字段指出该段在被传送的初始数据报中的偏移量。因此,该字段指出一个段在整个数据报
中的位置。该字段的值是整型,以8位字节为单位,可提供64位单位的偏移量。对安全设备来说,能识别出所有分段属于同一个数据报是非常重要
的。生命期字段生命期(TTL)字段定义了数据报可存在的最大期限,这个字段用来阻止被错误寻址的数据报在因特网或专用IP网络中无休
止地游荡。由于确切的生存时间很难把握,该字段通常用跳跃站点数来度量,标志字段标志字段中有2位用于标明是如何分段的,第3位目前还
没有使用。用于分段的2位中第1位用来实现直接分段控制机制,其值为0指明数据报已分段,值为1时指明数据报没有分段。第2位为0指明该分
段是数据报的最后一个分段,为1指明后面还有分段。协议字段协议字段指出用于创建数据报携带报文的高层协议。例如,其值为十进制6时,
表示是TCP协议,值为十进制17时,表示是UDP协议。标志:占3比特,只用到低位的两个比特??MF(MoreFragme
nt)??MF=1,后面还有分片的数据包??MF=0,分片数据包的最后一个??DF(Don''tFragment
)??DF=1,不允许分片??DF=0,允许分片在一般的体制中,IP可以从TCP、UDP、ICMP和IGMP接收
数据报(即在本地生成的数据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。IP层在内存中有一个路由表。当
收到一份数据报并进行发送时,它都要对该表搜索一次。当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者
IP广播地址。如果确实是这样,数据报就被送到由IP首部协议字段所指定的协议模块进行处理。如果数据报的目的不是这些地址,那么(1)
如果IP层被设置为路由器的功能,那么就对数据报进行转发(也就是说,像下面对待发出的数据报一样处理);(2)数据报被丢弃。路由表
中的每一项都包含下面这些信息:(1)目的IP地址。它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字
段来指定。主机地址有一个非0的主机号,以指定某一特定的主机,而网络地址中的主机号为0,以指定网络中的所有主机(如以太网,令牌环网)
。(2)下一站(或下一跳)路由器(next-hoprouter)的IP地址,或者有直接连接的网络IP地址。下一站路由器是
指一个在直接相连网络上的路由器,通过它可以转发数据报。下一站路由器不是最终的目的,但是它可以把传送给它的数据报转发到最终目的。
(3)标志。其中一个标志指明目的IP地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个
直接相连的接口(4)为数据报的传输指定一个网络接口。IP路由选择是逐跳地(hop-by-hop)进行的。I
P并不知道到达任何目的的完整路径(当然,除了那些与主机直接相连的目的)。所有的IP路由选择只为数据报传输提供下一站路由器的IP地址
。它假定下一站路由器比发送数据报的主机更接近目的,而且下一站路由器与该主机是直接相连的。?单片IP数据报的MF=0。
分成多个报片后,只有最后一个报片的MF=0,其余报片的MF=1。分片位移指明该报片在原数据报中的位置。分片影响的报头字
段包括MF位、分片位移、报头长、总长度及报头校验和。各分片报头的这些字段要重新计算,其它字段只要从原报头拷贝即可。分片后的数据
报在转发过程中还可能经过某个物理网络,其允许的包长更短,这时还要再分片。对DF=1的数据报禁止分片,若途经的下一个网络要求分
片,路由器只能将此数据报丢弃。数据报头中的标识、标志和分片位移三个字段用作控制分片和重组。路由器在对数据报分片时,把报头中的大
部分字段都拷贝到每个分片的报头中,其主要目的是为了让目的主机知道每个到达的数据报片属于哪个数据报。目的主机通过数据报片的标识字段、
源IP地址及目的IP地址来识别数据报。目的主机要缓存数据报的分片,等分片到齐后进行重组。但可能有一些分片在传输中丢失,
为此IP规定了分片保留的最长时间。从数据报的最先到达的分片开始计时,若逾期分片未到齐,则目标主机丢弃已到达的分片。硬件类型
字段:指明了发送方想知道的硬件接口类型,以太网的值为1;协议类型字段:指明了发送方提供的高层协议类型,IP为0800(16
进制);硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;发送方的硬件
地址(0-3字节):源主机硬件地址的前3个字节;发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;发送方
IP(0-1字节):源主机硬件地址的前2个字节;发送方IP(2-3字节):源主机硬件地址的后2个字节;目的硬件地址
(0-1字节):目的主机硬件地址的前2个字节;目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;目的IP(
0-3字节):目的主机的IP地址。分组层的流量控制机制和前面链路层介绍的流量控制机制一样,也是采用滑动窗口技术,并用RNR分组
表示接受端忙。标准的窗口大小为2,如果主叫DTE希望改变此值,可在呼叫建立时和被叫进行协商,这是一项可选业务功能。需要注意的是,虽
然分组层和链路层都设有流量控制功能,且采用相同的机制,但是分组层控制的是某一个逻辑信道的流量,链路层控制的是DTE-DCE接口上的
总的流量。分组层也可利用REJ分组请求发送端重发,但是这是任选分组,并不要求所有网络都具备这一功能。理由是链路层已经有很好的帧
级重发纠错功能。如果没有REJ分组功能,发现分组序号跳号时就执行复位过程。由此可知,流量控制分组只有P(R),没有P(S);中断
分组两者都没有。·面向数据流:当两个应用程序传输大量数据时,将这些数据当作一个可划分为字节的比特流。在传输时,在接收方收到的字
节流与发送方发出的完全一样。·虚电路连接:在传输开始之前,接收应用程序和发送应用程序都要与操作系统进行交互,双方操作系统的协议
软件模块通过在互联网络上传送报文来进行通信,进行数据传输的准备与建立连接。通常用“虚电路”这个术语来描述这种连接,因为对应用程序来
说这种连接好像是一条专用线路,而实际上是由数据流传输服务提供的可靠的虚拟连接。·有缓冲的传输:使用虚电路服务来发送数据流的应用
程序不断地向协议软件提交以字节为单位的数据,并放在缓冲区中。当累积到足够多的数据时,将它们组成大小合理的数据报,再发送到互联网上传
输。这样可提高传输效率,减少网络流量。当应用程序传送特别大的数据块时,协议软件将它们划分为适合于传输的较小的数据块,并且保证在接收
端收到的数据流与发送的顺序完全相同。·无结构的数据流:TCP/IP协议并未区分结构化的数据流。使用数据流服务的应用程序必须在传
输数据前就了解数据流的内容,并对其格式进行协商。·全双工连接:TCP/IP流服务提供的连接功能是双向的,这种连接叫做全双工连
接。对一个应用程序而言,全双工连接包括了两个独立的、流向相反的数据流,而且这两个数据流之间不进行显式的交互。全双工连接的优点在于底
层协议软件能够在与送来数据流方向相反方向的数据流中传输控制信息,这种捎带的方式降低了网络流量。1为了实现公用数据通信网的国际
和国内互连通信,CCITT制定了国际统一的网络编号方案—X.121。2.TCP建立连接过程TCP会话通过三次握手来初始化。三次
握手的目标是使数据段的发送和接收同步。同时也向其他主机表明其一次可接收的数据量(窗口大小),并建立逻辑连接。这三次握手的过程可以简
述如下:·源主机发送一个同步标志位(SYN)置1的TCP数据段。此段中同时标明初始序号(InitialSequenceN
umber,ISN)。ISN是一个随时间变化的随机值。·目标主机发回确认数据段,此段中的同步标志位(SYN)同样被置1,且确认标
志位(ACK)也置1,同时在确认序号字段表明目标主机期待收到源主机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。此外
,此段中还包含目标主机的段初始序号。·源主机再回送一个数据段,同样带有递增的发送序号和确认序号。至此为止,TCP会
话的三次握手完成。3.TCP释放连接过程建立一个连接需要三次握手,而终止一个连接要经过四次握手。这由TCP的半关闭(hal
f-close)造成的。既然一个TCP连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。TC
P连接的释放需要进行四次握手,步骤是:·源主机发送一个释放连接标志位(FIN)为1的数据段发出结束会话请求。·目的主机收到一个
FIN,它必须通知应用层另一端已经终止了那个方向的数据传送。发回一个确认,并将应答信号(ACK)设置为收到序号加1,这样就终止了
这个方向的传输。·同时目标主机也发出一个数据段,将FIN置1,请求终止本方向的连接。·源主机收到FIN,再回送一个数据段
,同样带有递增的确认序号。UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节(发送一份0字节的UDP数
据报是OK)。这个UDP长度是有冗余的。IP数据报长度指的是数据报全长,因此UDP数据报长度是全长减去IP首部的长度(该值在首部
长度字段中指定)UDP检验和覆盖UDP首部和UDP数据。回想IP首部的检验和,它只覆盖IP的首部—并不覆盖IP数据报中的任何数据
。UDP和TCP在首部中都有覆盖它们首部和数据的检验和。UDP的检验和是可选的,而TCP的检验和是必需的。尽管UDP检验和的基本计
算方法与IP首部检验和计算方法相类似(16bit字的二进制反码和),但是它们之间存在不同的地方。首先,UDP数据报的长度可以为奇
数字节,但是检验和算法是把若干个16bit字相加。解决方法是必要时在最后增加填充字节0,这只是为了检验和的计算(也就是说,可能增
加的填充字节不被传送)。其次,UDP数据报和TCP段都包含一个12字节长的伪首部,它是为了计算检验和而设置的。伪首部包含IP首
部一些字段。其目的是让UDP两次检查数据是否已经正确到达目的地(例如,IP没有接受地址不是本主机的数据报,以及IP没有把应传给另一
高层的数据报传给UDP)。通过上图可以看出,UDP报文封装在IP报文中,其中IP报文中的协议字段17表示封装的内容为UDP。U
DP报文结构非常简单,只包含源端口,目的端口,UDP长度,校验和及内容(DNS报文)。UDP报文中的Length值等于IP数据报文
中TotalLength(总长)减去HeaderLength(IP头长度)。Length=150-20=1301.TCP/
IP概述2.IP协议及IP地址3.TCP协议4.UDP协议目录1.1TCP/IP的产生背景及特点1TCP/
IP概述◆TCP/IP的产生背景:TCP/IP始于1969年,也就是美国国防部(DoD)委任高级资源计划机构网
络(ARPANET)的时间。TCP/IP是指一整套数据通信协议,其名字是由这些协议中的两个协议组成的,即传输控制协议(TCP
)和网间协议(IP)。虽然还有很多其他协议,但是TCP和IP显然是两个最重要的协议◆TCP/IP的特点:开放式协议标准
与物理网络硬件无关通用的寻址方案各种标准化的高级协议1.2TCP/IP协议体系◆TCP/IP参考模型网络接口层:
也称为数据链路层,它是TCP/IP的最底层。互联网层:也称IP层,该层把分组封装到IP数据报中,填入数据报的首部,使用路由算
法来选择数据报的传输途径。然后把数据报交给下面的网络接口层中的对应网络接口模块。传输层:其功能是使源端主机和目标端主机上的对等实
体可以进行会话。分为TCP和UDP协议。应用层:将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面向不同的网络应
用引入了不同的应用层协议。备注:·网络接口层它只是要求能够提供给其上层--网络层一个访问接口,以便在其上传递IP分组。由
于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。·互联网层它接受来自传输层的请求,传输某个具有目的地址信息
的分组。该层把分组封装到IP数据报中,填入数据报的首部(也称为报头),使用路由算法来选择是直接把数据报发送到目标机还是把数据报
发送给路由器,然后把数据报交给下面的网络接口层中的对应网络接口模块。该层还有处理接收到的数据报,检验其正确性,使用路由算法来决定对
数据报是否在本地进行处理还是继续向前传送。·传输层TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往
互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层
。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。UDP协议是一个不可靠的
、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。·应用层其中,有基于TCP协议的,如文件传输协议(FileTr
ansferProtocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(HyperTextTransferP
rotocol,HTTP),简单邮件传输协议(SimpleMailTransportProtocol,smtp);也有基于U
DP协议的,如网络文件系统(NetworkFileSystemNFS)、简单网络管理协议(SimpleNetworkMa
nagementProtocolSNMP)、域名系统(DomainNameServerDNS)以及简单文件传输系统(Th
eTrivialFileTransferProtocolTFTP)。TCP/IP工作的特点
——层层封装应用层应用数据IP包头传输头应用消息(Message)数据段(DataSegment)I
P净荷IP报文(IPPacket)协议报文(PDU)帧(Frame)帧头帧
头实际发送的数据格式TCP/IP工作的特点——发送和接收应用层应用数据传输头I
P净荷IP包头帧净荷帧头帧尾应用层应用数据传输头IP净荷IP包头帧净荷帧头帧尾发送端接收端以太网包
:网络上传输的数据片段,也称分组。服务:指特定一层提供的功能。接口:是上下层次之间调用功能和传输数据的方法。协议:是对等层必
须共同遵循的标准。寻址:是网络的核心概念。网络上的所有设备都给定一个遵循标准格式的唯一标识,即设备的地址。1.3TCP
/IP常用概念介绍备注1.包包(packet)是网络上传输的数据片段,也称分组。在计算机网络上,用户数据要按照规定划分为大
小适中的若干组,每个组加上包头构成一个包,这个过程称为封装(encapsulation)。网络上使用包为单位传输的目的是为了更好地
实现资源共享和检错、纠错。包是一种统称,在不同的协议不同的层次,包有不同的名字,如TCP/IP协议中,数据链路层的包叫帧(Fram
e),IP层的包称为IP数据报,TCP层的包常称为TCP报文等。应用程序自己也可以设计自己的包类型,如在自己设计的soc
ket程序中使用包。2.网络字节顺序?由于不同体系结构的计算机存储数据的格式和顺序都不一样,要建立一个独立于任何特定厂家的机
器结构或网络硬件的互联网,就必须定义一个数据的表示标准。例如,将一台计算机上的一个32位的二进制整数发送到另一台计算机,由于不同的
机器上存储整数的字节顺序可能不一样,如Intel结构的计算机存储整数是低地址低字节数,即最低存储器地址存放整数的低位字节(叫做
小端机,LittleEndian),而SunSparc结构的计算机存储整数是低地址高字节数,即最低存储器地址存放整数的高位
字节(叫做大端机,BigEndian)。因此,直接把数据按照恒定的顺序发送到另一台机器上时可能会改变数字的值。为了解决字节顺
序的问题,TCP/IP协议定义了一种所有机器在互联网分组的二进制字段中必须使用的网络标准字节顺序(networkstanda
rdbyteorder):必须首先发送整数中最高有效字节(同大端机)。因此,网络应用程序都要求遵循一个字节顺序转换规则:“主机
字节顺序──>网络字节顺序──>主机字节顺序”,即发送方将主机字节顺序的整数转换为网络字节顺序然后发送出去,接收方收到数据
后将网络字节顺序的整数转换为自己的主机字节顺序然后处理。3.服务、接口、协议服务、接口、协议是TCP/IP体系结构中非常
重要的概念,它们贯穿了整个参考模型的始终。·简单地讲,服务是指特定一层提供的功能。例如网络层提供网络间寻址的功能,我们就可以说
它向它的上一层(即传输层)提供了网间寻址服务;反之,也可以说传输层利用了网络层所提供的服务。·接口是上下层次之间调用功能和传输
数据的方法。它类似于程序设计中的函数调用,上层通过使用接口定义的方法来方便地使用下层提供的服务。·协议是对等层必须共同遵循的标
准。它定义包格式和它们的用途的规则集。大多数包都由包头和信息组成:包头常常包括诸如源和目的地址、包的长度和类型指示符等信息;信息部
分可以是原始数据,也可以包含另一个包。一个协议则规范了交换的包的格式、信息的正确顺序以及可能需要采取的附加措施。网络协议是使计
算机能够通信的标准。典型的协议规定网络上的计算机如何彼此识别、数据在传输中应采取何种格式、信息一旦到达最终目的地时应如何处理等,协
议还规定对遗失的和被破坏的传输或数据包的处理过程。IPX、TCP/IP、DECnet、AppleTalk都是网络协议的例子。
4.寻址网络的核心概念是“寻址”。在网络中,一个设备的地址是它的唯一标识。网络地址通常是由数字组成的,具有标准的、以定义好的
格式。网络上的所有设备都需要给定一个遵循标准格式的唯一标识,即设备的地址。在一个有路由能力的网络中,地址至少包括两个部分:网络部分
(或域部分)和节点部分(或主机部分)。5.端口号TCP/UDP使用IP地址标识网上主机,使用端口号来标识应用进程,即TCP/U
DP用主机IP地址和为应用进程分配的端口号来标识应用进程。端口号是16位的无符号整数,TCP的端口号和UDP的端口号是两个独立的序
列。尽管相互独立,如果TCP和UDP同时提供某种知名服务,两个协议通常选择相同的端口号。这纯粹是为了使用方便,而不是协议本身的要求
。利用端口号,一台主机上多个进程可以同时使用TCP/UDP提供的传输服务,并且这种通信是端到端的,它的数据由IP传递,但与IP数据
报的传递路径无关。端口号的分配是一个重要问题。有两种基本分配方式:第一种叫全局分配,这是一种集中控制方式,由一个公认的中央机构
根据用户需要进行统一分配,并将结果公布于众。第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操
作系统返回一个本地唯一的端口号,进程再通过合适的系统调用,将自己与该端口号联系起来(绑扎)。TCP/UDP端口号的分配综合了上述
两种方式。TCP/UDP将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。因此,每一个标准服务器都拥有一个全局公
认的端口(well-knownport),即使在不同机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。2IP协
议及IP地址IP协议是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传
输。IP提供的不可靠、无连接的数据报传送服务使得各种各样的物理网络只要能够提供数据报传输就能够互联,这成为Internet在数年间
就风靡全球的主要原因。不可靠(unreliable):是它不能保证IP数据报能成功地到达目的地。IP仅提供尽最大努力投递(be
st-effortdelivery)的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法
:丢弃该数据报,然后发送ICMP消息报给发送端。任何要求的可靠性必须由上层来提供(如TCP)。无连接(connection
less):是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如
果发送端向相同的接收端发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可
能在A到达之前先到达。IP提供了三个重要的定义:(1)IP定义了在整个TCP/IP互联网上数据传输所用的
基本单元,因此它规定了互联网上传输数据的确切格式;(2)IP软件完成路由选择的功能,选择一个数据发送的路径;
(3)除了数据格式和路由选择的精确而正式的定义外,IP还包括了一组嵌入了不可靠分组投递思想的规则,这些规则指明了主机和路由
器应该如何处理分组、和实际如何发出错误信息以及在什么情况下可以放弃分组。2.1IP协议简介◆IP地址简介
为了使连入Internet的众多主机在通信时能够相互识别,Internet上的每一台主机和路由器都分配有一个唯一的32位地址。
一个IP地址有4个字节组成,字节之间用句号分隔,每个字节表示为从0~255的十进制数(8位二进制数最大为11111111
,即十进制数255),这个表示法称为IP地址的点分十进制表示法(dotteddecimalnotation)。2.2IP
地址及子网◆IP地址分类IP协议规定了IP地址分为五类:A~E,其中A、B、C三类是基本类型,具体分
类见下图。备注:A类地址的最高位为“0”,其后7位是网络号,24位用作主机号。A类地址共126个网,它用于少数主
机数量众多的大型网络,主机数可以16777216–2=16777214。B类地址的最2位为“10”,其后14位为网络号
,16位用作主机号。B类地址共16384个网,它用于中等规模的网络,每个网络主机数最多为65536-2=65534
。C类地址的最高位为“110”,其后21位为网络号,8位用作主机号。C类地址共2097152个网,它用于小型网络,
每个网络的主机数只能少于256–2=254。D类地址为组播(multicast)地址,它用一个地址代表一组主机。Mu
lticast是到一个“主机组”的IP数据报的传送,主机组是由零个或多个用同一D类IP目的地址表示的主机集合。Multicast
数据报被传递到其目的主机组的所有成员,并且同常规单点传送的IP数据报一样可靠。主机组的成员是动态的,也就是说,主机可以在任何
时间加入或离开主机组。主机组中成员在位置上和数量上都没有限制,一个主机可以同时是一个以上主机组的成员。随着网络视频传播越来越多,
multicast使用越来越广泛,将会在后面章节详细讲解。E类是实验性地址,保留给将来使用。在同一个互联网上,A、B、
C类的IP地址必须唯一。另外,它还有如下规则:·A类地址中以127打头的保留作为内部回送地址(loopback),
不能用作公共网地址;·网络号的第一个8位组不能为0,网络号为0解释为本网,网络号为0的主机地址表示该地址是本地主机;·网
络号的第一个8位组不能为255,数字255用作广播地址;·主机号部分各位不能为全“1”,全“1”地址是广播地址,在网络
号所指的网络上传播;·主机号部分各位不能为全“0”,全“0”地址是指示本网络。◆子网与子网掩码:在实际应用中
,IP地址还可以分层,将一个网络分为多个子网。在分层时,不再把IP地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再
分成一个子网号和一个主机号。例如一个B类网,可以把主机地址中前8位用来表示子网地址,后8位留作主机地址,这种B类网IP地址
格式如图所示。这样就允许有254个子网,每个子网可以有254台主机。2.2IP地址及子网同一网络中的不同子网用子网掩码来划
分,子网掩码(subnetmask)是网际地址中对应网络标识编码的各位1,对应主机标识编码的各位为0的一个四字节整数,也叫做子网
屏蔽码。对于A、B、C三类网络来说,它们都有自己默认的掩码,即没有划分子网时的掩码,如下图所示。
IP基础-IP地址一、IP地址特点1、ClassA:第一个数字<128。2、ClassB:第一个数字大于等于128,且小
于192。3、ClassC:第一个数字大于等于192,且小于224二、优点:1、路由器从IP地址的第一个数字便可以判断所属
网络的等级,进而得知net-id和Host-id为何。例如:某主机的IP地址为168.95.1.84。我们从第一个数字得知这是一
个B类地址。因此,该IP地址的前16bits为net-id,后16bits为Host-id.2、依据企业或单位的实际需求,可分配
A、B、C三种等级的net-id,让IP地址的分配更有效。传输控制协议/Internet协议(TCP/IP)是
业界标准的协议组,为跨越LAN和WAN环境的大规模互联网络设计。如下面的时间线所示,TCP/IP始于1969年,也就
是美国国防部(DoD)委任高级资源计划机构网络(ARPANET)的时间。ARPANET是资源共享实验的结果。其目的是
在美国不同地区的各种超级计算机之间提供高速网络通讯链路。早期协议,如Telnet(用于虚拟终端仿真)和文件传输协议(FTP)
是最早开发的,以指定通过ARPANET共享信息所需的基本实用程序。随着ARPANET在规模和作用范围上的日益扩大,出现了
其他两个重要协议:·在1974年,传输控制协议(TCP)作为规范草案引入,它描述了如何在网络上建立可靠的、主机对主机的数
据传输服务。·在1981年,Internet协议(IP)以草案形式引入,它描述了如何在互联的网络之间实现寻址的标准以及
如何进行数据包路由。1983年1月1日,ARPANET开始对所有的网络通讯和基本通讯都要求标准使用TCP和IP
协议。从那天开始,ARPANET逐渐成为众所周知的Internet,它所要求的协议逐渐变成TCP/IP协议组。TCP/I
P协议组在各种TCP/IP软件中实现,可用于多种计算机平台,并经常用于建立大的路由专用国际网络。TCP/IP的特点TCP
/IP协议有一些重要的特点,以确保在特定的时刻能满足一种重要的需求,即世界范围的数据通信。其特点包括:·开放式协议标准。可免费使
用,且与具体的计算机硬件或操作系统无关。由于它受到如此广泛的支持,因而即使不通过Internet通信,利用TCP/IP来统一不同
的硬件和软件也是很理想的。·与物理网络硬件无关。这就允许TCP/IP可以将很多不同类型的网络集成在一起,它可以适用于以太网、令牌
环网、拨号线、X.25网络以及任何其它类型的物理传输介质。·通用的寻址方案。该方案允许任何TCP/IP设备唯一的寻址整个网络中的
任何其他设备,该网络甚至可以象全球Internet那样大。·各种标准化的高级协议。可广泛而持续地提供多种用户服务。·网络接
口层它只是要求能够提供给其上层--网络层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网
络类型的不同而不同。·互联网层它接受来自传输层的请求,传输某个具有目的地址信息的分组。该层把分组封装到IP数据报中,填入数
据报的首部(也称为报头),使用路由算法来选择是直接把数据报发送到目标机还是把数据报发送给路由器,然后把数据报交给下面的网络接口层中
的对应网络接口模块。该层还有处理接收到的数据报,检验其正确性,使用路由算法来决定对数据报是否在本地进行处理还是继续向前传送。·传
输层TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下
来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢
接收的接收方没有足够的缓冲区接收发送方发送的大量数据。UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流
量控制的场合。·应用层其中,有基于TCP协议的,如文件传输协议(FileTransferProtocol,FTP)、虚拟
终端协议(TELNET)、超文本链接协议(HyperTextTransferProtocol,HTTP),简单邮件传输协议(
SimpleMailTransportProtocol,smtp);也有基于UDP协议的,如网络文件系统(NetworkF
ileSystemNFS)、简单网络管理协议(SimpleNetworkManagementProtocolSNMP)
、域名系统(DomainNameServerDNS)以及简单文件传输系统(TheTrivialFileTransfer
ProtocolTFTP)。1.包包(packet)是网络上传输的数据片段,也称分组。在计算机网络上,用户数据要按照规定
划分为大小适中的若干组,每个组加上包头构成一个包,这个过程称为封装(encapsulation)。网络上使用包为单位传输的目的是为
了更好地实现资源共享和检错、纠错。包是一种统称,在不同的协议不同的层次,包有不同的名字,如TCP/IP协议中,数据链路层的包叫帧(
Frame),IP层的包称为IP数据报,TCP层的包常称为TCP报文等。应用程序自己也可以设计自己的包类型,如在自己设计的
socket程序中使用包。2.网络字节顺序??由于不同体系结构的计算机存储数据的格式和顺序都不一样,要建立一个独立于任
何特定厂家的机器结构或网络硬件的互联网,就必须定义一个数据的表示标准。例如,将一台计算机上的一个32位的二进制整数发送到另一台计算
机,由于不同的机器上存储整数的字节顺序可能不一样,如Intel结构的计算机存储整数是低地址低字节数,即最低存储器地址存放整数的
低位字节(叫做小端机,LittleEndian),而SunSparc结构的计算机存储整数是低地址高字节数,即最低存储器地址
存放整数的高位字节(叫做大端机,BigEndian)。因此,直接把数据按照恒定的顺序发送到另一台机器上时可能会改变数字的值。
为了解决字节顺序的问题,TCP/IP协议定义了一种所有机器在互联网分组的二进制字段中必须使用的网络标准字节顺序(network
standardbyteorder):必须首先发送整数中最高有效字节(同大端机)。因此,网络应用程序都要求遵循一个字节顺序转
换规则:“主机字节顺序──>网络字节顺序──>主机字节顺序”,即发送方将主机字节顺序的整数转换为网络字节顺序然后发送出去,
接收方收到数据后将网络字节顺序的整数转换为自己的主机字节顺序然后处理。3.服务、接口、协议服务、接口、协议是TCP/IP
体系结构中非常重要的概念,它们贯穿了整个参考模型的始终。·简单地讲,服务是指特定一层提供的功能。例如网络层提供网络间寻址的功能
,我们就可以说它向它的上一层(即传输层)提供了网间寻址服务;反之,也可以说传输层利用了网络层所提供的服务。·接口是上下层次之间
调用功能和传输数据的方法。它类似于程序设计中的函数调用,上层通过使用接口定义的方法来方便地使用下层提供的服务。·协议是对等层必
须共同遵循的标准。它定义包格式和它们的用途的规则集。大多数包都由包头和信息组成:包头常常包括诸如源和目的地址、包的长度和类型指示符
等信息;信息部分可以是原始数据,也可以包含另一个包。一个协议则规范了交换的包的格式、信息的正确顺序以及可能需要采取的附加措施。
网络协议是使计算机能够通信的标准。典型的协议规定网络上的计算机如何彼此识别、数据在传输中应采取何种格式、信息一旦到达最终目的地时应
如何处理等,协议还规定对遗失的和被破坏的传输或数据包的处理过程。IPX、TCP/IP、DECnet、AppleTalk都是网
络协议的例子。4.寻址网络的核心概念是“寻址”。在网络中,一个设备的地址是它的唯一标识。网络地址通常是由数字组成的,具有标准
的、以定义好的格式。网络上的所有设备都需要给定一个遵循标准格式的唯一标识,即设备的地址。在一个有路由能力的网络中,地址至少包括两个
部分:网络部分(或域部分)和节点部分(或主机部分)。5.端口号TCP/UDP使用IP地址标识网上主机,使用端口号来标识应用进程
,即TCP/UDP用主机IP地址和为应用进程分配的端口号来标识应用进程。端口号是16位的无符号整数,TCP的端口号和UDP的端口号
是两个独立的序列。尽管相互独立,如果TCP和UDP同时提供某种知名服务,两个协议通常选择相同的端口号。这纯粹是为了使用方便,而不是
协议本身的要求。利用端口号,一台主机上多个进程可以同时使用TCP/UDP提供的传输服务,并且这种通信是端到端的,它的数据由IP传递
,但与IP数据报的传递路径无关。端口号的分配是一个重要问题。有两种基本分配方式:第一种叫全局分配,这是一种集中控制方式,由一个
公认的中央机构根据用户需要进行统一分配,并将结果公布于众。第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系
统提出申请,操作系统返回一个本地唯一的端口号,进程再通过合适的系统调用,将自己与该端口号联系起来(绑扎)。TCP/UDP端口号的
分配综合了上述两种方式。TCP/UDP将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。因此,每一个标准服务器都
拥有一个全局公认的端口(well-knownport),即使在不同机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。
A类地址的最高位为“0”,其后7位是网络号,24位用作主机号。A类地址共126个网,它用于少数主机数量众多的大型网络,
主机数可以16777216–2=16777214。B类地址的最2位为“10”,其后14位为网络号,16位用作主机号。
B类地址共16384个网,它用于中等规模的网络,每个网络主机数最多为65536-2=65534。C类地址的最高位
为“110”,其后21位为网络号,8位用作主机号。C类地址共2097152个网,它用于小型网络,每个网络的主机数只能少
于256–2=254。D类地址为组播(multicast)地址,它用一个地址代表一组主机。Multicast是到一个
“主机组”的IP数据报的传送,主机组是由零个或多个用同一D类IP目的地址表示的主机集合。Multicast数据报被传递到其目的
主机组的所有成员,并且同常规单点传送的IP数据报一样可靠。主机组的成员是动态的,也就是说,主机可以在任何时间加入或离开主机组。
主机组中成员在位置上和数量上都没有限制,一个主机可以同时是一个以上主机组的成员。随着网络视频传播越来越多,multicast使
用越来越广泛,将会在后面章节详细讲解。E类是实验性地址,保留给将来使用。在同一个互联网上,A、B、C类的IP地址必
须唯一。另外,它还有如下规则:·A类地址中以127打头的保留作为内部回送地址(loopback),不能用作公共网地址;
·网络号的第一个8位组不能为0,网络号为0解释为本网,网络号为0的主机地址表示该地址是本地主机;·网络号的第一个8位组不能
为255,数字255用作广播地址;·主机号部分各位不能为全“1”,全“1”地址是广播地址,在网络号所指的网络上传播;
·主机号部分各位不能为全“0”,全“0”地址是指示本网络。版本字段版本字段有4位,用来标识创建数据报的IP协议的版本。目前
的IP协议版本是4,今后将逐渐过渡到下一代IP协议IPV6头长与全长字段头长(IHL)字段有4位。该字段紧跟在版本号字段后,用
32位为单位来指出头的长度。比较而言,全长字段指出数据报的长度,包括头和高层信息。由于该字段有16位,因此一个IP数据最多有216
或65535字节。服务类型字段服务类型字段指明数据报将被如何处理。这个字段有8位,其中3位用来标识由发送者指定的优先权或重要程
度。因此,该字段提供了IP数据报路由的优先权机制。全长包含IP头在内的数据单元的总长度(字节数)标识符与分段偏移量字段标识
字段用来标明一个数据报或分段数据报。如果一个数据报被分成2个以上的段,分段偏移量字段指出该段在被传送的初始数据报中的偏移量。因此,
该字段指出一个段在整个数据报中的位置。该字段的值是整型,以8位字节为单位,可提供64位单位的偏移量。对安全设备来说,能识别出所有分
段属于同一个数据报是非常重要的。生命期字段生命期(TTL)字段定义了数据报可存在的最大期限,这个字段用来阻止被错误寻址的数据报
在因特网或专用IP网络中无休止地游荡。由于确切的生存时间很难把握,该字段通常用跳跃站点数来度量,标志字段标志字段中有2位用于标
明是如何分段的,第3位目前还没有使用。用于分段的2位中第1位用来实现直接分段控制机制,其值为0指明数据报已分段,值为1时指明数据报
没有分段。第2位为0指明该分段是数据报的最后一个分段,为1指明后面还有分段。协议字段协议字段指出用于创建数据报携带报文的高层协
议。例如,其值为十进制6时,表示是TCP协议,值为十进制17时,表示是UDP协议。标志:占3比特,只用到低位的两个比特??
MF(MoreFragment)??MF=1,后面还有分片的数据包??MF=0,分片数据包的最后一个??DF(
Don''tFragment)??DF=1,不允许分片??DF=0,允许分片在一般的体制中,IP可以从TCP、U
DP、ICMP和IGMP接收数据报(即在本地生成的数据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。I
P层在内存中有一个路由表。当收到一份数据报并进行发送时,它都要对该表搜索一次。当数据报来自某个网络接口时,IP首先检查目的IP地址
是否为本机的IP地址之一或者IP广播地址。如果确实是这样,数据报就被送到由IP首部协议字段所指定的协议模块进行处理。如果数据报的目
的不是这些地址,那么(1)如果IP层被设置为路由器的功能,那么就对数据报进行转发(也就是说,像下面对待发出的数据报一样处理);
(2)数据报被丢弃。路由表中的每一项都包含下面这些信息:(1)目的IP地址。它既可以是一个完整的主机地址,也可以是一个
网络地址,由该表目中的标志字段来指定。主机地址有一个非0的主机号,以指定某一特定的主机,而网络地址中的主机号为0,以指定网络中的所
有主机(如以太网,令牌环网)。(2)下一站(或下一跳)路由器(next-hoprouter)的IP地址,或者有直接连接的
网络IP地址。下一站路由器是指一个在直接相连网络上的路由器,通过它可以转发数据报。下一站路由器不是最终的目的,但是它可以把传送给它
的数据报转发到最终目的。(3)标志。其中一个标志指明目的IP地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为
真正的下一站路由器,还是一个直接相连的接口(4)为数据报的传输指定一个网络接口。IP路由选择是逐跳地(ho
p-by-hop)进行的。IP并不知道到达任何目的的完整路径(当然,除了那些与主机直接相连的目的)。所有的IP路由选择只为数据报传
输提供下一站路由器的IP地址。它假定下一站路由器比发送数据报的主机更接近目的,而且下一站路由器与该主机是直接相连的。?单片
IP数据报的MF=0。分成多个报片后,只有最后一个报片的MF=0,其余报片的MF=1。分片位移指明该报片在原数据
报中的位置。分片影响的报头字段包括MF位、分片位移、报头长、总长度及报头校验和。各分片报头的这些字段要重新计算,其它字段只要从
原报头拷贝即可。分片后的数据报在转发过程中还可能经过某个物理网络,其允许的包长更短,这时还要再分片。对DF=1的数据报禁止分
片,若途经的下一个网络要求分片,路由器只能将此数据报丢弃。数据报头中的标识、标志和分片位移三个字段用作控制分片和重组。路由器在
对数据报分片时,把报头中的大部分字段都拷贝到每个分片的报头中,其主要目的是为了让目的主机知道每个到达的数据报片属于哪个数据报。目的
主机通过数据报片的标识字段、源IP地址及目的IP地址来识别数据报。目的主机要缓存数据报的分片,等分片到齐后进行重组。但
可能有一些分片在传输中丢失,为此IP规定了分片保留的最长时间。从数据报的最先到达的分片开始计时,若逾期分片未到齐,则目标主机丢
弃已到达的分片。硬件类型字段:指明了发送方想知道的硬件接口类型,以太网的值为1;协议类型字段:指明了发送方提供的高层协
议类型,IP为0800(16进制);硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意
硬件和任意协议的网络中使用;操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响
应为4;发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;发送方IP(0-1字节):源主机硬件地址的前2个字节;发送方IP(2-3字节):源主机硬件地址的后2个字节;目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;目的IP(0-3字节):目的主机的IP地址。分组层的流量控制机制和前面链路层介绍的流量控制机制一样,也是采用滑动窗口技术,并用RNR分组表示接受端忙。标准的窗口大小为2,如果主叫DTE希望改变此值,可在呼叫建立时和被叫进行协商,这是一项可选业务功能。需要注意的是,虽然分组层和链路层都设有流量控制功能,且采用相同的机制,但是分组层控制的是某一个逻辑信道的流量,链路层控制的是DTE-DCE接口上的总的流量。分组层也可利用REJ分组请求发送端重发,但是这是任选分组,并不要求所有网络都具备这一功能。理由是链路层已经有很好的帧级重发纠错功能。如果没有REJ分组功能,发现分组序号跳号时就执行复位过程。由此可知,流量控制分组只有P(R),没有P(S);中断分组两者都没有。·面向数据流:当两个应用程序传输大量数据时,将这些数据当作一个可划分为字节的比特流。在传输时,在接收方收到的字节流与发送方发出的完全一样。·虚电路连接:在传输开始之前,接收应用程序和发送应用程序都要与操作系统进行交互,双方操作系统的协议软件模块通过在互联网络上传送报文来进行通信,进行数据传输的准备与建立连接。通常用“虚电路”这个术语来描述这种连接,因为对应用程序来说这种连接好像是一条专用线路,而实际上是由数据流传输服务提供的可靠的虚拟连接。·有缓冲的传输:使用虚电路服务来发送数据流的应用程序不断地向协议软件提交以字节为单位的数据,并放在缓冲区中。当累积到足够多的数据时,将它们组成大小合理的数据报,再发送到互联网上传输。这样可提高传输效率,减少网络流量。当应用程序传送特别大的数据块时,协议软件将它们划分为适合于传输的较小的数据块,并且保证在接收端收到的数据流与发送的顺序完全相同。·无结构的数据流:TCP/IP协议并未区分结构化的数据流。使用数据流服务的应用程序必须在传输数据前就了解数据流的内容,并对其格式进行协商。·全双工连接:TCP/IP流服务提供的连接功能是双向的,这种连接叫做全双工连接。对一个应用程序而言,全双工连接包括了两个独立的、流向相反的数据流,而且这两个数据流之间不进行显式的交互。全双工连接的优点在于底层协议软件能够在与送来数据流方向相反方向的数据流中传输控制信息,这种捎带的方式降低了网络流量。1为了实现公用数据通信网的国际和国内互连通信,CCITT制定了国际统一的网络编号方案—X.121。2.TCP建立连接过程TCP会话通过三次握手来初始化。三次握手的目标是使数据段的发送和接收同步。同时也向其他主机表明其一次可接收的数据量(窗口大小),并建立逻辑连接。这三次握手的过程可以简述如下:·源主机发送一个同步标志位(SYN)置1的TCP数据段。此段中同时标明初始序号(InitialSequenceNumber,ISN)。ISN是一个随时间变化的随机值。·目标主机发回确认数据段,此段中的同步标志位(SYN)同样被置1,且确认标志位(ACK)也置1,同时在确认序号字段表明目标主机期待收到源主机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。此外,此段中还包含目标主机的段初始序号。·源主机再回送一个数据段,同样带有递增的发送序号和确认序号。至此为止,TCP会话的三次握手完成。3.TCP释放连接过程建立一个连接需要三次握手,而终止一个连接要经过四次握手。这由TCP的半关闭(half-close)造成的。既然一个TCP连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。TCP连接的释放需要进行四次握手,步骤是:·源主机发送一个释放连接标志位(FIN)为1的数据段发出结束会话请求。·目的主机收到一个FIN,它必须通知应用层另一端已经终止了那个方向的数据传送。发回一个确认,并将应答信号(ACK)设置为收到序号加1,这样就终止了这个方向的传输。·同时目标主机也发出一个数据段,将FIN置1,请求终止本方向的连接。·源主机收到FIN,再回送一个数据段,同样带有递增的确认序号。UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节(发送一份0字节的UDP数据报是OK)。这个UDP长度是有冗余的。IP数据报长度指的是数据报全长,因此UDP数据报长度是全长减去IP首部的长度(该值在首部长度字段中指定)UDP检验和覆盖UDP首部和UDP数据。回想IP首部的检验和,它只覆盖IP的首部—并不覆盖IP数据报中的任何数据。UDP和TCP在首部中都有覆盖它们首部和数据的检验和。UDP的检验和是可选的,而TCP的检验和是必需的。尽管UDP检验和的基本计算方法与IP首部检验和计算方法相类似(16bit字的二进制反码和),但是它们之间存在不同的地方。首先,UDP数据报的长度可以为奇数字节,但是检验和算法是把若干个16bit字相加。解决方法是必要时在最后增加填充字节0,这只是为了检验和的计算(也就是说,可能增加的填充字节不被传送)。其次,UDP数据报和TCP段都包含一个12字节长的伪首部,它是为了计算检验和而设置的。伪首部包含IP首部一些字段。其目的是让UDP两次检查数据是否已经正确到达目的地(例如,IP没有接受地址不是本主机的数据报,以及IP没有把应传给另一高层的数据报传给UDP)。通过上图可以看出,UDP报文封装在IP报文中,其中IP报文中的协议字段17表示封装的内容为UDP。UDP报文结构非常简单,只包含源端口,目的端口,UDP长度,校验和及内容(DNS报文)。UDP报文中的Length值等于IP数据报文中TotalLength(总长)减去HeaderLength(IP头长度)。Length=150-20=130
献花(0)
+1
(本文系新用户0510Q...首藏)