




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录 摘摘 要要 .I I ABSTRACT .II 引言引言 .1 第一章第一章 TCP 协议下通信概述协议下通信概述 .2 1.1 网络体系结构.2 1.1.1 概述.2 1.1.2 OSI网络体系模型.2 1.1.3 TCP/IP网络体系模型.3 1.2 ARM 处理器简介.5 1.2.1 ARM微处理器的特点.5 1.3 嵌入式实时操作系统简介.5 1.3.1 什么是嵌入式操作系统.5 1.3.2 u C/OS-II简介.5 1.3.3 u C/OS- II在ARM2200上的移植.6 第第 2 章章 TCP/IP 协议通信原理协议通信原理.8 2.1 协议栈数据在各层之间的传输过程
2、如下图所示:.8 2.2 TCP/IP 协议栈各层简介.8 2.2.1 概述.8 2.2.2 ARP协议.10 2.2.3 IP协议.11 2.2.4 ICMP协议.13 2.2.5 TCP协议.13 2.2.6 UDP协议.16 第三章第三章 TCP 协议分析与实现协议分析与实现 .17 3.1 TCP 协议简介 .17 3.2 TCP 协议进行通信过程中的基本知识介绍 .17 3.2.1 建立连接.17 3.2.2 滑动窗(流量控制).18 3.2.3 计时器(重传机制).19 3.2.4 TCP协议的实现.20 3.2.5 输入处理.20 3.2.6 超时重传处理.22 3.2.7 输出
3、处理.22 3.2.8 关闭连接.22 3.3 TCP 的处理及主要函数 .22 第四章第四章 程序设计与调试程序设计与调试 .24 4.1 程序设计.24 4.1.1 概述.24 4.1.2 详细程序流程图如下图.25 4.1.3 主要程序说明.26 . 结论结论 .31 致谢致谢 .32 参考文献参考文献 .33 摘摘 要要 嵌入式系统的 Internet 网络化的研究与应用是近几年来嵌入式应用领域的一个 研究热点。全球信息资源的全面共享是今后发展的潮流,与人们生活、生产关系最 为密切并拥有着无尽的信息资源的嵌入式系统,如果不接入 Internet 的话,信息的 全面共享就无从谈起。嵌入式
4、系统网络化的前提是在嵌入式系统中实现 TCP/IP 协议 栈。 本文首先对 ARM、通用 TCP/IP 和 u C/OS-II 进行了一定的探讨与研究,然后将 u C/OS-II 移植到 ARM2200 目标板上,再在此平台上进行编写 TCP/IP 协议栈。开发 环境是用 ARM 公司的集编辑、编译、仿真与调试于一体的 ADS1.2 软件。 整个协议栈的设计是围绕着 TCP/IP 协议的参考模型这个中心进行的。首先,为 了使 议具有可移植性,所有与硬件、OS、编译器相关的部分独立出来,在不同的操 作系统(这里用的操作系统是 u C/OS-II)上的实现只要修改这一部分,其它的文件 一般不需要修
5、改。最后,协议的主体采用纵向主线来进行设计,其实现的协议有 ARP,IP, ICMP, UDP 和 TCP 等协议。 关键词:ARM 处理器 TCP/IP 协议栈 TCP 通信 实时操作系统 AbstractAbstract In recent years, research on connecting embedded system with Internet has become one of the focuses in applications of embedded system. The overall sharing of the global information resou
6、rces is the development trend in the future and this research has met the trend. The implementation of TCP/IP stack in embedded system is the basis of the research. In this article writer probes into the ARMS、TCP/IP protocol and u C/OSII operation system at first, later transfer u C/OS-II intoARM220
7、0, then compile TCP/IP stack. ADS which integrated with editor compiler, emulator and debugger as the development environment are adopted. The design of the tiny TCP/IP stack takes the TCP/IP reference model as the focus. First, in order to enable the protocol have the attribute transplanted, the pa
8、rts related to the hardware, OS, the compiler independently comes out. This part needed to be revised when realized in the different operating system (here u C/OS-II) ,the body of the protocol stack is designed which includes the ARP module, ICMP module, UDP module and TCP module. Key Words: ARM pro
9、cessor, TCP/IP stack, TCP communications, real-time operating syste 引言引言 TCP/ IP 协议可以说是目前世界上最成功的网络体系结构和协议规范。TCP/ IP ( Transmission Control Protocol/ Internet Protocol) 是传输控制协议/互连网 络协议的缩写。它包括一系列的协议 , 其中 TCP 和 IP 是最有名的两个协议 , 因 此一般简称这个协议集为 TCP/ IP。 TCP/ IP 的形成有一个过程 , 它最早在 1969 年由美国国防部高级研究计划局 (DARPA) 开发
10、 , 用于 ARPANET 上. 70 年代初 , 开始第二代网络协议设计 , 称为 网络控制协议 NCP. 70 年代中 , NCP 进一步发展完善 , TCP/ IP 正式出现. 80 年 代初 , 美国伯克利大学将 TCP/ IP 设计在 UNIX 系统内核中.1983 年美国国防部将 ARPANET 的 NCP 完全过渡到 TCP/ IP , 成为军方标准. 同时 SUN 公司将它引入 了广泛的商业领域. 此后随着 ARPANET 演变为 Internet 以及 Internet 的飞速发展 , TCP/ IP 已成为事实上的国际标准和工业标准。 第一章第一章 TCPTCP 协议下通信
11、概述协议下通信概述 1.11.1 网络体系结构网络体系结构 .1 概述概述 在计算机网络中,为了使相连的计算机或终端之间要做到有条不紊地交换数据, 就必须遵守一些事先约好的规则,这些为进行网络中的数据交换而建立的规则、标 准或约定称为网络协议,也可简称为协议。由于协议太复杂,必须采用分层的方法 将其简化,而各层都按各自的协议工作,我们将计算机网络的各层及其协议的集合 称为网络的体系结构。 .2 OSIOSI 网络体系模型网络体系模型 网络协议中,由国际标准化组织(ISO)发展和制定开放系统互连参考模型(OSI, Open System Interconnect
12、Reference Model)制订了数据通讯协议的标准,尽管 OSI 模型并没有真正地在实际中被应用,但是其提供的概念和词汇被计算机网络界 广泛地用和认可。OSI 参考模型包括七个协议层来定义数据通讯的协议功能,每一 层是相对独立的,完成数据传输过程中的部分功育旨。 物理层:物理层的任务是利用物理介质透明地传送比特流,主要是处理机械、电气功 能和过程的接口。 数据链路层:数据链路层为物理层可能出现的差错提供屏蔽,提供相邻节点之间以帧 为单位的可靠传输。 网络层:网络层为分组(或包)选择传输路径,并解决拥塞、流量控制和网际互连等问 题。 传输层:运输层为网络层进行通信的两个进程提供透明的端到端
13、的数据通路。运输层 只存在于通信子网外面的端开放系统中。 会话层:会话层在两个互相通信的进程之间建立、组织和协调及交互,对数据传输进 行管理。 表示层:表示层主要解决用户信息的语法表示,将要交换的数据从适合于某一用户的 抽象语法变换为适合于 OSI 系统内部使用的传送语法。 应用层:应用层将应用进程与远端的应用进程进行交互时经常使用的功能及其协议标 准化。 下面我们来讲一下 OSI 模型的一个关键概念,虚电路。兼容 OSI 模型的网络协 议栈的每一部分都不知道其上面层和下面层的行为和细节;它只是向上和向下传输数 据。就模型的层次而言,每一层都有一虚电路直接连接目的主机上的对应层。就每 一层而言
14、,它的数据在目的层被解包的方式和被打包的方式是完全一样的。层不知 道传输数据的实际细节;它们只知道数据是从周围层中传过来的。 .3 TCP/IPTCP/IP 网络体系模型网络体系模型 TCP/IP 协议作为一种网络工业标准,有着自己的网络体系结构。TCP/IP 协议 的网络模型并不能够与 OSI 模型完全匹配。TCP/IP 模型类似 OSI 参考模型,但是较 为简单,没有表示层,会话层。目前,由于因特网的发展,TCP/IP 作为其基础协议, 应用越来越广泛。TCP/IP 狭义特指两个协议及传输控制协议(TCP, Transformation Control Protocol)和
15、网际协议(IP, Internet Protocol),广义指由多个与因特网相 关的协议组成的 TCP/IP 参考模型,或者称为 TCP/IP 协议栈。 TCP/IP 协议网络模型与 OSI 参考模型各层的详细对应情况 Pl 如图 1-1 所示。 图 1-1 两种协议模型比较 应用层 Application Layer 表示层 Present Layer 会话层 Semission Layer 传输层 Transport Layer 网络层 Internet Layer 数据链路层 Data Link Layer 物理层 Physical Layer 应用层 Application Layer
16、 传输层 Transport Layer 网络层 Internet Layer 网络接口层 Network Access Layer TCP/IP 是由一些交互性的模块组成的分层次协议,其中每一模块都提供特定的 功能。OSI 模型指明了哪个功能是属于它那一层,但 TCP/IP 协议族中的层则包括了 一些相对独立的协议。可以根据对系统的需要把这些协议混合和配套使用。 1.网络接口层 在 OSI 模型中它表现为两层。网络接口层涉及到与 IP 分组(packet)要求选择一 条物理链路并通过该物理链路从一台设备传送到一台直接相连设备的有关的所有问 题。它包括局网和广域网的技术细节,以及 OSI 模型
17、中物理层和数据链路层的所有 细节。在这一层,TCP/IP 并没有定义任何特定的协议,它支持所有标准的和专用的 协议。在 TCP/IP 互连网中的网络可以是局域网(LAN)、城域网(MAN)或广域网(WAN)。 2.网络层 互联网络层用于把来自互联网络上的任何网络设备的源分组发送到目的的设备, 而且这一过程与它们所经过的路径和网络无关。管理这一层的协议称为网际协议。 这一层进行最佳路径选择和分组交换。例:邮政系统,当您寄一封信时,您并不需要 知道它是如何到达目的地的(有很多种路径可以通过),您只需要关心它是否到达。 协议又由四个协议组成:ARP(地址解析协议),RARP(逆地址解析协议),ICM
18、P(因 特网控制报文协议)和 IGMP(因特网组管理协议) 。网际协议(IP)是 TCP/IP 协议使 用的传输机制。这是一个不可靠的、无连接的数据报协议。 3.传输层 传输层处理关于可靠性、流量控制和重传等典型的问题。在这一层有两种协议: TCP, UDP。传输控制协议(TCP)能提供优秀和灵活的方式以创建可靠的、流量顺畅和 低错误率的网络通信过程。TCP 是一种面向连接的协议。在把应用层数据打包成数 据单元(称为段)时,源和目的需要进行对话。用户数据报(UDP)是两个标准 TCP/IP 传输协议中较为简单的一个,UDP 是一个不可靠的传输协议。这一层也被称为主机 到主机层(host-to-
19、host layer) 4.应用层 TCP/IP 的设计者认为高层协议包括会话和表示层的细节,创建了一个应用层来 处理高层协议、有关表达、编码和对话控制。TCP/IP 将所有与应用相关的内容都归 为一层,并保证为下一层适应地将数据分组(打包)。这一层也被称为处理层 (process layer)。应用层定义了许多协议,比如 HTTP(超文本传输协议) 、 FTP(文件传输)协议、SMTP(简单邮件传送协议)和 DNS(域名系统)等为一个完 整、严谨的体系结构,也有它的生存空间,它的设计思想在许多系统中得以借鉴, 同时随着它的逐步改进,必将得到更广泛的应用。 TCP/IP 目前面临的主要问题有地
20、址空间问题、QOS 问题、安全问题等。地址问 题有望随着 IPV6 的引入而得到解决,QOS、安全保证也正在研究,并取得了不少的 成果。因此,TCP/IP 在一段时期内还将保持它强大的生命力。 OSI 的缺点在于太理想化,不易适应变化与实现。因此,它在这些方面做出适 当的调整,也将会迎来自己的发展机会。 1.21.2 ARMARM 处理器简介处理器简介 ARM (Advanced RISC Machines),既可以认为是一个公司的名字,也可以认 为是对一类微处理器的通称,还可以认为是一种技术的名字。1991 年 ARM 公司成立 于英国剑桥,主要出售芯片设计技术的授权。目前,采用 ARM 技
21、术知识产权(IP)核 的微处理器,即我们通常所说的 ARM 微处理器,已遍及工业控制、消费类电子产品、 通信系统、网络系统、无线系统等各类产品市场,基于 ARM 技术的微处理器应用约 占据了 32 位 RISC 微处理器 75%以上的市场份额,ARM 技术正在逐步渗入到我们生活 的各个方面。 .1 ARMARM 微处理器的特点微处理器的特点 采用 RISC 架构的 ARM 微处理器一般具有如下特点:体积小、低功耗、低成本、 高性能;支持 Thumb C16 位/ARM C32 位双指令集,能很好的兼容 8 位/16 位器件;大 量使用寄存器,指令执行速度更快;大多数数据操作都在
22、寄存器中完成;寻址方式灵 活简单,执行效率高;指令长度固定。 1.31.3 嵌入式实时操作系统简介嵌入式实时操作系统简介 .1 什么是嵌入式操作系统什么是嵌入式操作系统 嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统 (包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、 系统内核、设备驱动接口、通信协议、图形接口、标准化浏览器 Browser 等。嵌入 式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源; 能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提 供库函数、驱动程序、工具集以及应
23、用程序。与通用操作系统相比较,嵌入式操作 系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面 具有较为突出的特点。 .2 u u C/OS-IIC/OS-II 简介简介 u C/OS-II 是著名的、源码公开的实时内核,是专为嵌入式应用设计的,可用 于各类 8 位、16 位和 32 位单片机或 DSP。从 u C/OS 算起,该内核已有 10 余年应用 史,在诸多领域得到了广泛应用。u C/OS-II 已经通过了严格的测试,得到了美国 航空管理局(Federal Aviation Administration)的认证,可以用在飞行器上,说明 u C/OS-
24、II 是稳定可靠的。u C/OS-II 作为嵌入式实时操作系统包括以下基本模块: 1 初始化管理:完成实时内核的初始化工作,并启动实时调度; 2 任务管理:完成应用任务的管理,是操作系统内核的核心部分。它具有创建任 务、删除任务、挂起任务、解除挂起任务、设置任务优先级等功能; 3 时间管理:为应用系统的实时响应提供支持,保证整个系统的实时性、正确性, 以提高整个嵌入式系统的实时工作能力。该模块允许应用任务设置和读取系统时间; 允许应用任务睡眠一段时间或睡眠到某一时刻;完成系统计时和对任务时间片的计算; 4 定时管理:完成系统的定时功能。在定时时间后调用相应的定时处理程序; 5 中断管理:完成响
25、应中断的一些必要处理,支持中断嵌套时任务堆栈和中断专 用堆栈的切换; 6 任务间的通信、同步、互斥管理:本模块提供应用任务之间通信、同步和互斥 机制,对各任务之间的协调工作起着重要的作用。内核提供了四种机制: 消息队列机制完成任务间的数据传输; 信号量机制实现任务间资源的共享与互斥及任务间的同步; 异步通信管理支持任务间的异步通信; 事件管理一种高效的任务间的通信与同步机制; 7 内存管理:提供申请可变大小数据块和申请固定大小数据块的管理。 .3 u C/OS- II 在在 ARM2200ARM2200 上的移植上的移植 所谓移植,就是使一个实时内核能在某个微处理器或微控制器上
26、运行。为了方 便移植,大部分的 u C/OS- II 代码是用 C 语言写的;但仍需要用 C 和汇编语言写一 些与处理器相关的代码,这是因为 u C/OS-II 在读写处理器寄存器时只能通过汇编 语言来实现。由于 u C/OS- II 在设计时就已经充分考虑了可移植性,所以 u C/OS- II 的移植相对来说是比较容易的。要使 u C/OS- II 正常运行,处理器必须满足以 下要求: (1)处理器的 C 编译器能产生可重入代码; (2)用 C 语言就可以打开和关闭中断; (3)处理器支持中断,并且能产生定时中断(通常在 10 至 100Hz 之间); (4)处理器支持能够容纳一定量数据(可
27、能是几千字节)的硬件堆栈; (5)处理器有将堆栈指针和其它 CPU 寄存器读出和存储到堆栈或内存中的指令; 如果用户理解了处理器和 C 编译器的技术细节,移植 u C/OS- II 的工作实际上 是有规律可循的。前提是处理器和编译器满足了 u C/OS- II 的要求,并且已经有了 必要工具。将 u C/OS- II 移植到 ARM 处理器上,需要完成的工作主要是修改三个和 ARM 体系结构相关的文件,即 OS CPU.H, OS CPU S.S, OS CPU C.C 这三个文件。 第第 2 2 章章 TCP/IPTCP/IP 协议通信原理协议通信原理 2.12.1 协议栈数据在各层之间的传
28、输过程如下图所示:协议栈数据在各层之间的传输过程如下图所示: AP1 5 4 1 2 3 AP2 5 4 1 2 3 物理传输媒体 应用程序数据 数据部分 数据部分 数据部分 数据部分 101比特流 H5 H4 H3 H2T2 图 2-1 2.22.2 TCP/IPTCP/IP 协议栈各层简介协议栈各层简介 .1 概述概述 TCP/IP 协议包括许多协议子集,例如:ARP (Address Resolution Protocol, 地址解析协议)、RARP (Reverse ARP,逆地址解析协议)、IP(Internet Protocol, 互联网协议)、OSPF (Open
29、 Shortest Path First,内部网关路由选择协议)、BGP (Border Gateway Protocol,外部网关路由选择协议)、ICMP (Internet Control Message Protocol,互联网控制报文协议)、TCP (Transmission Control Protocol,传输控制协议)、UDP (User Datagram Protocol,用户数据报协议)等, 以及应用层的 DNS (Domain Name System,域名解析协议)、SNMP (Simple Network Management Protocol,简单网络管理协议),SMT
30、P(Simple Mail Transfer Protocol,简单邮件传输协议),HTTP(Hypertext Transfer Protocol,超文本传输 协议)等。这些协议子集与 TCP/IP 各层对应关系如图 2-2 所示。 HTTPFTP ARP RARP UDP DNS TCP IP Network Internet Hardware 应用层 传输层 网络接口层 网络层 图 2-2 各协议子集与 TCP/IP 各层对应关系 (1)网络接口层:负责管理特定的物理介质,例如:以太网、蓝牙等。对应于 OSI 参考模型中的物理层和数据链路层。网络接口层定义了一台计算机如何访问物理网 络。
31、常用的 ARP 协议属于该层。 (2)网络层:有时也称为互联网层,通过多个不同的物理网络向目的节点传输数 据报文,对应于 OSI 参考模型中的网络层。网络层协议定义了网络传输的基本数据 单元,提供路由支持。 (3)传输层:对应于 OSI 参考模型中的传输层,传输层主要解决不同应用程序之 间的识别问题,因为在一般的通用计算机中,常常有多个应用程序同时访问网络。 为区分各应用程序,传输层在每一分组中增加了识别信源应用程序和信宿应用程序 的信息。用户的应用程序往往需要特定层次的服务水平,这可能涉及到可靠性、错 误率、延迟或这些特性的某些组合。传输层协议同时为应用层程序提供所需要的服 务水平。 (4)
32、应用层:向用户提供一组常用的应用程序,比如:虚拟终端、电子邮件等。 OSI 参考模型中的应用层、表示层和会话层合并到 TCP/IP 分层模型中的应用层。严 格说起来,应用层协议不能算作 TCP/IP 协议的一部分。事实上,用户完全可以在传 输层之上建立自己的专用的应用程序。常用的应用层协议有:HTTP(超文本传输控制 协议)、TELNET(远程登录协议)、FTP(文件传输协议)、SMTP(简单邮件传送协议)、 SNMP(简单网络管理协议)等。 .2 ARPARP 协议协议 ARP 协议(Address Resolution Protocol)用来把 IP 地址解析成物理网络地址
33、, 在以太网中就是以太网地址。ARP 协议允许一台主机在知道同一物理网络上一台目 标主机 IP 地址的情况下,找到目标主机的物理硬件地址。其过程如下:假定在某一 广播型物理网络上,主机 A 欲解析主机 B 的 IP 地址 IPB,A 首先广播一个 ARP 请求报 文,请求 IP 地址为 IPB 的主机应答其物理地址 PB。物理网络上的所有主机(包括主 机 B)都将接收到这个 ARP 请求报文,但是只有主机 B 识别出自己的 IP 地址 IPB,并 作出应答:向 A 发回一个 ARP 应答报文,回答自己的物理地址。 为了提高效率,ARP 使用了高速缓存技术。在每台使用 ARP 的主机中,都开辟
34、了一个专用的内存空间,即高速缓存,存储最近获得的 IP 地址和对应的物理网络地 址,这就是 ARP 表。每当接收到一个 ARP 应答,主机就把目标主机的 IP 地址和对应 的物理网络地址存入 ARP 表。当发送数据报文的时候,主机首先查询 ARP 表,如果 没有,再进行地址解析。由于网络的局部性,这样就大大提高了 ARP 效率。 TCP/IP 将 ARP 报文设计成一种能够适应各种物理地址和协议地址的格式,针对 以太网这一特定的物理网络,其 ARP 报文格式如图 2-3 所示: 硬件类型协议类型 硬件地址长度协议地址长度操作 发送端以太网地址(6 个字节) 发送端 IP 地址 接收端以太网地址
35、(6 个字节) 接收端 IP 地址 图 2-3 用于以太网的 ARP 报文格式 (1)硬件类型:用于表示硬件地址的类型,值为 1 时表示以太网地址; (2)协议类型:用于表示协议地址的类型,值为 0 x0800 时表示 IP 地址; (3)硬件地址长度:对于以太网来说,该值为 6; (4)协议地址长度:对于 IP 协议来说,该值为 4; (5)操作:标识四种操作类型:ARP 请求(值为 1), ARP 应答(值为 2), RARP 请求 (值为 3), RARP 应答(值为 4); .3 IPIP 协议协议 TCP/IP 协议是为了包容各种物理网络而设计的,而这种包容性主要体现
36、在 IP 协议中。IP 协议,又叫网际协议。TCP/IP 协议通过 IP 报文和 IP 地址屏蔽了底层物 理帧的差异,并向上层提供统一的数据格式。IP 协议提供不可靠的、无连接的数据 报传输服务。 不可靠(unreliable)指 IP 协议不能够保证 IP 报文成功地到达目的地。IP 只提 供尽力而为的传输服务。当发生某种错误时,例如:某个路由器暂时耗尽数据缓冲区, IP 有一个简单的错误处理算法:丢弃该数据报文,然后发送 ICMP(Internet Control Message Protocol)消息报文给信源主机。任何可靠性要求都由上层协议(例如:TCP) 来保证。但是,IP 报文独立
37、于任何底层的物理网络技术,它是一种通用的数据传输 方式。 无连接(connectionless)指 IP 不维护任何有关数据报文的状态信息。每个数据 报文的处理相互独立。这说明:数据报文可能不按发送顺序接收。如果一个信源主机 向同一个信宿主机发送两个连续的数据报文(先发送数据报文 A,再发送数据报文 B), 每个数据报文都独立进行路由选择,这就有可能选择不同的传输路径,不同的路由 质量,因此,数据报文 B 可能先于 A 到达信宿主机。 0 4 8 16 19 31 版本首部长度服务类型报文总长 标识标志片偏移 生存时间协议首部校验和 源 IP 地址 目的 IP 地址 选项(如果有) 数据 图
38、2-4 IP 报文格式 IP 报文格式如图 2-4 所示,普通的 IP 报文首部长度为 20 个字节,除非含有选 项字段。IP 报文中各个字段的含义如下: (1)版本:IP 协议的版本,只能取 4,6 这两个值,目前使用比较多的是 INC,发 展趋势是 IM; (2)首部长度:以 4 字节为单位进行计算,首部长度值通常为 5,即 20 个字节。 由于它是一个 4 位字段,因此首部长度最大 60 字节; (3)服务类型:用于设置数据传输的优先权和服务类型,字段中的前 3 位用于设 置数据传输的优先权,接着的 4 位用于设置服务类型,最后 1 位是保留位,以备将 来使用: (4)报文总长:整个 I
39、P 报文的长度,以字节为单位进行计算。利用首部长度和报 文总长字段,就可以知道 IP 报文中数据域的起始位置和长度: (5)标识:由发送主机指定,帮助 IP 报文实现分段和重组.唯一标识信源主机发 送的每一个 IP 报文; (6)标志:该字段共有 3 位,其中第 1 位没有使用;第 2 位标识这个 IP 报文是否 可以分段,该位置为 1,则表示这个 IP 报文禁止分段,该位置为 0,则表示如果需 要分段,则将这个 IP 报文分段,如果必须对这个 IP 报文分段,而该位置为 1,则 丢弃这个 IP 报文;第 3 位标识这个分段是否是最后一个分段,该位置为 0 表示该分 段是最后一个分段; (7)
40、分段偏移量:标识这个分段在整个 IP 报文中的位置,用于保证目标主机能够 将属于同一个 IP 报文的分段重组起来; (8)生存时间:IP 报文最多可以经过多少个路由器,标识 IP 报文最长生存时间, IP 报文每经过一个路由器,生存时间减 1; (9)协议:标识 IP 报文载荷中上一层的协议类型; (10)首部校验和:IP 报文首部 CRC 校验和; (11)源 IP 地址:发送主机的 IP 地址; (12)目的 IP 地址:目标主机的 IP 地址; (13)选项:不是一个必须的字段,略; (14)填充:如果有选项字段,填充字段保证 IP 报文首部以 4 字节对齐; .4 IC
41、MP 协议协议 ICMP 协议(Internet Control Message Protocol)是网络层一个不可分割的组 成部分。ICMP 协议用于传输差错报文和控制报文以及其它一些网络信息,对通信过 程中产生的问题提供信息反馈。目前,差错报文的比重已经大大低于控制报文的比 重。 ICMP 协议最基本的功能是提供差错报告,但是 ICMP 协议只给出了建议操作, 并没有严格规定具体操作。ICMP 差错报告并不享受特别的优先权和可靠性,作为一 般数据进行传输,因此,ICMP 差错报告完全可能丢失或者损坏;另外,ICMP 差错报 文中的数据域在包含故障报文的头部之外,还要包含故障报文中的前 64
42、 比特数据, 这样可以使接收端更加准确的确定故障。ICMP 差错报告包括:信宿不可达、超时等。 ICMP 控制报文包括:源抑制报文和重定向报文。其中,源抑制报文主要用于处 理网络拥塞,当 IP 报文到达速度太快,无法及时处理时,目的主机或中继主机就会 发送一个 ICMP 源抑制报文(ICMP Source Quench Message)给信源主机,通知信源主 机暂停发送 IP 报文;重定向报文主要用于路径控制。 与 ICMP 差错报文、ICMP 控制报文单向传输不同,ICMP 查询报文是双向传输的, 主要用于获取某些有用的信息,这样可以更加方便地进行故障诊断和网络控制。常 用的 ICMP 查询
43、报文包括:回送请求(Echo Request),回送应答(Echo Reply)等。回 送请求和回送应答报文主要用于检查网络间的物理连接是否己经建立。网络管理程 序,例如:简单网络管理协议(SNMP)就是使用回送请求和回送应答报文来监控网络故 障,回送请求和回送应答报文也被用来跟踪路由。 ICMP 报文格式如图 2-6 所示。 类型代码校验和 标识序列号 数据 图 2-5 ICMP 报文格式 (1)类型:指出 ICMP 报文的类型,8 表示回应请求报文,0 表示回应应答报文: (2)代码:提供 ICMP 报文类型的进一步信息: .5 TCP 协议协议 TCP 是传输层协议,建立
44、在 IP 协议之上,提供可靠的端到端的面向连接的数据 传输服务。TCP 是上层应用程序和网络通信协议之间的接口。TCP 必须能够同时发送 多个应用程序的数据,TCP 把这些上层应用数据分段,打包,然后递交给 IP 协议。 同样,TCP 也必须能够同时接收多个应用程序的数据。TCP 必须能够跟踪、确定到达 的 TCP 段的目的应用程序。这通过 TCP 段中的目的端口来实现。因此,源端和宿端 对一些通用的应用程序的端口号达成协议是非常有意义的。TCP 段中既有源端口号 又有目的端口号。这些端口号和对应的 IP 地址一起分别构成两个套接字。 TCP 为上层的应用程序提供数据完整性测试,它首先对封装在
45、 TCP 段中的数据 执行 CRC 计算,然后把 CRC 计算结果放入 TCP 段的校验和字段中。当 TCP 段到达目 的地时,宿端 TCP 对接收到的 TCP 段执行同样的 CRC 计算,然后将本地产生的 CRC 校验和与 TCP 段中携带的 CRC 校验和比较。如果相同,我们就认为 TCP 段在传输过 程中没有发生变化。否则,TCP 宿端丢弃这个 TCP 段,并且不确认接收到这个 TCP 段,源端超时,重发。 到达宿端的 TCP 段可能是乱序的。其中有多种原因,例如:在一个利用率较高的 网络中,路由协议可能对不同的 IP 报文选择不同的传输路径,这就会导致 IP 报文 乱序到达;又如:IP
46、 报文在传输过程中可能被丢失或损坏,然后导致源端超时、重发, 这也会导致 IP 报文乱序到达。TCP 宿端将对接收到的数据重新排序,将接收到的数 据以正确的顺序递交给上层应用程序。 TCP 连接中的源端和宿端被称为对等实体。每一个对等实体都有对流向其缓冲 空间中的数据流进行流量控制的能力。TCP 使用滑动窗口进行流量控制。TCP 段中携 带源端和宿端滑动窗口的大小。当宿端缓冲空间将要耗尽时,通过减小宿端滑动窗 口的大小来减小源端的发送速率。如果宿端的缓冲空间完全被填满,宿端就会发送 一个应答报文,其中滑动窗口的大小为 0。这样源端就会停止发送,直到宿端又有 可用的缓冲空间。理想状态下,滑动窗口
47、机制可以很好的工作,但是,网络有时会 丢失数据,如果宿端发生缓冲空间上溢问题,它将发送一个 0 窗口尺寸的应答,源 端将会停止发送。但是,后面携带的非 0 窗口尺寸的应答如果丢失,就会发生死锁, 为了防止这种情况的发生,源端会使用一个 persist 计时器周期性地查询宿端滑动 窗口的大小。如果查询仍然不能得到滑动窗口的大小,TCP 将重新设置连接。 TCP 几个关键功能都是通过计时器机制来实现的。源端每发送一个 TCP 段,就 立即启动一个计时器。如果计时器在接收到正确应答之前就减少到 0,源端就认为 这个 TCP 段己经丢失,然后启动重传机制。计时器可以间接地控制网络状态,减少 网络拥塞,
48、方法是:当超时出现时减小发送速率。由于只有当超时出现时才减小发送 速率,因此,TCP 不能主动管理网络拥塞,但它可以减小自己对网络拥塞的作用。 TCP 段格式如图 2-6 所示: 源端口号目的端口号 序列号 确认序列号 首部长度 保留 U R G A C K P S H R S T S Y N F I N 窗口大小 校验和紧急指针 选项 数据 图 2-6 TCP 段格式 (1)源端口号:标识 TCP 段的源端应用程序。它和源端 IP 地址共同标识 TCP 段的 发送者; (2)目的端口号:标识 TCP 段的目的端应用程序。它和目的端 IP 地址共同标识 TCP 段的接收者; (3)序列号:唯一
49、标识这个 TCP 段,同时指明这个 TCP 段在 TCP 传输序列中的位 置; (4)确认序列号:表示小于这个确认序列号的 TCP 段都己经被正确接收,同时表 示希望接收的下一个 TCP 段的序列号,这个字段只有在 ACK 标志位置位时为一有效; (5)首部长度:TCP 段头部长度; (6)保留:这是一个保留字段,以备将来使用; (7)标志:包括 SYN, ACK, PSH, RST, URG, FIN 这 6 个标志位。当 TCP 建立连接, 三次握手期间,就需要使用 SYN 标志,用于同步序列号;ACK 标志用于告诉接收者确 认序列号字段是一个有效字段;PSH 标志用于告诉接收者将数据域中
50、的数据立即递交 给上层应用程序;RST 标志用于告诉接收者立即终止这条 TCP 连接,并释放相关的系 统资源;URG 用于告诉接收者紧急指针字段是一个有效字段;FIN 标志用于告诉接收者 这个 TCP 段是最后一个 TCP 段; (8)窗口大小:与 ACK 标志一起使用,接收者告诉发送者接收缓冲空间还有多大; (9)校验和:用于校验 TCP 段的可靠性,确保 TCP 段在传输过程中没有损坏; (10)紧急指针:与 URG 标志一起使用,标识这个 TCP 段中包含紧急数据,接收者 必须立即对这个紧急数据进行处理; .6 UDP 协议协议 UDP 协议(User Datagram Protocol)建立在 IP 协议之上,同 TCP 一样,位于传 输层。提供一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论