当前位置:文档之家› 【个人总结系列-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; // 源端口号16bitsu_short destPort; // 目的端口号16bitsu_int seqNum; // 序号32bitsu_int ackNum; // 确认号32bitsu_short headLen_other; // 首部长度+保留未用+其他字段16bits u_short windowSize; // 窗口大小16bitsu_short checkSum; // 检验和16bitsu_short pointer; // 紧急数据指针16bitsu_int option; // 选项可选、不定长} tcp_header;/* UDP头部*/typedef struct udp_header{u_short srcPort; // 源端口号16bitsu_short destPort; // 目的端口号16bitsu_short udpLen; // udp长度16bitsu_short checkSum; // 检验和16bits} udp_header;最后就是应用层的数据了,根据上层的报文头部信息可以计算出应用层数据的头部指针,同时根据IP数据包的头部信息可以计算出应用层数据的长度,因此就可以通过程序将应用层的数据取出来,应用层又根据不同的协议取出实际有用的数据。

应用层协议主要有FTP、HTTP、DNS等。

通过以上对数据包格式的了解,那么就可以很容易对捕获的数据包进行一层一层的解析了,一般捕获的数据包都是取得链路层的帧,然后再根据头部信息一层一层地剥离,具体的程序分析流程如下图所示:图2.2.2.5 数据包分析流程以下就是根据以上分析流程捕获到包并对其进行分析而得出的结果(一个TCP数据包):-------------------------------------data-------------------------------------------------------------------------frame------------------------------------dest_mac: 0.26.c6.67.77.14src_mac: c8.3a.35.32.41.28protocal: 800---------------------------------ip packet--------------------------------- version:4head len:20type of service: 0total len: 121identifi: 14155flag: 2offset: 0time to live: 50protocal: 6check sum: 5bbsource addr: 125.39.205.67dest addr: 192.168.0.102------------------------------tcp datagram------------------------------ srcPort:80destPort:1695seqNum:396591251ackNum:1797819109headLen:20windowSize:47386checkSum:40441pointer: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.x172.16.x.x ~ 172.31.x.x192.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.中继器:由于传输的介质(比如双绞线)是有一定的传输距离的,超过这个距离信号就会衰减,为了让信号沿着这条线一直往下传,于是在线中间加一个中继器,就是将接收到的信号放大后继续往后传,就像一个为信号中间补充能量的设备。

相关主题