计算机网络课程设计-编程实现简单的tcp协议分析器内容摘要:

urgent_pointer = ntohs(tcp_protocoltcp_urgent_pointer)。 /* 紧急指针 */ flags = tcp_protocoltcp_flags。 /* 标识 */ checksum = ntohs(tcp_protocoltcp_checksum)。 /* 校验和 */ printf( TCP协议 \n)。 printf(源端口号:%d\n, source_port)。 printf(目的端口号:%d\n, destination_port)。 switch (destination_port) { case 80: printf(上层协议为HTTP协议\n)。 break。 case 21: printf(上层协议为FTP协议\n)。 break。 case 23: printf(上层协议为TELNET协议\n)。 break。 case 25: printf(上层协议为SMTP协议\n)。 break。 case 110: printf(上层协议POP3协议\n)。 break。 default: break。 } printf(序列码:%u\n, sequence)。 printf(确认号:%u\n, acknowledgement)。 printf(首部长度:%d\n, header_length)。 printf(保留:%d\n, tcp_protocoltcp_reserved)。 printf(标记:)。 if (flags amp。 0x08) printf(PSH )。 if (flags amp。 0x10) printf(ACK )。 if (flags amp。 0x02) printf(SYN )。 if (flags amp。 0x20) printf(URG )。 if (flags amp。 0x01) printf(FIN )。 if (flags amp。 0x04) printf(RST )。 printf(\n)。 printf(窗口大小:%d\n, windows)。 printf(校验和:%d\n, checksum)。 printf(紧急指针:%d\n, urgent_pointer)。 }void ip_protocol_packet_callback(u_char *argument, const struct pcap_pkthdr *packet_header, const u_char *packet_content){ struct ip_header *ip_protocol。 /* IP协议变量 */ u_int header_length。 /* 长度 */ u_int offset。 /* 偏移 */ u_char tos。 /* 服务质量 */ u_int16_t checksum。 /* 校验和 */ ip_protocol = (struct ip_header*)(packet_content + 14)。 /* 获得IP协议内容 */ checksum = ntohs(ip_protocolip_checksum)。 /* 获得校验和 */ header_length = ip_protocolip_header_length *4。 /* 获得长度 */ tos = ip_protocolip_tos。 /* 获得服务质量 */ offset = ntohs(ip_protocolip_off)。 /* 获得偏移 */ if (ip_protocolip_protocol==6) { printf( IP协议 \n)。 printf(版本号:%d\n, ip_protocolip_version)。 printf(首部长度:%d\n, header_length)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。