网络包头
来源:互联网 发布:上古卷轴5数据修改 编辑:程序博客网 时间:2024/04/28 05:56
typedef struct mac_address
{
u_char byte1;
u_char byte2;
u_char byte3;
u_char byte4;
u_char byte5;
u_char byte6;
}mac_address;
/* mac header*/
typedef struct mac_header
{
mac_address tmac;
mac_address smac;
u_short netprotocoltype;
}mac_header;
/* 4 bytes IP address */
typedef struct ip_address
{
u_char byte1;
u_char byte2;
u_char byte3;
u_char byte4;
}ip_address;
/* IPv4 header */
typedef struct ip_header
{
u_char ver_ihl; // Version (4 bits) + Internet header length (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;
/* UDP header */
typedef struct udp_header
{
u_short sport; // Source port
u_short dport; // Destination port
u_short len; // Datagram length
u_short crc; // Checksum
}udp_header;
/* TCP header */
typedef struct tcp_header{ //定义TCP首部
u_short th_sport;
USHORT th_dpost;
unsigned int ht_seq;
unsigned int ht_ack;
unsigned char th_lenres;
unsigned char th_flag;
u_short th_win;
u_short th_sum;
u_short th_urp;
}tcp_header;
对于ip_address,netprotocoltype等要用ntohs函数进行处理,使高byte和低byte互换.
- 网络包头
- 网络包头数据结构
- 网络包头验证部份代码
- Linux网络编程--wireshark分析TCP包头的格式
- 数据包头分析---网络字节序与主机字节序
- 唯快不破:Linux网络编程--wireshark分析TCP包头的格式
- RTP包头
- 去包头!
- 包头1384180757261
- IP包头
- IPv6包头
- swoole学习笔记(五)网络通信协议设计 -- EOF结束符协议和固定包头+包体协议
- 包头的生活
- IPV6的包头结构
- IP包头格式
- TCP包头分析
- TCP包头分析
- ipv4与ipv6包头
- calling conventions:amd64
- 编程应用集
- 程序员的成长故事之 五年技术之路
- 一个JAVA学习者
- 深入GetMessage和PeekMessage
- 网络包头
- 程序员的成长故事之 我的Borland五年
- web2.0概念的诠释
- javamail发邮件
- 有价值的搜索查询引擎
- 程序员的成长故事之 从微软走向开源的5年
- 程序员的成长故事之 Martin Fowler访谈
- 值得思考的问题
- 42个著名搜索引擎免费登陆入口大全