




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCP/IP协议头部结构体网络协议结构体定义1. /i386islittle_endian.2. #ifndefLITTLE_ENDIAN3. #defineLITTLE_ENDIAN(1)/BYTEORDER4. #else5. #errorRedefineLITTLE_ORDER6. #endif7. /Mac头部,总长度14字节8. typedefstruct_eth_hdr9. 10. unsignedchardstmac6;/目标mac地址11. unsignedcharsrcmac6;/源mac地址12. unsignedshorteth_type;/以太网类型13. eth_hdr;14. /IP头部,总长度20字节15. typedefstruct_ip_hdr16. 17. #ifLITTLE_ENDIAN18. unsignedcharihl:4;/首部长度19. unsignedcharversion:4,/版本20. #else21. unsignedcharversion:4,/版本22. unsignedcharihl:4;/首部长度23. #endif24. unsignedchartos;/服务类型25. unsignedshorttot_len;/总长度26. unsignedshortid;/标志27. unsignedshortfrag_off;/分片偏移28. unsignedcharttl;/生存时间29. unsignedcharprotocol;/协议30. unsignedshortchk_sum;/检验和31. structin_addrsrcaddr;/源IP地址32. structin_addrdstaddr;/目的IP地址33. ip_hdr;34. /TCP头部,总长度20字节35. typedefstruct_tcp_hdr36. 37. unsignedshortsrc_port;/源端口号38. unsignedshortdst_port;/目的端口号39. unsignedintseq_no;/序列号40. unsignedintack_no;/确认号41. #ifLITTLE_ENDIAN42. unsignedcharreserved_1:4;/保留6位中的4位首部长度43. unsignedcharthl:4;/tcp头部长度44. unsignedcharflag:6;/6位标志45. unsignedcharreseverd_2:2;/保留6位中的2位46. #else47. unsignedcharthl:4;/tcp头部长度48. unsignedcharreserved_1:4;/保留6位中的4位首部长度49. unsignedcharreseverd_2:2;/保留6位中的2位50. unsignedcharflag:6;/6位标志51. #endif52. unsignedshortwnd_size;/16位窗口大小53. unsignedshortchk_sum;/16位TCP检验和54. unsignedshorturgt_p;/16为紧急指针55. tcp_hdr;56. /UDP头部,总长度8字节57. typedefstruct_udp_hdr58. 59. unsignedshortsrc_port;/远端口号60. unsignedshortdst_port;/目的端口号61. unsignedshortuhl;/udp头部长度62. unsignedshortchk_sum;/16位udp检验和63. udp_hdr;64. /ICMP头部,总长度4字节65. typedefstruct_icmp_hdr66. 67. unsignedcharicmp_type;/类型68. unsignedcharcode;/代码69. unsignedshortchk_sum;/16位检验和70. icmp_hdr;全面的网络协议结构体定义1. /*/2. /计算机网络各种协议的结构3. #defineETHER_ADDR_LEN6/NIC物理地址占6字节4. #defineMAXDATA102405. /*6. 网络实验程序7. 数据包中的TCP包头,IP包头,UDP包头,ARP包,Ethernet包等.8. 以及各种表.路由寻址表,地址解析协议表DNS表等9. */10. #defineETHERTYPE_IP0x0800/IPProtocal11. #defineETHERTYPE_ARP0x0806/AddressResolutionProtocal12. #defineETHERTYPE_REVARP0x0835/ReverseAddressResolutionProtocal逆地址解析协议13. /*/14. /ethernet15. typedefstructether_header16. 17. u_charether_dhostETHER_ADDR_LEN;18. u_charether_shostETHER_ADDR_LEN;19. u_shortether_type;20. ETH_HEADER;21. /*/22. /ether_headereth;23. /*/24. /arp25. typedefstructarphdr26. 27. u_shortar_hrd;28. u_shortar_pro;29. u_charar_hln;30. u_charar_pln;31. u_shortar_op;32. ARP_HEADER;33. /*/34. /*/35. /IP报头36. typedefstructip37. 38. u_intip_v:4;/version(版本)39. u_intip_hl:4;/headerlength(报头长度)40. u_charip_tos;41. u_shortip_len;42. u_shortip_id;43. u_shortip_off;44. u_charip_ttl;45. u_charip_p;46. u_shortip_sum;47. structin_addrip_src;48. structin_addrip_dst;49. IP_HEADER;50. /*/51. /*/52. /TCP报头结构体53. typedefstructtcphdr54. 55. u_shortth_sport;56. u_shortth_dport;57. u_intth_seq;58. u_intth_ack;59. u_intth_off:4;60. u_intth_x2:4;61. u_charth_flags;62. u_shortth_win;63. u_shortth_sum;64. u_shortth_urp;65. TCP_HEADER;66. #defineTH_FIN0x0167. #defineTH_SYN0x0268. #defineTH_RST0x0469. #defineTH_PUSH0x0870. #defineTH_ACK0x1071. #defineTH_URG0x2072. /*/73. /*/74. /UDP报头结构体*/75. typedefstructudphdr76. 77. u_shortuh_sport;78. u_shortuh_dport;79. u_shortuh_ulen;80. u_shortuh_sum;81. UDP_HEADER;82. /*/83. /=84. /*/85. /*ARP与ETHERNET生成的报头*/86. typedefstructether_arp87. 88. structarphdrea_hdr;89. u_chararp_shaETHER_ADDR_LEN;90. u_chararp_spa4;91. u_chararp_thaETHER_ADDR_LEN;92. u_chararp_tpa4;93. ETH_ARP;94. #definearp_hrdea_hdr.ar_hrd95. #definearp_proea_hdr.ar_pro96. #definearp_hlnea_hdr.ar_hln97. #definearp_plnea_hdr.ar_pln98. #definearp_opea_hdr.ar_op99. #defineARPHRD1100. /*/101. /*/102. /tcp与ip生成的报头103. typedefstructpacket_tcp104. 105. structipip;106. structtcphdrtcp;107. u_chardataMAXDATA;108. TCP_IP;109. /*/110. /*/111. /udp与ip生成的报头112. typedefstructpacket_udp113. 114. structipip;115. structudphdrudp;116. UDP_IP;117. /*/118. /*/119. /ICMP的各种形式120. /icmpx,x=icmp_type;121. /icmp报文(能到达目的地,响应-请求包)122. structicmp8123. 124. u_charicmp_type;/typeofmessage(报文类型)125. u_charicmp_code;/typesubcode(报文类型子码)126. u_shorticmp_cksum;127. u_shorticmp_id;128. u_shorticmp_seq;129. charicmp_data1;130. ;131. /icmp报文(能返回目的地,响应-应答包)132. structicmp0133. 134. u_charicmp_type;/typeofmessage(报文类型)135. u_charicmp_code;/typesubcode(报文类型子码)136. u_shorticmp_cksum;137. u_shorticmp_id;138. u_shorticmp_seq;139. charicmp_data1;140. ;141. /icmp报文(不能到达目的地)142. structicmp3143. 144. u_charicmp_type;/typeofmessage(报文类型)145. u_charicmp_code;/typesubcode(报文类型子码),例如:0网络原因不能到达,1主机原因不能到达.146. u_shorticmp_cksum;147. u_shorticmp_pmvoid;148. u_shorticmp_nextmtu;149. charicmp_data1;150. ;151. /icmp报文(重发结构体)152. structicmp5153. 154. u_charicmp_type;/typeofmessage(报文类型)155. u_charicmp_code;/typesubcode(报文类型子码)156. u_shorticmp_cksum;157. structin_addricmp_gwaddr;158. charicmp_data1;159. ;160. structicmp11161. 162. u_charicmp_type;/typeofmessage(报文类型)163. u_charicmp_code;/typesubcode(报文类型子码)164. u_shorticmp_cksum;165. u_inticmp_void;166. charicmp_data1;167. ;=IP协议IP协议(Internet Protocol)是网络层协议,用在因特网上,TCP,UDP,ICMP,IGMP数据都是按照IP数据格式发送得。IP协议提供的是不可靠无连接得服务。IP数据包由一个头部和一个正文部分构成。正文主要是传输的数据,我们主要来理解头部数据,可以从其理解到IP协议。IP数据包头部格式(RFC791)Example Internet Datagram Header上面的就是IP数据的头部格式,这里大概地介绍一下。IP头部由20字节的固定长度和一个可选任意长度部分构成,以大段点机次序传送,从左到 右。TCP协议TCP协议(TRANSMISSION CONTROL PROTOCOL)是传输层协议,为应用层提供服务,和UDP不同的是,TCP协议提供的可靠的面向连接的服务。在RFC793中是基本的TCP描述。关于TCP协议的头部格式内容的说明:TCP Header FORMatTCP Header FORMat跟IP头部差不多,基本的长度也是20字节。TCP数据包是包含在一个IP数据报文中的。好了,简单介绍到此为止。来看看我捕获的例子吧。这是一次FTP的连接,呵呵,是cuteftp默认的cuteftp的FTP站点,IP地址是:1。我的IP地址假设为:。下面的数据就是TCO/IP连接过程中的数据传输。我们可以分析TCP/IP协议数据格式以及TCP/IP连接的三次握手(ThreeWay-Handshake)情况。下面的这些十六进制数据只是TCP/IP协议的数据,不是完整的网络通讯数据。第一次,我向FTP站点发送连接请求(我把TCP数据的可选部分去掉了)-1IP头部: 45 00 00 30 52 52 40 00 80 06 2c 23 c0 a8 01 01 d8 03 e2 15TCP头部:0d 28 00 15 50 5f a9 06 00 00 00 00 70 02 40 00 c0 29 00 00来看看IP头部的数据是些什么。第一字节,“45”,其中“4”是IP协议的版本(Version),说明是IP4。“5”是IHL位,表示IP头部的长度,是一个4bit字段,最大就是1111了,值为12,IP头部的最大长度就是60字节。而这里为“5”,说明是20字节,这是标准的IP头部长度,头部报文中没有发送可选部分数据。接下来的一个字节“00”是服务类型(Type of Service)。这个8bit字段由3bit的优先权子字段(现在已经被忽略),4 bit的TOS子字段以及1 bit的未用字段(现在为0)构成.4 bit的TOS子字段包含:最小延时、最大吞吐量、最高可靠性以及最小费用构成,这四个1bit位最多只能有一个为1,本例中都为0,表示是一般服务。接着的两个字节“00 30”是IP数据报文总长,包含头部以及数据,这里表示48字节。这48字节由20字节的IP头部以及28字节的TCP头构成(本来截取的TCP头应该是28字节的,其中8字节为可选部分,被我省去了)。因此目前最大的IP数据包长度是65535字节。再是两个字节的标志位(Identification):“5252”,转换为十进制就是21074。这个是让目的主机来判断新来的分段属于哪个分组。下一个字节“40”,转换为二进制就是“0100 0000”,其中第一位是IP协议目前没有用上的,为0。接着的是两个标志DF和MF。DF为1表示不要分段,MF为1表示还有进一步的分段(本例为0)。然后的“0 0000”是分段便移(Fragment Offset)。“80”这个字节就是TTL(Time To Live)了,表示一个IP数据流的生命周期,用Ping显示的结果,能得到TTL的值,很多文章就说通过TTL位来判别主机类型。因为一般主机都有默认的TTL值,不同系统的默认值不一样。比如WINDOWS为128。不过,一般Ping得到的都不是默认值,这是因为每次IP数据包经过一个路由器的时候TTL就减一,当减到0时,这个数据包就消亡了。这也时Tracert的原理。本例中为“80”,转换为十进制就是128了,我用的WIN2000。继续下来的是“06”,这个字节表示传输层的协议类型(Protocol)。在RFC790中有定义,6表示传输层是TCP协议。“2c 23”这个16bit是头校验和(Header Checksum)。接下来“c0 a8 01 01”,这个就是源地址(Source Address)了,也就是我的IP地址。转换为十进制的IP地址就是:,同样,继续下来的32位“d8 03 e2 15”是目标地址,1好了,真累啊,终于看完基本的20字节的IP数据报头了。继续看TCP的头部吧,这个是作为IP数据包的数据部分传输的。TCP头部:0d 28 00 15 50 5f a9 06 00 00 00 00 70 02 40 00 c0 29 00 00一来就是一个两字节段“0d 28”,表示本地端口号,转换为十进制就是3368。第二个两字节段“00 15”表示目标端口,因为我是连接FTP站点,所以,这个就是21啦,十六进制当然就是“00 15”。接下来的四个字节“50 5f a9 06”是顺序号(Sequence Number),简写为SEQ,SEQ=1348446470下面的四个字节“00 00 00 00”是确认号(Acknowledgment Number),简写为ACKNUM。继续两个字节,“70 02”,转换为二进制吧,“0111 0000 0000 0010”。这两个字节,总共16bit,有好多东西呢。第一个4bit“0111”,是TCP头长,十进制为7,表示28个字节(刚才说了,我省略了8字节的option数据,所以你只看见了20字节)。接着的6bit现在TCP协议没有用上,都为0。最后的6bit“00 0010”是六个重要的标志。这是两个计算机数据交流的信息标志。接收和发送断根据这些标志来确定信息流的种类。下面是一些介绍:URG:(Urgent Pointer field significant)紧急指针。用到的时候值为1,用来处理避免TCP数据流中断ACK:(Acknowledgment fieldsignificant)置1时表示确认号(AcknowledgmentNumber)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。PSH:(Push Function),PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。RST:(Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。SYN:(Synchronize sequence numbers)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分Connection Request和Connection Accepted。FIN:(No more data from sender)用来释放连接,表明发送方已经没有数据发送了。这6个标志位,你们自己对号入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 远程办公网络安全试题及答案
- 计算思维能力考核试题及答案
- 2025年消费者行为变化与风险试题及答案
- 网络安全监测与分析试题与答案
- 2025年VB考试内容全面分析与试题
- 行政法学完整试题与答案分享
- 战略执行中的合规性风险管理对策试题及答案
- 信息处理行业标准化的必要性试题及答案
- 【成都】2025年上半年成都市住房和城乡建设局所属6家事业单位招聘工作人员13人笔试历年典型考题及考点剖析附带答案详解
- 2025商业办公装修合同范本汇编
- 2025世界高血压日控住血压稳住幸福高血压健康讲座
- 安徽卓越县中联盟2024-2025学年高三下学期5月份检测政治试卷+答案
- 广东省珠海市2024-2025学年下学期期中八年级数学质量监测试卷(含答案)
- 焊接工程师职业技能考核试题及答案
- 《神经网络模型》课件
- 中小学教师资格笔试2024年考试真题解析
- 工抵房转让购买合同协议
- 四川省成都外国语2025年高三联考数学试题科试题含解析
- 嘉兴市申嘉有轨电车运营管理有限公司招聘笔试题库2025
- 国网四川省电力公司电网工程设备材料补充信息参考价2025
- 委托清收服务合同协议
评论
0/150
提交评论