TCP.IP课程实验报告

更新时间:2024-02-01 12:31:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

TCP/IP协议族分析

课程设计

目录

第一章 TCP/IP 概述??????????????????????????????3

1.1 TCP/IP协议族定义???????????????????????????3 1.2 TCP/IP协议族的特点??????????????????????????3 1.3 TCP/IP协议族的分层??????????????????????????3 1.4 TCP/IP协议族的结构??????????????????????????4 第二章 地址解析协议(ARP)——链路层?????????????????????5

2.1 ARP概述???????????????????????????????6 2.2 ARP的组成??????????????????????????????6 2.3 ARP工作原理?????????????????????????????7 2.4 ARP帧结构??????????????????????????????7 第三章 因特网控制消息协议(ICMP)——网络层?????????????????13

3.1 ICMP协议简介?????????????????????????????13 3.2 ICMP消息结构?????????????????????????????14 3.3 Echo Request和Echo Reply查询消息????????????????????14 3.4 ICMP各字段分析????????????????????????????15 第四章 传输控制协议(TCP)——运输层?????????????????????18

4.1 TCP协议简介??????????????????????????????18 4.2 TCP数据包结构?????????????????????????????19 4.3 TCP数据包分析?????????????????????????????20 4.4 TCP三次“握手”????????????????????????????25 第五章 普通文件传输协议(TFTP)——应用层???????????????????27

5.1 TFTP数据传输模式??????????????????????????? 27 5.2 TFTP会话实例????????????????????????????? 28 总结??????????????????????????????????????31 参考文献????????????????????????????????????31

2

第一章 TCP/IP 协议族概述

1.1 TCP/IP协议族定义

TCP/IP协议族是指一整套数据通信协议, 其名字是由这些协议中的两个协议组成的,即传输控制协议(Transmission Control Protocol ——TCP)和网间协议(Internet Protocol——IP)。虽然还有很多其他协议,但是TCP和IP显然是两个最重要的协议。

1.2 TCP/IP协议族的特点

TCP/IP协议族有一些重要的特点,以确保在特定的时刻能满足一种重要的需求,即世界范围内的数据通信。其特点包括:

? 开放式协议标准。可免费使用,且与具体的计算机硬件或操作系统无关。由于它受 到如此广泛的支持,因而即使不通过Internet 通信,利用TCP/IP来统一不同的硬件和软件也是很理想的。

? 与物理网络硬件无关。这就允许TCP/IP可以将很多不同类型的网络集成在一起,它可以适用于以太网、令牌环网、拨号线、X.25网络以及任何其它类型的物理传输介质。

? 通用的寻址方案。该方案允许任何TCP/IP设备唯一的寻址整个网络中的任何其他设备,该网络甚至可以像全球Internet那样大。

? 各种标准化的高级协议。可广泛而持续地提供多种用户服务。

1.3 TCP/IP协议族的分层

图1-1 TCP/IP协议族中不同层次的协议

3

1.3.1. 链路层

有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。

1.3.2. 网络层

有时也称作互连网层,处理分组在网络中的活动,例如分组的路由选择。在TCP/IP协议族组件中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互连网控制报文协议),以及IGMP协议(Internet组管理协议)。

1.3.3. 运输层

主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族组件中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。

TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。

而另一方面,UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。

这两种运输层协议分别在不同的应用程序中有不同的用途。

1.3.4. 应用层

负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:

? Telnet:远程登录。 ? FTP:文件传输协议。

? SMTP:用于电子邮件的简单邮件传输协议。 ? SNMP:简单网络管理协议。 ? TFTP:普通文件传输协议

1.4 TCP/IP协议族的结构

在描述TCP/IP时,一般只定义如图1-2所示的4层模型:应用层、主机对主机传输层(即运输层)、网间层和网络访问层(即链路层)。

4

4.应用层 由使用网络的应用程序和 进程组成3.主机对主机传输层 提供端对端数据传输服务2.网间层 定义数据报和处理数据路由 选择1. 网络访问层由访问物理网络的例程组成

图1-2 TCP/IP协议族结构中的各层

在TCP的应用层中,将数据称为“数据流(stream)”;而在用户数据报协议(UDP)的应用层中,则将数据称为 “报文(message)”。TCP将它的数据结构称作“段(segment)”。而UDP将它的数据结构称作“分组(packet)”,网间层则将所有数据看作是一个块,称为“数据报(datagram)”。TCP/IP使用很多种不同类型的底层网络,每一种都用不同的术语定义它传输的数据,大多数网络将传输的数据称为“分组”或“帧(frame)”。

TCPUDP应用层流报文传输层段数据报分组网间层数据报帧网络访问层帧 图1-3 数据结构

第二章 地址解析协议(ARP)——链路层

由于不同层和驻留于这些层上的地址的复杂性,因此必须有一种解析不同的计算机编址策略间差异的方法。地址解析就起了这样的作用,并且使得端设备可以动态地找到本地的硬件地址以便向远端主机传输数据,或者取得必要的逻辑IP地址和配置参数以便加入到网络。如果没有某种类型的地址解析方法,远端主机间就不能通信。在IP界,地址解析指的是将一个协议地址转换成一个相应的物理地址或反之,例如将一个IP地址转换成一个以太网地

5

址。可以用四种地址解析的方法:

? ARP(地址解析协议)

? RARP(反向地址解析协议) ? BOOTP(引导协议)

? DHCP(动态主机配置协议)

在这四种地址解析协议中,ARP是唯一的一个将网络层地址解析为硬件地址的协议,而RARP、BOOTP和DHCP协议则都是允许一个端设备可以动态地将其硬件地址解析为网络层的逻辑地址。

图2-1 ARP将网络层的逻辑地址解析为本地的硬件地址

2.1 ARP概述

ARP是像以太网和令牌环这样的访问共享、基于广播的网络技术所使用的协议。该协议将节点的转发IP地址解析成对应的MAC(Media Access Control——媒介访问控制)地址。MAC地址也称为物理地址、硬件地址或网卡地址。解析后的MAC地址成为以太网或令牌环报头中的目标MAC地址,IP数据报在媒介上发送时寻到该地址。ARP将因特网层地址(IP地址)解析成网络接口层地址(MAC地址)。

转发IP地址不必与IP数据报的目标IP地址相同,每个发出的IP数据报经路由处理后都变成一个接口和转发IP地址。对于直接在同一子网上传送的目标节点,转发IP地址是数据报的目标IP地址。对于间接传送到远程目标节点,转发IP地址是转发主机所在子网上的路由器的IP地址。

IP独立于任何特定的网络接口层技术。因此,从转发的IP地址判断不出目的地的网络接口层地址。例如,以太网和令牌环MAC地址的长度是6字节,IP地址的长度是4字节。MAC地址在网卡的制造过程中就已分配好了,而IP地址是由网络管理员分配的。对某个具体的IP节点而言,这两种地址的指定方式之间没有任何关系,因此不可能从一个地址判断出另一个地址。ARP是一种基于广播的请求答复协议,提供了将正在转发的IP地址映射为它们相应的MAC地址的动态解析能力。

2.2 ARP的组成

ARP主要由下面两类信息组成:

? 转发节点使用ARP请求信息请求某个转发IP的地址的MAC地址。ARP请求信息是一个MAC级广播帧,旨在到达发送ARP请求信息的接口所连接的物理网段上的所有节点。发送ARP请求信息的节点称为ARP请求端。

? 用ARP答复信息答复ARP请求端。IP地址与ARP请求信息所请求的IP地址相同的节点发送ARP答复信息。ARP答复信息是一个单播的MAC帧,发送到ARP请求端的目标MAC地址。发送ARP答复信息的节点称为ARP答复端。

由于ARP请求信息是一个MAC级广播包,所有要被解析的转发IP地址都必须能直接从发送ARP请求信息的接口到达(位于同一个子网上)。对于正确的路由表项始终都是这样。

6

如果一个路由表项包含的转发IP地址无效,从接口无法直接到达该地址,ARP将不能解析这个转发的IP地址。

同一广播域内的所有节点都收到ARP请求信息。广播域是传播广播帧的网络的一部分。集线器、网桥以及Layer 2交换机传播ARP请求信息。但是,IP路由器或Layer 3交换机不传播ARP帧。

2.3 ARP工作原理

ARP协议主要负责把IP地址转换成网卡硬件地址。

ARP完成的这个任务过程是:发送一个广播,这个广播包含了一个指定的IP地址,要求正在使用这个IP地址的主机响应它的硬件地址。使用这个IP的主机侦听到这个广播(局域网中其他的设备也会侦听到),就会给源端反馈一个ARP响应。这个响应不再是网络上的广播,而是直接发送给那个发出请求的主机。

ARP包直接与数据链路层通信,这和IP包是一样的,但是ARP包和IP包是完全独立的,ARP协议ID是0806,而IP使用的是0800,ARP和IP都是直接位于数据链路层的上层,在数据链路层中有个TYPE字段,指明上层协议的类型,ARP为0x0806,IP为0x0800.

ARP包含几个字段,但是其中只有5个字段是用来提供ARP的整体功能:源端的硬件地址,源端的IP地址,目标的硬件地址,目标的IP地址和一个“消息类型”字段,这个消息类型字段用来表明当前ARP包是一个请求还是对请求的一个响应。

当一个设备发送ARP请求时,它要填充4个与地址相关的字段中的3个,即提供自身的硬件地址和IP地址,还提供目标的IP地址(因为目标的硬件地址是不知道的,所以这个字段填充为0)。另外,它会设置消息类型字段来表明当前包是一个ARP包,在局域网上广播这个请求,使得所有设备都能侦听到。一旦主机侦听到针对自己的请求(在ARP请求的IP地址字段中表明),就生成一个响应报文并反馈给请求主机。响应报文包含本地设备的IP地址和硬件地址,还包含源发送系统的IP地址和硬件地址,这个响应报文会通过消息类型字段来表明当前的报文是一个ARP响应报文,新的ARP响应报文不再是广播发送,会直接传输给源端请求者。

2.4 ARP帧结构

图2-2 广域网技术的ARP帧结构

7

ARP报文由9个字段组成,包的总大小根据本地网络媒介上使用的网络地址的大小变化而变化。表2-1是ARP报文中的字段。 字段 硬件类型(Hardware Type) 协议类型(Protocol Type) 硬件地址长度(Hardware size) 协议长度(Protocol size) 操作(Opcode) 发送端硬件地址(Sender Mac address) 发送端协议地址(Sender IP address) 目标硬件地址(Target Mac address) 目标协议地址(Target IP address) 字节数 2 2 说明 标识ARP实现在哪种类型的网络上 标识讨论的上层协议信息 指定物理媒介的硬件地址的大小,以字节为单位。因为每个网络使用的物理寻址机制不同,所以ARP包中的其他字段需要这个字段 指定上层协议地址的大小,以字节为单位, IP的地址总是4 标识这个ARP包的类型(“请求”或“响应”) 标识发送ARP广播的主机的硬件地址 标识发送ARP广播的主机的IP地址 标识响应ARP广播的主机的硬件地址 标识响应ARP广播的主机的IP地址 表2-1 ARP报文中的字段

1 1 2 可变 可变 可变 可变

根据上面的字段,下面用实际截获的ARP报文来逐个分析ARP报文中的字段。

2.4.1. 硬件类型(Hardware Type) 一个2字节的字段,指出数据链路层所使用的硬件类型。表2-2列出了一些常用的ARP硬件类型值。一收到ARP帧,IP节点就验证ARP帧的硬件类型是否与接收该ARP帧的接口的硬件类型相匹配。如果不匹配,帧就被默默地扔掉。DIX-Ethernet的地址类型是1,IEEE802.X Ethernet的地址类型是6,ARCnet的地址类型是7,如图2-3所示。

硬件类型值 1(0x00-01) 6(0x00-06) 7(0x00-07) 15(0x00-0F) 16(0x00-10) 表2-2 ARP硬件类型值

数据链路层技术 DIX-Ethernet(10Mbps) IEEE802.X Ethernet ARCnet 帧中继 异步传送模式

2.4.2. 协议类型(Protocol Type)

一个2字节的字段,指出ARP提供地址解析所使用的协议。ARP协议类型字段使用与Ethernet Ⅱ EtherType字段相同的值。对于IP地址解析,IP的协议类型字段被设成

8

EtherType,值是0x0800。一收到ARP帧,IP节点就验证ARP协议类型的值是否是0x0800。如果不是0x0800,帧就会被抛弃。因此,协议类型字段必须定义这个请求所指的高层协议,如图2-4所示。

图2-3

图2-4

2.4.3. 硬件地址长度(Hardware size)

一个1字节的字段,指出发送端硬件地址和目标硬件地址字段中的硬件地址长度(以字节计)。以太网和令牌环的硬件地址长度字段的值是6。帧中继的硬件地址长度的值一般是2(对于常用的2字节帧中继地址字段)。如图2-5所示。

9

图2-5

2.4.4 协议长度(Protocol size)

一个1字节的字段,指出发送端硬件地址和目标硬件地址字段中的协议地址长度(以字节计)。对于IP协议,IP地址的长度是4字节。如图2-5所示。

图2-5

2.4.5. 操作(Opcode)

一个2字节的字段,指出ARP帧的类型。如图2-6所示。ARP本身支持两种基本操作:请求与某一协议地址相关联的硬件地址,响应早些时候的请求。同样,RARP也支持请求和响应操作的概念,这和反转ARP是一样的。表2-3列出了常用的ARP操作值。

消息类型 1

类型说明 ARP请求 10

2 3 4 8 9

ARP响应 RARP请求 RARP响应 反转ARP请求 反转ARP响应 表2-3 ARP操作值

图2-6

2.4.6. 发送端硬件地址(Sender Mac address)

该字段的长度与硬件地址长度字段的值相同,包含发送ARP帧的节点的硬件或数据链路层地址。对于以太网和令牌环,该字段包含发送ARP节点的MAC地址。如图2-7所示。

图2-7

11

每个ARP交换过程都包含两个独立的包:源包和对这个包的请求的响应。发送端硬件地址类型字段说明了这个ARP包的发送者。如果这个包是一个请求,那么该字段包含的是发送该请求的设备的硬件地址。如果ARP包是一个响应,那么这个字段包含的是发送该响应的设备的硬件地址。

2.4.7. 发送端协议地址(Sender IP address)

该字段的长度与协议地址长度字段的值相同,包含发送ARP帧的节点的协议地址。对于IP,发送端协议地址字段包含发送ARP帧的节点的IP地址。如图2-8所示。

图2-8

每个ARP交换过程都包含两个独立的包:源包和对这个包的请求的响应。发送端协议地址类型字段说明了这个ARP包的发送者的IP地址。如果这个包是一个请求,那么该字段包含的是发送该请求的设备的IP地址。如果ARP包是一个响应,那么这个字段包含的是发送该响应的设备的IP地址。

12

图2-9

2.4.8. 目标硬件地址(Target Mac address)

该字段的长度与硬件地址长度字段的值相同,包含发送ARP帧的节点的硬件或数据链路层地址。对于以太网和令牌环,目标硬件地址字段中的ARP请求帧的值是0x00-00-00-00-0 0-00,ARP答复帧则被设成ARP请求帧的MAC地址。如图2-9所示。图2-9中的目标硬件地址设为十六进制的00:00:00:00:00:00,这说明发送者不知道目的地系统的硬件地址(说明ARP请求一个已知IP地址对应的硬件地址)。

2.4.9. 目标协议地址(Target IP address)

该字段的长度与协议地址长度字段的值相同,包含发送ARP帧的节点的协议地址。对于IP,目标协议地址字段中的ARP请求帧被设成被解析的IP地址,ARP答复帧被设成ARP请求帧的IP地址。如图2-10所示。

图2-10

第三章 因特网控制消息协议(ICMP)——网络层

3.1 ICMP协议简介

因特网协议(IP)为IP数据报提供了端对端的数据报传送能力。然而,IP不提供任何工具报告IP数据报在从源端到目的端的传输过程中所遇到的路由错误和传送错误,而是由ICMP代替IP报告错误情况和控制情况。

当协议遇到不能在信息包处理过程中恢复的错误时,它可以废弃有问题的信息包并向源发送主机发送错误通知。这种处理方式称为有提示废弃。ICMP为特定类型的IP路由错误和传送错误提供有提示废弃服务。

ICMP是一个可扩展的协议,它也为自动主机配置提供IP连通性检查和帮助功能。 ICMP并不使IP变得更可靠。IP和ICMP中都没有工具提供排序或重发出错的IP数据报的功能。ICMP消息以IP数据包形式发送出去并不可靠,并且尽管ICMP会报告错误,但

13

对原发送主机如何处理收到的错误没有要求。直到实施TCP/IP后,源发送主机才开始解释收到的错误并对自己的行为作相应调整。

ICMP消息只为IP数据报的第一个帧发送。对于ICMP错误消息遇到的问题或广播数据报或多路广播数据报遇到的问题则不发送ICMP消息。

3.2 ICMP消息结构

ICMP Echo Request(Reply)报文结构如图3-1所示,它包括类型、代码、校验和、标识符和序号(亦称序列号),后面是ICMP的数据。其中类型占8位,校验和占16位,这三个字段共32位,在任何ICMP报文中是不变的,后面字段结构根据不同的ICMP类型和代码有所不同,如图3-2所示,为ICMP通用格式。

图3-1

图3-2

3.3 Echo Request和Echo Reply查询消息

ICMP提供了两个查询消息Echo Request和Echo Reply,这两个查询消息放在一起以测试网络上的某远程系统是否在工作。ICMP Echo Request查询消息是用户发送到目的主机的探测包,并由ICMP Echo Reply查询消息来响应。

图3-3和图3-4显示互联网络上两个主机之间一个简单的ping。其中主机113.14.63.144在ping主机220.181.111.147,它们之间通过发送ICMP Echo Request和ICMP Echo Reply来完成。

14

图3-3 ICMP Echo Request

图3-4 ICMP Echo Reply

3.4 ICMP各字段分析

ICMP消息中的各字段定义如下:

3.4.1. 类型(Type)字段:8位

表明ICMP消息的类型(Echo Request或Echo Reply等)。表3-1列出了定义的ICMP类型。由表3-1可知,图3-5是个Echo Request,所以Type值是8。

3.4.2. 代码(Code)字段:8位

表明ICMP消息类型中特定的ICMP消息。如果一种ICMP类型中只有一条ICMP消息,则“代码”字段设置为0。“ICMP类型”和“代码”共同确定一条特定的ICMP消息。因为图3-6并没出错,所以图3-6中的Code = 0。如图3-6所示。

3.4.3. 校验和(Checksum)字段:16位

15

是一个覆盖ICMP消息的16位校验和。ICMP使用与IP相同的校验和算法计算IP报头的检验和。如图3-7所示。

ICMP类型 0 3 4 5 8 9 10 11 12 表3-1

描述 回应答复 无法达到目的地 源中断 重定向 回应(也称回应请求) 路由器公布 路由器选择 超时 参数问题

图3-5

图3-6

16

图3-7

前面3个字段是所有ICMP报文共有的,下面的字段对于本实验是针对ping应用来讲。

(1)Identifier字段

Identifier字段标识本ICMP进程,如图3-8所示,这个字段长度为16位。

图3-8

(2)Sequence字段

用于判断回应应答数据包,如图3-9所示。

(3)Data字段

ICMP Data字段最大允许的长度为1472。在使用ping命令时,Windows下默认发送的Data是32字节,如图3-10所示。如果发送一个350字节大小的ping数据,这时的Data部分就是350字节了。

3.4.4. 选项数据:(不定长)

每种ICMP类型的可选数据。

17

图3-9

图3-10

第四章 传输控制协议(TCP)——运输层

应用程序用来在IP网络上相互之间传输的标准传输协议有两个:一个是用户数据包协议(UDP),它提供的服务轻便但不可靠;另外一个是传输控制协议(TCP),它提供的是可靠、可控制的传输服务。大部分Internet应用程序都使用TCP,因为它的嵌入可靠性和流控制服务可确保数据不会丢失和被破坏。

4.1 TCP协议简介

TCP是完全成型的传输层协议,可以提供可靠的数据传输服务以及将TCP封装数据传递给应用层协议的方法。TCP有以下特征:

? 面向连接:在可以传输数据前,两个应用层过程必须使用TCP连接的建立过程正式地协商TCP连接。使用TCP连接终止过程正式关闭TCP连接。

? 完全双向:对于每一个TCP层,TCP连接都包括两个逻辑管道:一个传出管道和一

18

个传入管道。使用适当的网络接口层技术,数据可以同时流出传出管道和流入传入管道。TCP报头包含传出数据和确认输入数据的序列号。

? 可靠:按顺序发送TCP连接上的数据,并将从接收方得到积极的确认。没有得到确认的段将重传。在接收方,重复段被放弃,到达的失序段还原为正确的序列。TCP校验和始终用于验证TCP分段的比特级完整性。

? 字节流:TCP将在传入和传出逻辑管道上传送的数据视为连续的字节流。每个TCP报头中的序列号和确认号都以字节界限确定。TCP不知道字节流内的记录或消息边界。应用层协议必须提供输入字节流的正确分析。

? 发送方和接收方侧流控制:为了避免一次发送太多的数据而阻塞IP网络的选定路线,TCP执行发送方侧流控制以逐渐调整一次发送的数据量。为了避免让发送方发送接收方无法缓冲的数据,TCP执行接收方侧流控制,此控制能表示出接收方缓冲区中的剩余空间。

? 应用层数据段:TCP将对从应用层过程获得的数据段,以适合在网络接口层链接上转送的IP数据报。TCP双方将交换都可接收的最大段,并使用“路径最大传输单位(PMTU)”发现来调整TCP最大段的大小。

? 一对一传送:TCP连接是两个应用层协议之间的逻辑点对点电路。TCP不提供一对一的传送服务。

当应用层协议需要可靠的数据传送服务、并且应用层协议自己并不提供这样的服务时,一般使用TCP。

4.2 TCP数据包结构

TCP报头的长度可以改变,并包含如图4-1所示的字段。当TCP选项不存在时,TCP报头长度为20个字节。

图4-1

TCP报头中的字段定义为:

? 源端口号:表示发送TCP分段的源应用层协议的2字节的字段。IP报头中的源IP地址和TCP报头中源端口的组合提供了一个套接字——发送段的全球唯一的重要地址。

? 目的端口号:表示目的地应用层协议的2字节字段。IP报头中的目的IP地址和TCP报头中目的端口的组合提供了一个套接字——端发送到的全球唯一的有意义地址。

? 序列号和确认号:长度共32位。序列号和确认号是TCP实现可靠连接的关键。当建立一个TCP连接时,发送方主机发出一个随机的初始化序列号给接收方,接收方将其加1后送回发送方,这意味着发送方可以发送下一个字节了。一旦数据开始传送,序列号和确

19

认号将跟踪已发送了的那些数据。

? 首部长度:长度为4位。以字节为单位表示TCP头的大小。头长度随可变长度选项字段而改变,通过这个字段同时可以判断该TCP数据段的开始位置和结束位置。

? 保留:留作将来使用的6位字段。发送方将这些位数设置为0。

? 标志:表示6个TCP标志的6位字段。6个TCP标志是URG(紧急)、ACK(确认)、PSH(推)、RST(重置)、SYN(同步)和FIN(完成)。

? 窗口大小:2字节字段,此字段告诉接收这个TCP报文的接收端自己还可以接收多少数据字节。它大致对应于滑动窗口协议的窗口尺寸。反过来,接收TCP报文的接收端可以使用此字段来改变发送端窗口的大小。窗口最大为65535字节。

? 校验和:为TCP分段(TCP报头和段)提供位级完整性检验的2字节字段。用于传输层差错检测。校验和算法将TCP段的内容转化为一系列16位的整数,并将它们相加。接收方根据校验和判断传输是否正确。

? 紧急指针:表示紧急数据在段中位置的2字节字段。紧急指针所指的一段数据不必等待缓冲数据的积累,直接发送到对方。

? 选项+填充:可以将一个或多个TCP选项添加到TCP报头,但必须以4字节的增量完成,以使TCP报头大小能够用“数据偏移”字段表示。

4.3 TCP数据包分析

4.3.1. Source port

它指的是应用程序所用的16位TCP端口号。如图4-2所示。

图4-2

4.3.2. Destination port

20

它指的是目的系统上的应用程序所用的16位端口号。如图4-3所示,客户端使用端口80来接受数据。

图4-3

图4-4

21

4.3.3. Sequence number

如图4-4所示,通常指定分配到当前信息中的数据首字节的序列号。在连接建立阶段,该字段用于设置传输中的初始序列号。

4.3.4. Acknowledge number

在握手阶段,确认序列号将发送方的序列号加1作为回答,在数据传输阶段,确认序列号将发送方的序列号加发送的数据大小作为回答,表示确实收到这些数据,如图4-5所示。

图4-5

4.3.5. Header length

表示20个字节,计算方法和作用与IP报头相同,如图4-6所示。

4.3.6. Flags

如图4-7所示,这个字段包含以下几项。

? URG:紧急指针是否有效。用到的时候值为1,表示紧急指针有效。

? ACK:为1时表示确认号(Acknowledge number)为合法,为0时表示数据段不包含确认信息,确认号被忽略。

? Push:PUSH标志的数据,为1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。

? RST:为1的时候,表示请求重新连接。用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST置位时,通常发生了某些错误。

? SYN:为1的时候,表示请求建立连接。当建立一个新的连接时,SYN位变为1。在连接请求中,SYN=1,ACK=0;连接响应时,SYN=1,ACK=1。即用SYN和ACK来区分Connection Request和Connection Accepted。

22

? FIN:为1的时候,表示连接释放,表明发送方已经没有数据发送了。

图4-6

4.3.7 Windows size

说明发送系统上的可用接收缓冲区空间的数量,以字节表示,如图4-8表示。

23

图4-7

图4-8

4.3.8. Checksum

用于存储TCP片段的校验和,包括首部和主体部分。校验和允许目的系统可以验证TCP片段的内容并能够测试可能的破坏,如图4-9所示。

24

图4-9

4.4 TCP三次“握手”

TCP是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。

通常一条TCP连接的建立,需要经过常说的三次“握手”。 (1)请求端(通常称为客户)发送一个SYN报文段指明客户打算连接的服务器的端口,以及初始序列号ISN,这个SYN端称为报文1。

(2)服务器发回包含服务器的初始序列号的SYN报文段(报文段2)作为应答。同时,将确认序列号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序列号。

(3)客户必须将确认序列号设置为服务器的ISN加1以对服务器的SYN报文进行确认(报文段3)。

连接建立后,这个连接将一直保持活动状态,直到超时或者任何一方发出一个FIN(结束)信号来结束此次连接。

“握手”实例: 第一次“握手”:主机113.12.96.52用端口2363向服务器124.238.254.94的80端口发送一个连接请求。这个报文段序列号为0。如图4-10所示。

图4-10

25

第二次“握手”:服务器用80端口向客户端113.12.96.52的端口2363确认刚才的连接请求。这个报文段的序列号为0,确认序列号为图4-10中客户端发送的报文段序列号+1,也就是0+1=1,如图4-11所示。

第三次“握手”:客户端发送一个带序列号的报文对服务器刚才发送的报文进行确认。这次发送的报文序列号为1,确认序列号为图4-11中服务器发送的报文段序列号+1,也就是0+1=1,如图4-12所示。

图4-11

26

图4-12

第五章 普通文件传输协议(TFTP)——应用层

TFTP是普通文件传输协议,它也用于传输文件,但它与FTP不同,FTP使用TCP而TFTP使用UDP,默认端口为69。TFTP不需要任何形式的用户登录认证。TFTP设计是为了进行小文件传输,它不具备FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不能创建和删除目录,不能删除文件,当要终止连接时,TFTP就会传送小于512字节的数据块。如果发送的数据正好为512字节的整数倍,那么发送端必须发送一个具有0字节的数据块来表示传输结束。

5.1 TFTP数据传输模式

TFTP数据传输有两种模式:对于ASCII文件,用netascii,这是8位的ASCII码形式,即NVT ASCII;另一种是对于二进制文件,用octet,这是二进制8位组数据类型。

(1)TFTP的任何传输由一个读取或写入文件的请求发起,这个请求也是连接请求。如果服务器同意此请求,则服务器打开连接,数据以定长512字节传输。每个数据包包含一段数据,服务器发出下一个数据包以前必须得到客户端对上一个数据包的确认。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。通信的双方都是数据的发出者和接收者,一方传输数据接收应答,另一方发出应答接收数据。

(2)TFTP有5种类型的包,这5种类型的包对应的操作码和用法如表5-1所示。 操作

包类型 说明 27

码 1 2 Read Request(RRQ) 读文件请求,客户端发送RPQ报文,服务器响应DATA报文 Write Request(WRQ) 存储文件请求,服务器响应块号为0的ACK报文,客户端收到确认后,发送块号为1的第一个数据块 发送数据包文,数据用DATA报文发送后,等待ACK报文,如果发送端在超时前收到ACK报文就发送下一个数据块,否则重传未被确认的数据包文 数据确认报文 出错报文 表5-1 TFTP操作码

3 Data(DATA) Acknowledgement(ACK) Error(ERROR) 4 5 5.2 TFTP会话实例

在主机上向TFTP服务器192.168.0.28请求一个1.txt的文档,如图5-1所示。

首先客户端建立连接,使用UDP连接TFTP服务器的69端口,发送一个请求信息,如图5-2所示。

在TFTP信息中,可以看到,这个请求包含的字段信息如下: ? 操作码(Opcode):1,说明这是个读文件请求Read Request报文,如图5-3所示。 ? 文件名(Source File):1.txt,由于文件名长度可变,所以在文件名结束时用1字节0来作标记。如图5-4所示。

? 传输模式(Type):netascii。如图5-5所示。

随后,如图5-6所示,可以看到服务器选择用端口1050来向客户端建立连接时的端口1770发送数据包,这时的这个服务器和客户端的端口会一直使用,直到TFTP连接结束,数据包包含如下三个字段信息。

? 操作码:3,说明这是一个发送数据包文。 ? 块号:1。

客户端收到数据后发送一个确认信息,确认信息包含以下字段信息,如图5-7所示。 ? 操作码:4,说明这是一个数据确认报文Acknowledgement。 ? 要确认的块号:1。

图5-1

28

图5-2

图5-3

图5-4

29

图5-5

图5-6

图5-7

这样就完成了一段数据的传输。

30

总结

TCP协议和IP协议指两个用在Internet上的网络协议(或数据传输的方法)。它们分别是传输控制协议和互连网协议。这两个协议属于众多的TCP/IP 协议组中的一部分。

TCP/IP协议组中的协议保证Internet上数据的传输,提供了几乎现在上网所用到的所有服务。这些服务包括:电子邮件的传输、文件传输、新闻组的发布以及访问万维网。

在TCP/IP协议组分两种协议:网络层的协议和应用层的协议。

通过本实验,使我们初步了解了TCP/IP的组成以及工作原理等知识,但鉴于本人水平有限,在实验过程中,仍然存在着诸多不足之处,希望能在往后的学习中取得更大的改善。

参考文献

[1] Eric A Hall.Internet核心协议权威指南.张金辉译.北京:中国电力出版社,2002.

[2] Richard W Stevens.TCP/IP详解.卷1:协议.范建华译.北京:机械工业出版社,2000. [3] Parker David.TCP/IP技术大全.前导工作室译.北京:机械工业出版社,2000.

31

总结

TCP协议和IP协议指两个用在Internet上的网络协议(或数据传输的方法)。它们分别是传输控制协议和互连网协议。这两个协议属于众多的TCP/IP 协议组中的一部分。

TCP/IP协议组中的协议保证Internet上数据的传输,提供了几乎现在上网所用到的所有服务。这些服务包括:电子邮件的传输、文件传输、新闻组的发布以及访问万维网。

在TCP/IP协议组分两种协议:网络层的协议和应用层的协议。

通过本实验,使我们初步了解了TCP/IP的组成以及工作原理等知识,但鉴于本人水平有限,在实验过程中,仍然存在着诸多不足之处,希望能在往后的学习中取得更大的改善。

参考文献

[1] Eric A Hall.Internet核心协议权威指南.张金辉译.北京:中国电力出版社,2002.

[2] Richard W Stevens.TCP/IP详解.卷1:协议.范建华译.北京:机械工业出版社,2000. [3] Parker David.TCP/IP技术大全.前导工作室译.北京:机械工业出版社,2000.

31

本文来源:https://www.bwwdw.com/article/a2dw.html

Top