wireshark tcp报文深度解析

封包详细信息是用来查看协议中的每一个字段。各行信息分别对应TCP/IP协议的不同层级。以下图为例,分别表示:传输层、网络层、数据链路层、物理层,一共四层。如果有应用层数据会显示第五层,即一共会出现五层。

wireshark tcp报文深度解析_第1张图片

 

就举例查看一个tcp报文

cefe8e7a187e4bb8aceffce028a96ff8.png

 

物理层->mac层->数据链路层->传输层的数据结构如下: 

#ifndef LITTLE_ENDIAN  
#define LITTLE_ENDIAN   (1)   //BYTE ORDER  
#else  
#error Redefine LITTLE_ORDER  
#endif  

//Mac头部,总长度14字节  
typedef struct _eth_hdr  
{  
    unsigned char dstmac[6]; //目标mac地址  
    unsigned char srcmac[6]; //源mac地址  
    unsigned short eth_type; //以太网类型  
}eth_hdr;  

//IP头部,总长度20字节  
typedef struct _ip_hdr  
{  
    #if LITTLE_ENDIAN  
    unsigned char ihl:4;     //首部长度  
    unsigned char version:4, //版本   
    #else  
    unsigned char version:4, //版本  
    unsigned char ihl:4;     //首部长度  
    #endif  
    unsigned char tos;       //服务类型  
    unsigned short tot_len;  //总长度  
    unsigned short id;       //标志  
    unsigned short frag_off; //分片偏移  
    unsigned char ttl;       //生存时间  
    unsigned char protocol;  //协议  
    unsigned short chk_sum;  //检验和  
    struct in_addr srcaddr;  //源IP地址  
    struct in_addr dstaddr;  //目的IP地址  
}ip_hdr;
  
//TCP头部,总长度20字节  
typedef struct _tcp_hdr  
{  
    unsigned short src_port;    //源端口号  
    unsigned short dst_port;    //目的端口号  
    unsigned int seq_no;        //序列号  
    unsigned int ack_no;        //确认号  
    #if LITTLE_ENDIAN  
    unsigned char reserved_1:4; //保留6位中的4位首部长度  
    unsigned char thl:4;        //tcp头部长度  
    unsigned char flag:6;       //6位标志  
    unsigned char reseverd_2:2; //保留6位中的2位  
    #else  
    unsigned char thl:4;        //tcp头部长度  
    unsigned char reserved_1:4; //保留6位中的4位首部长度  
    unsigned char reseverd_2:2; //保留6位中的2位  
    unsigned char flag:6;       //6位标志   
    #endif  
    unsigned short wnd_size;    //16位窗口大小  
    unsigned short chk_sum;     //16位TCP检验和  
    unsigned short urgt_p;      //16为紧急指针  
}tcp_hdr;  

//UDP头部,总长度8字节  
typedef struct _udp_hdr  
{  
    unsigned short src_port; //远端口号  
    unsigned short dst_port; //目的端口号  
    unsigned short uhl;      //udp头部长度  
    unsigned short chk_sum;  //16位udp检验和  
}udp_hdr; 
 
//ICMP头部,总长度4字节  
typedef struct _icmp_hdr  
{  
    unsigned char icmp_type;   //类型  
    unsigned char code;        //代码  
    unsigned short chk_sum;    //16位检验和  
}icmp_hdr; 

每层数据分析:

网络层

wireshark tcp报文深度解析_第2张图片

 

936729650f404a94ab68b78da059f548.png

//Mac/以太网首部,总长度14字节  
typedef struct _eth_hdr  
{  
    unsigned char dstmac[6]; //目标mac地址  
    unsigned char srcmac[6]; //源mac地址  
    unsigned short eth_type; //以太网类型  
}eth_hdr;

 数据链路层:

wireshark tcp报文深度解析_第3张图片

wireshark tcp报文深度解析_第4张图片

 //IP首部,总长度20字节  
typedef struct _ip_hdr  
{  
    #if LITTLE_ENDIAN  
    unsigned char ihl:4;     //首部长度  
    unsigned char version:4, //版本   
    #else  
    unsigned char version:4, //版本  
    unsigned char ihl:4;     //首部长度  
    #endif  
    unsigned char tos;       //服务类型  
    unsigned short tot_len;  //总长度  
    unsigned short id;       //标志  
    unsigned short frag_off; //分片偏移  
    unsigned char ttl;       //生存时间  
    unsigned char protocol;  //协议  
    unsigned short chk_sum;  //检验和  
    struct in_addr srcaddr;  //源IP地址  
    struct in_addr dstaddr;  //目的IP地址  
}ip_hdr;

 传输层:

 TCP包首部如下:

wireshark tcp报文深度解析_第5张图片

wireshark tcp报文深度解析_第6张图片

 //TCP首部,总长度20字节  
typedef struct _tcp_hdr  
{  
    unsigned short src_port;    //源端口号  
    unsigned short dst_port;    //目的端口号  
    unsigned int seq_no;        //序列号  
    unsigned int ack_no;        //确认号  
    #if LITTLE_ENDIAN  
    unsigned char reserved_1:4; //保留6位中的4位首部长度  
    unsigned char thl:4;        //tcp头部长度  
    unsigned char flag:6;       //6位标志  
    unsigned char reseverd_2:2; //保留6位中的2位  
    #else  
    unsigned char thl:4;        //tcp头部长度  
    unsigned char reserved_1:4; //保留6位中的4位首部长度  
    unsigned char reseverd_2:2; //保留6位中的2位  
    unsigned char flag:6;       //6位标志   
    #endif  
    unsigned short wnd_size;    //16位窗口大小  
    unsigned short chk_sum;     //16位TCP检验和  
    unsigned short urgt_p;      //16为紧急指针  
}tcp_hdr;  

 

 

你可能感兴趣的:(交换芯片,网络,服务器,tcp/ip)