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

2020-02-28 其他个人工作总结 下载本文

【个人总结系列46】计算机网络基础知识学习数据包格式分析传输过程IP地址分类网络设备由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“计算机网络数据包分析”。

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

络设备

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

1.1.1 对数据包格式的分析

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

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

u_char byte1;

u_char byte2;

u_char byte3;

u_char byte4;u_char byte5;u_char byte6;} mac_addre;

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

mac_addre dest_mac;

mac_addre 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_addre {

u_char byte1;

u_char byte2;

u_char byte3;

u_char byte4;} ip_addre;/* 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_addre saddr;

// 源地址(Source addre)

ip_addre daddr;

// 目的地址(Destination addre)

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地址分类网络设备.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
【个人总结系列46】计算机网络基础知识学习数据包格式分析传输过程IP地址分类网络设备
点击下载文档
相关专题 计算机网络数据包分析 知识学习 个人总结 计算机网络 计算机网络数据包分析 知识学习 个人总结 计算机网络
[其他个人工作总结]相关推荐
    [其他个人工作总结]热门文章
      下载全文