敬业的IT人 >> 网络技术 >> 网络协议 >> 运行于以太网的基础协议

运行于以太网的基础协议

敬业的IT人 互联网 佚名 2008-3-20 10:37:39
下载源代码


1、引言
    前段时间编写了一个网络监听工具。为了分析抓到的数据包,要熟悉各种网络协议。本人痛苦的发现网上很少有集中讲解这方面的文章,而图书大部分讲解得不够仔细,小部分专门研究网络协议的图书又太大,不适合我们的要求。故把常用的以太网协议写出来和大家分享。

2、以太网的特点
    以太网采用的是CSMA/CD技术,即带碰撞检测的载波侦听多址访问。在CSMA/CD技术中,如果网络上没有数据,则任何时候都可以将数据传送出去。如果网络被使用,那就要等到网络空闲时再传送。在以太网中传输的数据是无选择的发送到所有网卡的。这就为网络监听创造了条件。

3、以太网数据包
    在以太网中,数据是以被称为帧的数据结构体为单位进行交换的。这种数据包结构如下图所示:
  报头 报文

    在以太网桢的报头中包含接收端及发送端的地址,桢的报文部分包含的是数据种类。最后放置的是错去校验和修正码。通常我们抓到的数据包已经去掉了同步码和桢分界符。下面先给出报头部分的定义:

以太网桢报头格式 接收端MAC地址(48位) 发送端MAC地址(48位) 类型字段(16位)
注意:这里提到的是位,一位就是二进制数据中的一位。通常,一个字节是由8位组成的。

类型字段意义(参考RFC1700) 类型(十六进制) 协议 0800 IP 0806 ARP 8035 RARP 809B Appletalk 8137-8138 Novell 814C SNMP
4、IP数据报的构成
    当以太网数据桢的类型字段为十六进制0800时,表示以太桢报文部分是一个IP数据报。其格式如下所示,其中报头部分存储了版本、头长度、生存时间、接收和发送端IP地址等重要信息。
  报头 报文

IP数据报报头定义 字段 位数 说明 版本 4 表示IP的版本。现目前的版本号为4 报头长度 4 表示报头的长以32位为一个单位 服务类型 8 优先级和可靠性等服务品质要求的数值 数据报长度 16 IP数据报的全部长度,以8位(字节)为单位 标识 16 识别IP数据报的编号 标志 3 标示有无碎块 数据块偏移 13 产生碎块时应该比达到的数据块早到的数据块大小 生存时间 8 存放控制IP数据报寿命长短的数值 协议 8 标示上层协议 报头校验码 16 检查报头错误用的校验码 发送端地址 32 发送端的IP地址 目的地地址 32 接收端的IP地址  

5、TCP协议
    传输控制协议(TCP)是在传输层使用的协议。当IP数据报的协议字段的值为6时,表示本IP数据报的报文部分是TCP数据报。

TCP数据报头定义 字短名 长度(位) 意 义 发送端端口 16 发送端及客户夫端程序的端口号 接收端端口 16 接收端及服务器端程序得端口号 顺序号 32 标示消息段的数据位于全体数据块的眸字节的数值 确认号 32 表示接受端对于发送端接收到的数据块数值 数据偏移 4 报头长,以32位为一个单位 预留 6 扩展用(预留) 控制位 6 表示某字段意义的位 窗口 16 窗口的大小(一次可以发送的数据量) 校验码 16 错误检查用 紧急数据指针 16 插入信号等紧急数据的结束位置 选项和填充 32 选相等

6、UDP数据报
    当IP数据报的协议字段的值等于17,表示IP数据报的报文部分携带的是UDP数据报。下面是UDP数据报头的构造。

UDP数据报   发送端端口(16位) 接收端端口(16位) 数据报长度(16位) 校验码(16位) 数据

7、关于程序
    为了更好的理解本文提到的协议,及它们之间的一些简单关系,作者开发了一个简单的网络监控软件,读者可以参照程序的运行理解本文。


    
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com