【个人总结系列-46】计算机网络基础知识学习-数据包格式分析-传输过程-IP地址分类-网络设备

时间:2019-05-13 01:41:11下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《【个人总结系列-46】计算机网络基础知识学习-数据包格式分析-传输过程-IP地址分类-网络设备》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《【个人总结系列-46】计算机网络基础知识学习-数据包格式分析-传输过程-IP地址分类-网络设备》。

第一篇:【个人总结系列-46】计算机网络基础知识学习-数据包格式分析-传输过程-IP地址分类-网络设备

计算机网络基础知识学习-数据包格式分析-传输过程-IP地址分类-网

络设备

1.1 计算机网络基础知识学习

1.1.1 对数据包格式的分析

由于在对包进行分析时都要参考数据包的格式,所以数据包的格式是相当重要的。在抓包时,首先是获得链路层的帧,根据帧头可以获得源mac和目的mac以及上层的协议。一般帧头是14byte,链路层帧的包头结构在程序中的表示如下:

/* 6字节的mac地址 */ typedef struct mac_address {

u_char byte1;

u_char byte2;

u_char byte3;

u_char byte4;u_char byte5;u_char byte6;} mac_address;

/* 14字节的ether帧头 */ typedef struct ether_header {

mac_address dest_mac;

mac_address src_mac;

u_short protocal;} ether_header;

根据帧头的长度将指针往后移,然后可以获得IP数据报的头部指针,根据报头信息可以获得源IP、目的IP、上层协议、头部长度、总长度等信息,IP数据报的头部格式如下图所示:

图2.2.2.1 IPV4头部格式

图2.2.2.2 IPV6头部格式

IPV4报文结构在程序中的表示:

/* 4字节的IP地址 */ typedef struct ip_address {

u_char byte1;

u_char byte2;

u_char byte3;

u_char byte4;} ip_address;/* IP头部 */

typedef struct ip_header {

u_char ver_ihl;

// 版本(4 bits)+ 首部长度(4 bits)

u_char tos;

// 服务类型(Type of service)

u_short tlen;

// 总长(Total length)

u_short identification;// 标识(Identification)

u_short flags_fo;

// 标志位(Flags)(3 bits)+ 段偏移量(Fragment offset)(13 bits)

u_char ttl;

// 存活时间(Time to live)

u_char proto;

// 协议(Protocol)

u_short crc;

// 首部校验和(Header checksum)

ip_address saddr;

// 源地址(Source address)

ip_address daddr;

// 目的地址(Destination address)

u_int

op_pad;

// 选项与填充(Option + Padding)} ip_header;

然后根据报头长度又可以计算出TCP或UDP的头部指针,根据TCP或UDP的头部信息可以获得源端口号和目的端口号等信息,一般TCP的头部长度为20bytes,UDP的头部长度为8bytes,TCP和UDP的报文格式如下所示:

图2.2.2.3 TCP报文格式

图2.2.2.4 UDP报文格式

TCP/UDP包头结构在程序中的表示:

/* TCP头部 */

typedef struct tcp_header {

u_short srcPort;

// 源端口号 16bits

u_short destPort;

// 目的端口号 16bits

u_int seqNum;

// 序号 32bits

u_int ackNum;

// 确认号 32bits

u_short headLen_other;

// 首部长度+保留未用+其他字段 16bits

u_short windowSize;

// 窗口大小 16bits

u_short checkSum;

// 检验和 16bits

u_short pointer;

// 紧急数据指针 16bits

u_int option;} tcp_header;

/* UDP头部 */

// 选项 可选、不定长 typedef struct udp_header {

u_short srcPort;

// 源端口号 16bits

u_short destPort;

// 目的端口号 16bits

u_short udpLen;

// udp长度 16bits

u_short checkSum;

// 检验和 16bits } udp_header;

最后就是应用层的数据了,根据上层的报文头部信息可以计算出应用层数据的头部指针,同时根据IP数据包的头部信息可以计算出应用层数据的长度,因此就可以通过程序将应用层的数据取出来,应用层又根据不同的协议取出实际有用的数据。应用层协议主要有FTP、HTTP、DNS等。

通过以上对数据包格式的了解,那么就可以很容易对捕获的数据包进行一层一层的解析了,一般捕获的数据包都是取得链路层的帧,然后再根据头部信息一层一层地剥离,具体的程序分析流程如下图所示:

图2.2.2.5 数据包分析流程

以下就是根据以上分析流程捕获到包并对其进行分析而得出的结果(一个TCP数据包):

------data-----------frame-----dest_mac: 0.26.c6.67.77.14 src_mac: c8.3a.35.32.41.28 protocal: 800--ip packet--version:4 head len:20 type of service: 0 total len: 121 identifi: 14155 flag: 2 offset: 0 time to live: 50 protocal: 6 check sum: 5bb source addr: 125.39.205.67 dest addr: 192.168.0.102------------------------------tcp datagram------------------------------srcPort:80 destPort:1695 seqNum:396591251 ackNum:1797819109 headLen:20 windowSize:47386 checkSum:40441 pointer:0--app_data--数据长度:81.Q..Q....1.9Q...#[SkY#...d..qK"....xu...T.{...u.o...,.{.....a....h....-.tI...]...1.1.2 计算机网络原理和数据包在网络中的传输过程

其实协议就是为了规定一种大家都遵循的格式,在应用层、传输层、网络层、数据链路层都有自己的协议数据单元(PDU),按照数据包在网络中传输的过程,首先是应用层将实际的数据根据应用层的协议(格式)封装成一个应用层数据包(相当于一个字符串,更确切的是一个字节串),然后向下传,传到传输层,传输层将拿到的串作为自己数据包的数据部分,并在前面加上自己的头部,头部有许多字段,每个字段都有各自的含义,这样就生成了一个新的串,继续向下传。传到了网络层,网络层进行和上面类似的操作,继续传到数据链路层。数据链路层也加上自己的头部,生成一个新的串,并且在串的头部和尾部都做好标记,然后继续向下传。传到了物理层,物理层就直接将收到的串转化成二进制的电信号进行传输。假如传输到最后的目的地(端系统中),首先是物理层收到电信号,将其转化成一串字节,向上传。传到了数据链路层,数据链路层根据之前对串的头部和尾部做好的记号将有用信息提取出来,并根据头部信息提取出数据部分,只将数据部分向上传。传到了网络层,网络层根据网络层的头部信息,提取出数据部分,传给上一层,依次类推。数据在网络中(整个传输过程不包括两个端系统的部分)的传输过程只有3层,即物理层到数据链路层,再到网络层,传输的过程和上面描述的一样。

1.1.3 保留IP地址的分配

一个机构网络要连入Internet,必须申请公用IP地址。但是考虑到网络安全和内部实验等特殊情况,在IP地址中专门保留了三个区域作为私有地址,使用保留地址的网络只能在内部进行通信,而不能与其他网络互连。因为本网络中的保留地址同样也可能被其它网络使用。IP划分方案中留出了三部分IP地址空间,给不连接到Internet的企业内部网专用。这三部分保留的IP地址空间分别在A、B和C类地址空间中都存在,地址范围为:

10.x.x.x 172.16.x.x ~ 172.31.x.x 192.168.x.x

比如,在局域网内计算机数量少于254台的情况下,一般在C类IP地址段里选择IP地址范围就可以了,如从“192.168.1.1”到“192.168.1.254”。

1.1.4 特殊IP地址的分配

0.0.0.0 :所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。

255.255.255.255 :限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。127.0.0.1 :本机地址,主要用于测试。在Windows系统中,这个地址有一个别名“Localhost”,寻址这样一个地址,是不能把它发到网络接口的。

224.0.0.1 :组播地址,注意它和广播的区别。从224.0.0.0到239.255.255.255都是这样的地址。224.0.0.1特指所有主机,224.0.0.2特指所有路由器。这样的地址多用于一些特定的程序以及多媒体程序。

169.254.x.x :如果你的主机使用了DHCP功能自动获得一个IP地址,那么当你的DHCP服务器发生故障,或响应时间太长而超出了一个系统规定的时间,Windows系统会为你分配这样一个地址。

10.x.x.x, 172.16.x.x~172.31.x.x, 192.168.x.x :私有地址,即前面的保留IP地址

1.1.5 常见的网络设备的理解

1.中继器:由于传输的介质(比如双绞线)是有一定的传输距离的,超过这个距离信号就会衰减,为了让信号沿着这条线一直往下传,于是在线中间加一个中继器,就是将接收到的信号放大后继续往后传,就像一个为信号中间补充能量的设备。

2.集线器:工作在物理层,有许多接口,可以连接许多传输设备,但是是以共享的方式发送的,一个设备发送时其他设备必须等待,而且是广播式的,一个设备发送的数据,所有连接在这个集线器上的其他设备都可以接收到。

3.交换机:工作在数据链路层,与集线器有点类似,但是功能更强大,而且多个设备之间可以并行传输数据。由于交换机可以识别mac地址,所以不是以广播方式发送的。

4.路由器:工作在网络层,识别IP地址,控制数据包从一个网络到另一个网络的转发。

下载【个人总结系列-46】计算机网络基础知识学习-数据包格式分析-传输过程-IP地址分类-网络设备word格式文档
下载【个人总结系列-46】计算机网络基础知识学习-数据包格式分析-传输过程-IP地址分类-网络设备.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐