计算机网络课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中南大学

计算机网络原理

课程设计报告

学生姓名奚培

指导教师张士庚

学院信息科学与工程学院

专业班级计算机科学与技术1303班

学号 0902130325 实验日期 2015年11月

目录

第一章概要设计 (2)

第二章详细设计 (3)

第三章调试与操作说明 (4)

第四章总结 (4)

参考文献 (4)

第一章概要设计

一、过程图

1.1 libpcap捕包过程图

本程序设计libpcap捕包程序包含以下五个过程,如下图:

图1.libpcap 捕包过程

1.2 数据包处理过程图

图2.数据包处理过程

二、主要数据结构

2.1 Ether头

10Mb/s ethernet header

struct ether_header

{

u_int8_t ether_dhost[ETH_ALEN]; // destination eth addr u_int8_t ether_shost[ETH_ALEN]; // source ether addr

u_int16_t ether_type; // packet type ID field

} __attribute__ ((__packed__));

2.2 ARP/RARP协议头

/* ARP header */

class sniff_arp

{

unsigned short int ar_hrd; /* Format of hardware address. */

unsigned short int ar_pro; /* Format of protocol address. */

unsigned char ar_hln; /* Length of hardware address. */

unsigned char ar_pln; /* Length of protocol address. */

unsigned short int ar_op; /* ARP opcode (command). */

#if 0

/* Ethernet looks like this : This bit is variable sized

however... */

unsigned char __ar_sha[ETH_ALEN]; /* Sender hardware address. */

unsigned char __ar_sip[4]; /* Sender IP address. */

unsigned char __ar_tha[ETH_ALEN]; /* Target hardware address. */

unsigned char __ar_tip[4]; /* Target IP address. */

#endif

2.3 IP头

/* IP header */

class sniff_ip

{

u_char ip_vhl; /* version << 4 | header length >> 2 */ u_char ip_tos; /* type of service */

u_short ip_len; /* total length */

u_short ip_id; /* identification */

u_short ip_off; /* fragment offset field */

#define IP_RF 0x8000 /* reserved fragment flag */

#define IP_DF 0x4000 /* dont fragment flag */

#define IP_MF 0x2000 /* more fragments flag */

#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ u_char ip_ttl; /* time to live */

u_char ip_p; /* protocol */

u_short ip_sum; /* checksum */

struct in_addr ip_src,ip_dst; /* source and dest address */

int ip_hl(){ return ip_vhl & 0x0f; }

int ip_v(){ return ip_vhl >>4; }

2.4 TCP头

/* TCP header */

typedef u_int tcp_seq;

class sniff_tcp

{

u_short th_sport; /* source port */

u_short th_dport; /* destination port */

tcp_seq th_seq; /* sequence number */

tcp_seq th_ack; /* acknowledgement number */

u_char th_offx2; /* data offset, rsvd */

//#define TH_OFF (((th_offx2 & 0xf0) >> 4)

u_char th_flags;

#define TH_FIN 0x01

#define TH_SYN 0x02

#define TH_RST 0x04

#define TH_PUSH 0x08

#define TH_ACK 0x10

#define TH_URG 0x20

#define TH_ECE 0x40

#define TH_CWR 0x80

#define TH_FLAGS (TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR)

u_short th_win; /* window */

u_short th_sum; /* checksum */

u_short th_urp; /* urgent pointer */

int th_off(){ return ((th_offx2 & 0xf0) >> 4);}

int dis_flag(int m){ return (th_flags & m)>>(m-1); }

}

2.5 UDP头

class sniff_udp

{

u_int16_t uh_sport;

u_int16_t uh_dport;

u_int16_t uh_len;

u_int16_t uh_sum;

}

三、方法和原理

相关文档
最新文档