文档库 最新最全的文档下载
当前位置:文档库 › tcp-ip

tcp-ip

一网络模型

目前通信规程一般采用层次结构即按功能将通信规程分成若干层层与层之间通

过接口来互相联系每一层除最高层外都向上一层提供一定的服务每一层除最低

层外都利用下一层提供的服务来实现它的功能而不必考虑下一层的功能怎样实现的

ISO/OSI模型国际标准化组织/开放系统互连模型

应用层这一层定义了许多协议不同的应用方式对应不同的协议同时提供相应的服务

如HTTP FTP telnet,e-mail.

传输层使得端到端的通讯成为可能它提供建立维护和拆除传送连接的功能选择网络层提供的最合适的服务在系统之间提供可靠的透明的数据传送如TCP传

输控制协议UDP用户数据报文协议

因特网层在两个因特网结点之间进行数据报分组和路由选择该层包括的协议有IP 国际协议ARP地址解析协议RARP逆地址解析协议ICMP因特

网控制报文协议

网络层主要包括物理层和数据链路层完成物理上的接口连接协议如RS232和数据交换协议如Ethernet(IEEE862.3)和PPP等

整个通讯起始如应用层的数据发送每经过一层该层加入自己的头这种方式叫数包

二每一层的协议介绍

1以太网

以太网是局域网中最常用的数据传输协议采用IEEE802.3标准以太网所使用的接入机制叫做具有冲突检测的载波监听多点接入CSMA/CD以太网共享

总线每一结点的地位都是同等的若两个或更多的站在同一时间发送数据就会产生冲突因此所有的站都必须连续地监听媒体以检测是否发生了冲突当

发生冲突时所有的站都要忽略已收到的数据然后发送站必须再等待一段时间后才能再发送数据为了减少第二次发生冲突的机会每一个发送站都要产生一个随机数来决定它的重新发送时必须等待多长时间

每一个网络节点都有自己唯一的的物理地址即媒体进入控制地址MAC以

太网最大的帧长度可达1518字节不包括前同步码它由7个字节出现的I/O组成起同步作用下图是以太帧格式

SFD用1字节10101011作为标志并指出帖的开始

数据这个字包含从上层来的数据数据长度必须在46到1500字节之间如果上层协议产生的数据小于46字节则应将其填补到46字节若数

据长度超过1500字节上层就必须将其进行分片

2地址解析协议ARP

网络上的地址分物理地址如MAC和逻辑地址如IP地址这是节点的两

种不同的标识符当主机或路由器有数据报要发送给另一个主机或路由器时它必

须有接收站的逻辑IP地址但是IP数据报必须封装成帧才能通过物理网络这

就表示发送站必须有接收站的物理地址因此需要一个从逻辑地址到物理地址的映射

当主机或路由器需要找出另一个主机或路由器在此网络上的物理地址时它就

发送一个ARP查询分组这个分组包括发送站的物理地址和IP地址查询采取在

网络上广播的方式因为发送站不知道接收站的物理地址这样在局域网络上的每一个主机或路由器都接受和处理这个ARP查询分组只有IP地址相符的接收者才会响应ARP分组并发回ARP响应分组该分组中包括有自己的物理地址这样

两站点就建立了通讯关系

ARP分组格式

ARP 分组在以太网中的表示

在MSP430的例程中相应的函数为

1void PrepareARP_REQUEST(void) 2void PrepareARP_ANSWER(void)

3CS8900A 以太网以太网控制器控制器

CS8900A 是以太网型局域网控制器比较适合PC 上的ISA 标准接口CS8900A 是一

种高集成度的芯片外围元件需要很少其供电电压为3V 很适合与MSP430相连接

MSP430的I/O 口可直接作为CS8900A 的数据总线和地址总线

CS8900A 工作在三种不同的模式I/O 空间存储室间和作为一个DMA 从机以 上工作模式各有利弊作为单片机局域网控制器I/O 空间的操作模式是最好的选择最 主要的原因是可用8位宽的数据总线与MSP430的I/O 口相连CS8900A 还有四根地址线 和两根控制线与MSP430的相连控制线IOR 和IOW 都是低电平有效当设置有效的I/O

状态到地址总线上并将控制线置低电平则数据就可通过数据总线来进行传输

CS8900A 与网络线之间有一个隔离变压器在数据传输时CS8900A 可直接驱动发光

二极管当发射或接收到某一帖数据时红灯会闪动黄灯亮表示网线连接正常

下面是CS8900A 与msp430原理框图和原理图

原理原理框图框图

电路电路原理图

原理图

下面是与CS8900A有关的一些MSP430函数

void Init8900(void)对MCU的相关端口作为初始化并将CS8900A设置

为局域网物理层接口并设置MAC地址

void Write8900(unsigned char Address, unsigned int Data)对CS8900

的控制寄存器进行操作选中地址将控制字写入控制寄存器

void WriteFrame8900(unsigned int Data)将数据写入发送缓冲其发

送和接收缓存为同一个地址为发送数据做准备

unsigned int Read8900(unsigned char Address)从给定地址的寄存器中读

CS8900控制数据

unsigned int ReadFrame8900(void)从接收缓冲中将传输数据读入MCU

其数据是从低为对齐

unsigned int ReadFrameBE8900(void)从接收缓存中读16位的数据数据

为高位对齐可避免数据的高低字节交换

void CopyToFrame8900(void *Source, unsigned int Size)将MCU中数据块写入CS8900发射缓存中

void CopyFromFrame8900(void *Dest, unsigned int Size)将CS8900接收缓存的数据每读入MCU中形成一个数据块MCU再对数据作处理

void RequestSend(unsigned int FrameSize)确定要发送的帖的长度以及帖的起始字节

四网际协议IP

IP是为使用数据报的分组交换网设计的无连接协议它提供将数据报从源地址传输到目的地址的机制每一个通讯的节点定义了一个固定长度的IP地址IP尽可能的将分组数据传输到目的地但它不提供差错检验或跟踪那么数据在传输过程中可能丢失或损伤要解决可靠性问题IP要依靠更高层的协议如TCP

下面是IP的格式

HLEN 首部长度

总长度总长度字段定义了包括首部在内在的数据报长度

协议这个8比特字段定义使用此IP层服务的高层协议有许多高层协议绪如

TCP UDP ICMP等的数据能够封装到IP数据报中这个字段指明IP

数据报必须交付到的最终目的协议

在tcpip.h里有IP协议的每个字段的定义在tcpip.c里有IP相关字段的应用其函数为void PrepareICMP_ECHO_REPLY(void)

void PrepareTCP_FRAME(unsigned int TCPCode)

void PrepareTCP_DATA_FRAME(void)

以上函数都有IP字段的处理

五因特网控制报文协议ICMP

IP提供了不可靠的和无连接的数据报交付它有两个缺险缺少差错控制和缺少辅助机制IP协议没有差错报告或差错纠正机制并且IP还缺少一种为主机和管理查询的机制

主机有时需要确定一个路由器或另一个主机是否活跃等ICMP就是为补偿上述两个缺点而设计的它是配合IP协议使用的ICMP报文被封装成IP数据报在IP数据报中的协议字段的值是1就表示其IP数据是ICMP

ICMP的格式为

其中类型字段主要功能为差错报告它充分考虑了网络传输中出现的差错情况

代码段针对每一种差错其引起的原因是多种的该字段指出了引起某种差错的具体原因后面的两个内容是可变的其依据为以上两字段的内容

六传输控制协议TCP

TCP是一种面向连接的可靠的运输协议它经IP服务添加了面向连接和可靠性

的特点TCP属传输层协议它的主要任务是创建进程到进程的通信TCP使用端口号来完成这种通信另一任务是提供流控制和差错控制机制TCP使用滑动窗口协议完成流控制使用分组超时和冲传来完成差错控制TCP还负责为应用程序

TCP还提供一种流式服务它表示TCP接收应用程序传来的字符流从这个流中提取适当的长度创建报文段的分组然后将他们发送到下一级作为接收端时TCP接收

报文段从中提取数据并将它们作为一个流支付给接收进程当整个流发送完毕后TCP

应关闭连接

TCP的格式为

端口号主要是为进程到进程的通信提供服务作为网络协议IP只能将报文交付给目

的计算机但这是一种不完整的交付这个报文还必须送交到正确的进程TCP

通过端口号定义可完成这一点

序号主要用于接收报文的排序以免丢失信息

窗口大小进行流控制

相关文档