您的位置:首页 > 理论基础 > 计算机网络

scapy基础-网络数据包结构

2017-06-14 11:31 239 查看
网络层次模型,数据包的组成是学习scapy的基础,下文主要关注模型中各个层次的用途,ethernet II和ip包数据结构。
  
  1.五层模型简介

名称作用包含协议
应用层面向程序对程序的传输服务
(应用层更关注于ip协议中的数据包部分)
HTTP,DNS,FTP,SMTP
传输层分割并重新组装上层提供的数据流,为数据流提供端口到端口的传输服务。
(传输层关注端口号)
TCP,UDP
网络层1.通过包的分片适应最大传输单元长度
2.路由实现的方式和学习的方式
3.定义所有结点的逻辑地址(ip地址)
(网络层关注ip地址)
IP,ARP,ICMP,DHCP
数据链路层1.把比特流组合成帧,然后发出去
2.判断从那一帧开始到那一帧结束
3.通过一些方法(如效验码)来保证数据的正确性
(数据链路层关注MAC地址)
Ethernet,IEEE 802.11 wireless LAN
物理层一套为上层数据链路层提供无差异化数据的规范太底层了,不关注…
 
 2. Ethernet II数据包
 数据链路层有很多协议,这里只关注一个我们最最常用的Ethernet II协议。

目的地址源地址类型数据FCS
6 byte6 byte2 byte46~1500 byte4 byte
目标地址:此数据包的目标MAC地址。
源地址:此数据包的源MAC地址。
协议类型:上层协议,表示网络层使用的协议。(0x0800表示网络层使用的是IP协议)
数据:高层协议、数据和填充符,范围在46~1500字节。(如果数据长小于46字节,则要求“填充”,以使这个数据的长度达到46字节)
FCS:数据帧校验序列,用于确定数据包在传输过程中是否损坏。
参考:https://en.wikipedia.org/wiki/Ethernet_frame#Ethernet_II

 3.IP数据包

Offsets0123
0Version(4bit)IHL(4bit)DSCP(6bit)ECN(2bit)Total Length(16bit)
4Identification(16bit)Flags(3bit)Fragment Offset(13bit)
8Time To Live(8bit)Protocol(8bit)Header Checksum(16bit)
12Source IP Address(32bit)
16Destination IP Address(32bit)
20Options(if IHL > 5)padding
Data
几个需要重点关注的对象:
1. 源地址,目的地址,ttl值在网络层的ip数据包中。
2. Protocol字段定义了数据部分的上层协议类型(值参考https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers
3. ip数据包包含头部和数据部分。IHL(Internet Header Length)代表 ip包头部长度占用4bit,值范围是5-15,用IHL值*4字节就得到ip头部长度(所以头部长度一定是4字节的倍数)。Total Length是包括头部和数据部分整个ip包的长度,占用16bit,其值以byte为单位。最小值 20 bytes (20字节头部+ 0 bytes数据),最大值 65,535 bytes。
4. Header Checksum只包含头部数据的错误校验码,当包经过路由器时可能会修改ip包头部数据,此时需要重新计算此值。如果包含数据部分就太费时间了。
参考:https://en.wikipedia.org/wiki/IPv4#Packet_structure

4.校验和(checksum)
  checksum只要用于验证数据在传输和存储过程中的完整性而不是准确性,其中特别需要注意的是在计算校验和时checksum字段的值应该为0。其计算方法如下:

SHORT checksum(USHORT* buffer, int size)
{
unsigned long cksum = 0;
while(size>1)
{
cksum += *buffer++;
size -= sizeof(USHORT);
}
if(size)
{
cksum += *(UCHAR*)buffer;
}
//处理当cksum大于16bit的情况,处理成16bit
cksum = (cksum>>16) + (cksum&0xffff);
cksum += (cksum>>16); // 处理上一步相加时可能产生的进位
return (USHORT)(~cksum);
}

参考:http://www.thegeekstuff.com/2012/05/ip-header-checksum

转自:http://blog.csdn.net/cracker_zhou/article/details/54645276
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: