IP,TCP,UDP,ICMP报头
ARP,IP,ICMP,TCP,UDP报文头部结构
ARP,IP,ICMP,TCP,UDP报⽂头部结构ARP头部结①硬件类型:指明硬件的类型,以太⽹是1。
②协议类型:指明发送者映射到数据链路标识的⽹络层协议的类型;IP对应0x0800。
③硬件地址长度:也就是MAC地址的长度,单位是字节,这⾥是6。
④协议地址长度:⽹络层地址的长度,即IP地址长度,单位是字节,这⾥为4。
⑤操作:指明是ARP请求(1)还是ARP应答(2),======================================================================================================== IP头部结构======================================================================================================= ICMP头部结构====================================================================================================== TCP头部结构端⼝号:常说FTP占21端⼝、HTTP占80端⼝、TELNET占23端⼝等,这⾥指的端⼝就是TCP或UDP的端⼝,端⼝就像通道两端的门⼀样,当两机进⾏通讯时门必须是打开的。
源端⼝和⽬的端⼝各占16位,2的16次⽅等于65536,这就是每台电脑与其它电脑联系所能开的“门”。
⼀般作为服务⼀⽅每项服务的端⼝号是固定的。
本例⽬的端⼝号为00 15,换算成⼗进制为21,这正是FTP的默认端⼝,需要指出的是这是FTP的控制端⼝,数据传送时⽤另⼀端⼝,第三组的分析能看到这⼀点。
客户端与服务器联系时随机开⼀个⼤于1024的端⼝,本例为04 28,换算成⼗进制为1064。
你的电脑中了⽊马也会开⼀个服务端⼝。
以太网帧格式、IP报文格式、TCPUDP报文格式
以太⽹帧格式、IP报⽂格式、TCPUDP报⽂格式1、ISO开放系统有以下⼏层:7应⽤层6表⽰层5会话层4传输层3⽹络层2数据链路层1物理层2、TCP/IP ⽹络协议栈分为应⽤层(Application)、传输层(Transport)、⽹络层(Network)和链路层(Link)四层。
通信过程中,每层协议都要加上⼀个数据⾸部(header),称为封装(Encapsulation),如下图所⽰不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在⽹络层叫做数据报(datagram),在链路层叫做帧(frame)。
数据封装成帧后发到传输介质上,到达⽬的主机后每层协议再剥掉相应的⾸部,最后将应⽤层数据交给应⽤程序处理。
其实在链路层之下还有物理层,指的是电信号的传递⽅式,⽐如现在以太⽹通⽤的⽹线(双绞线)、早期以太⽹采⽤的的同轴电缆(现在主要⽤于有线电视)、光纤等都属于物理层的概念。
3、集线器(Hub)是⼯作在物理层的⽹络设备,⽤于双绞线的连接和信号中继(将已衰减的信号再次放⼤使之传得更远)。
交换机是⼯作在链路层的⽹络设备,可以在不同的链路层⽹络之间转发数据帧(⽐如⼗兆以太⽹和百兆以太⽹之间、以太⽹和令牌环⽹之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层⾸部重新封装之后再转发。
路由器是⼯作在第三层的⽹络设备,同时兼有交换机的功能,可以在不同的链路层接⼝之间转发数据包,因此路由器需要将进来的数据包拆掉⽹络层和链路层两层⾸部并重新封装。
4、⽹络层的IP 协议是构成Internet 的基础。
IP 协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应⽤程序中提供⽀持。
传输层可选择TCP 或UDP 协议。
TCP 是⼀种⾯向连接的、可靠的协议,有点像打电话,双⽅拿起电话互通⾝份之后就建⽴了连接,然后说话就⾏了,这边说的话那边保证听得到,并且是按说话的顺序听到的,说完话挂机断开连接。
数据包报文格式(IP包TCP报头UDP报头)
数据包报文格式(IP包TCP报头UDP报头)一、IP包格式IP数据包是一种可变长分组,它由首部和数据负载两部分组成。
首部长度一般为20-60字节(Byte),其中后40字节是可选的,长度不固定,前20字节格式为固定。
数据负载部分的长度一般可变,整个IP数据包的最大长度为65535B。
1、版本号(Version)长度为4位(bit),IP v4的值为0100,IP v6的值为0110。
2、首部长度指的是IP包头长度,用4位(bit)表示,十进制值就是[0,15],一个IP包前20个字节是必有的,后40个字节根据情况可能有可能没有。
如果IP包头是20个字节,则该位应是20/4=53、服务类型(Type of Service TOS)长度为8位(bit),其组成:前3位为优先级(Precedence),后4位标志位,最后1位保留未用。
优先级主要用于QoS,表示从0(普通级别)到7(网络控制分组)的优先级。
标志位可分别表示D(Delay更低的时延)、T(Throughput 更高的吞吐量)、R(Reliability更高的可靠性)、C(Cost 更低费用的路由)。
TOS只表示用户的请求,不具有强制性,实际应用中很少用,路由器通常忽略TOS字段。
4、总长度(Total Length)指IP包总长度,用16位(bit)表示,即IP包最大长度可以达216=65535字节。
在以太网中允许的最大包长为1500B,当超过网络允许的最大长度时需将过长的数据包分片。
5、标识符(Identifier)长度为16位,用于数据包在分段重组时标识其序列号。
将数据分段后,打包成IP 包,IP包因走的路由上不同,会产生不同的到达目地的时间,到达目地的后再根据标识符进行重新组装还原。
该字段要与标志、段偏移一起使用的才能达到分段组装的目标。
6、标志(Flags)长度为3位,三位从左到右分别是MF、DF、未用。
MF=1表示后面还有分段的数据包,MF=0表示没有更多分片(即最后一个分片)。
TCPIP模型及OSI七层参考模型各层的功能和主要协议
TCPIP模型及OSI七层参考模型各层的功能和主要协议注:⽹络体系结构是分层的体系结构,学术派标准OSI参考模型有七层,⽽⼯业标准TCP/IP模型有四层。
后者成为了事实上的标准,在介绍时通常分为5层来叙述但应注意TCP/IP模型实际上只有四层。
1、TCP/IP模型(1)物理层物理层规定:为传输数据所需要的物理链路创建、维持、拆除,⽽提供具有机械的,电⼦的,功能的和规范的特性,确保原始的数据可在各种物理媒体上传输,为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。
(2)数据链路层主要提供链路控制(同步,异步,⼆进制,HDLC),差错控制(重发机制),流量控制(窗⼝机制)1) MAC:媒体接⼊控制,主要功能是调度,把逻辑信道映射到传输信道,负责根据逻辑信道的瞬时源速率为各个传输信道选择适当的传输格式。
MAC层主要有3类逻辑实体,第⼀类是MAC-b,负责处理⼴播信道数据;第⼆类是MAC-c,负责处理公共信道数据;第三类是MAC-d,负责处理专⽤信道数据。
2)RLC:⽆线链路控制,不仅能载控制⾯的数据,⽽且也承载⽤户⾯的数据。
RLC⼦层有三种⼯作模式,分别是透明模式、⾮确认模式和确认模式,针对不同的业务采⽤不同的模式。
3)BMC:⼴播/组播控制,负责控制多播/组播业务。
4)PDCP:分组数据汇聚协议,负责对IP包的报头进⾏压缩和解压缩,以提⾼空中接⼝⽆线资源的利⽤率。
(3)⽹络层提供阻塞控制,路由选择(静态路由,动态路由)等1)IP:IP协议提供不可靠、⽆连接的传送服务。
IP协议的主要功能有:⽆连接数据报传输、数据报路由选择和差错控制。
IP地址是重要概念2)ARP:地址解析协议。
基本功能就是通过⽬标设备的IP地址,查询⽬标设备的MAC地址,以保证通信的顺利进⾏。
以太⽹中的数据帧从⼀个主机到达⽹内的另⼀台主机是根据48位的以太⽹地址(硬件地址)来确定接⼝的,⽽不是根据32位的IP地址。
帧格式及IP,TCP,UDP,ICMP报文格式
以太网数据格式与各种报文格式一、数据封装当我们应用程序用TCP传输数据的时候,数据被送入协议栈中,然后逐个通过每一层,知道最后到物理层数据转换成比特流,送入网络。
而再这个过程中,每一层都会对要发送的数据加一些首部信息。
整个过程如下图。
如图可以看出,每一层数据是由上一层数据+本层首部信息组成的,其中每一层的数据,称为本层的协议数据单元,即PDU.应用层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段),图示为TCP段传输层的数据(TCP段)传给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包); 图示为IP数据包网络层数据报(IP数据包)被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧),图示为以太网帧。
最后,帧被转换为比特,通过网络介质传输。
这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。
二、数据格式需要注意的是,这里所说的以太网帧,与我们常说的以太网是不一样的。
下面我们就来介绍每一层数据的首部信息内容。
首先我们知道世界上有个协会叫作IEEE,即电子工程师协会,里面有个分会,叫作IEEE802委员会,是专门来制定局域网各种标准的。
而802下面还有个分部,叫作802.3.就是我们经常提到的IEEE802.3,这个部门制定的规范叫以太网规范,这个以太网规范中就定义了上面提到的“以太网首部”,这个以太网规范,实际只定义了数据链路层中的MAC层和物理层规范。
(注意数据链路层包括MAC子层和LLC子以太网帧格式:以太网常用帧格式有两种,一种是Ethernet II,另一种是IEEE 802.3 格式。
这两种格式区别是:Ethernet II中包含一个Type字段,。
其中Type字段描述了,以太网首部后面所跟数据包的类型,例如Type为0x8000时为IP协议包,Type为8060时,后面为ARP协议包。
以太网中多数数据帧使用的是Ethernet II帧格式。
概要介绍ICMPTCP及UDP三种高级扫描技术及原理
概要介绍ICMPTCP及UDP三种高级扫描技术及原理ICMPTCP(简称ICMP over TCP)是一种基于TCP封装的ICMP (Internet Control Message Protocol)扫描技术,UDP(User Datagram Protocol)是一种无连接的传输层协议。
这些高级扫描技术被广泛用于网络安全领域,可用于发现网络中的主机和开放的端口。
ICMPTCP原理:ICMPTCP利用了TCP协议中的已有特性和ICMP协议的灵活性。
它首先创建一个TCP连接,然后将ICMP消息嵌入TCP流中传送给目标主机。
目标主机收到ICMP消息后,会识别出ICMP消息,在其中获取IP头部和ICMP消息的数据,这样就可以扫描目标主机的开放端口。
ICMPTCP扫描技术可以绕过一些基于TCP的防火墙规则和IDS/IPS系统的检测,使得扫描更加隐蔽。
UDP原理:UDP是一种基于无连接的传输层协议,它没有像TCP那样的确认机制,因此适用于实时应用程序和对可靠性要求不高的应用。
UDP扫描技术则利用了UDP协议的特性进行主机和端口扫描。
UDP扫描技术主要分为三种类型:1.UDP扫描:UDP扫描技术通过向目标主机发送UDP数据包,并根据接收到的响应来判断目标主机的端口开放状态。
如果目标主机返回ICMP端口不可达(Destination Unreachable)错误消息,则表示该端口关闭;如果目标主机返回UDP协议没有响应(UDP Packet filtered)错误消息,则表示该端口可能被过滤,防火墙阻止了UDP数据包的传输;如果目标主机返回UDP数据包,说明该端口开放。
2. UDP圣诞树扫描(Christmas Tree Scan):圣诞树扫描技术发送一个设置了TCP标志位(FIN、URG、PSH等)的数据包到目标主机的UDP端口。
如果目标主机返回ICMP端口不可达错误消息,则表示该端口关闭;如果目标主机没有返回错误消息,则表示该端口开放。
常用网络数据包报头结构
常用网络数据包报头结构(以太网、ARP、IP、TCP、UDP、ICMP、DNS、UDP伪报头)浏览次数:813#pragma pack(1)typedef struct ethdr //以太网包头14字节{unsigned chardestination_mac[6];//目标MAC 6字节unsigned char source_mac[6];//源MAC 6字节unsigned short type;//后面的协议类型2字节为0806表示后面跟的包为ARP 包}ET_HEADER,*PETHDR;typedef struct arphdr //arp协议28字节{unsigned short hard_tpye;//硬件类型2字节通常为01 (以太网地址)unsigned short protocol;//协议类型2字节通常为80 (IP地址)unsigned char hard_length;//硬件地址长度1字节通常为6unsigned char protocol_length;//协议地址长度1字节通常为4 (IP协议)unsigned short operation_type;//操作类型1为ARP请求,2为ARP应答,3为RARP请求,4为RARP应答unsigned char source_mac[6];//源物理地址struct in_addr source_ip;//源IP地址unsigned char destination_mac[6];//目的物理地址struct in_addr destination_ip;//目的IP地址}ARP_HEADER,*PARPHDR;// IP Header -- RFC 791 IP数据报头typedef struct tagIPHDR {u_char VIHL; // Version and IHL 版本4bit = 4和首部长度4bit = 5u_char TOS; // Type Of Service 服务类型1字节short TotLen; // Total Length 总长度2字节,包括数据和报头short ID; // Identification 标识符2字节short FlagOff; // Flags and Fragment Offset 标志3bit和分段偏移量13bitu_char TTL; // Time To Live 生存期1字节,为经过路由器的总次数u_char Protocol; // Protocol 协议类型1字节u_short Checksum; // Checksum 首部(只是IP首部!!不然就错了,过不了网关!!)校验和2字节}IP_HEADER, *PIP_HEADER;//TCP Header TCP数据报头typedef struct tcp_hdr {unsigned short source_port; //源端口unsigned short destination_port; //目的端口unsigned long index; //32位序号unsigned long makesuer_index; //32位确认序号unsigned short header_length_and_flags; //首部长度和标志位unsigned short window_size; //窗口大小unsigned short checksum; //检查和发布时间:2006-5-5 23:04:24typedef struct udp_hdr {unsigned short source_port; //源端口unsigned short destination_port; //目的端口unsigned short length; //数据长度unsigned short checksum; //带数据!检查和} UDP_HEADER;// ICMP Header - RFC 792 ICMP数据报头typedef struct tagICMPHDR {u_char Type; // Type 类型u_char Code; // Code 代码u_short Checksum; // Checksum 校验和u_short ID; // Identification 标识符u_short Seq; // Sequence 序列号char Data; // Data 数据(依情况而定)}ICMP_HEADER, *PICMP_HEADER;// ICMP Echo Request ICMP请求数据报typedef struct tagECHOREQUEST {ICMPHDR icmpHdr; DWORD dwTime;char cData[32];}IMCP_REQUEST, *PIMCP_REQUEST;// ICMP Echo Reply ICMP回响数据报typedef struct tagECHOREPLY {IPHDR ipHdr; ECHOREQUEST echoRequest;char cFiller[256];}ICMP_REPLY, *ICMP_REPLY;typedef struct dns //DNS数据报:{unsigned short id;//标识,通过它客户端可以将DNS的请求与应答相匹配;unsigned short flags;//标志:[QR | opcode | AA| TC| RD| RA | zero | rcode ]unsigned short quests;//问题数目;unsigned short answers;//资源记录数目;unsigned short author;//授权资源记录数目;unsigned short addition;//额外资源记录数目;}DNS,*PDNS;//在16位的标志中:QR位判断是查询/响应报文,opcode区别查询类型,AA判断是否为授权回答,TC判断//是否可截断,RD判断是否期望递归查询,RA判断是否为可用递归,zero 必须为0,rcode为返回码字段。
tcp、udp、ip、icmp报文格式分析
tcp、udp、ip、icmp报⽂格式分析TCP 、UDP 、IP、 ICMP协议报⽂格式分析Tcp报⽂格式:Wireshark抓包如图:源端⼝/⽬的端⼝(16bit):在TCP报⽂中包涵了源端⼝/⽬的端⼝,源端⼝标识了发送进程,⽬的端⼝标识了接收⽅进程。
由上图可以看出在此报⽂中我们的源端⼝号是54160, ⽬的端⼝是cichlid(1377)。
序列号(32bit):Sequence Number这个是发送序列号,⽤来标识从源端向⽬的端发送的数据字节流,它表⽰在这个报⽂端中的第⼀个数据字节的顺序号,序列号是32位的⽆符号类型,序列号表达达到2^32 - 1后⼜从0开始,当建⽴⼀个新的连接时,SYN标志为1,系列号将由主机随机选择⼀个顺序号ISN(Initial Sequence Number)。
此报⽂中的序列号是0x37e3d3a9如下图:确认号(32bit):Acknowledgment Number它包涵了发送确认⼀端所期望收到的下⼀个顺序号。
因此确认序列号应当是上次成功接收到数据的顺序号加1。
只有ACK标志为1时确认序号字段才有效。
TCP为应⽤层提供全双⼯服务,这意味着数据能在两个⽅向上独⽴的进⾏传输,因此连接的两断必须要保证每个⽅向上的传输数据顺序。
由图可以看出此报⽂的确认号为0xaa09ab7b。
偏移(4bit):这⾥的偏移实际指的是TCP⾸部的长度,它⽤来表明TCP⾸部中32bit字的数⽬,通过它可以知道⼀个TCP包它的⽤户数据从哪⾥开始,这个字段占4bit,若此字段的值为1000,则说明TCP⾸部的长度是8 * 4 = 32字节,所以TCP⾸部的最⼤长度是该字段的值为1111 = 15, 15 * 4 =60字节。
此报⽂我们的偏移量在0x50中,⼜因它占4bit,0x50等于⼆进制的0101 0000 所以我们的偏移量是 0101=5,所以我们的TCP报⽂⾸部长度为5* 4 = 20字节。
TCPIP几种协议数据报格式简介
TCP 是面向连接的可靠数据传输协议,因此比较复杂,在此仅作简单介绍。“序号”指数据在发送端数据流中 的位置。“确认号”指出本机希望下一个接收的字节的序号。与 IP 校验不同的是 TCP,UDP 校验采用伪头标加整个 报文一同校验的方法。TCP 协议工作原理另行介绍。
TCP 数据报中依次包括以下信息:
协议采用分层结构,因此,数据报文也采用分层封装的方法。下面以应用最广泛的以太网为例说明其数据报 文分层封装,如下图所示:
任何通讯协议都有独特的报文格式,TCP/IP 协议也不例外。对于通讯协议编程,我们首先要清楚其报文格式。 由于 TCP/IP 协议采用分层模型,各层都有专用的报头,以下就简单介绍以太网下 TCP/IP 各层报文格式。
1、 16 位源端口 Source Port。该部分占 16 个 BIT。通过此值,可以看出发起连接的计算机源端口号。
2、 16 位目的端口 Destination Port。该部分占 16 个 BIT。通过此值,可以看出要登录的目的端口号。
3、 32 位序列号 Initial Sequence Number。表示初始连接的请求号,即 SEQ 值。该部分占 32 个 BIT。
4、 32 位确认号 Next Expected SEQ Numbe。对方返回的 ACK 值。该部分占 32 个 BIT。
5、 4 位数据偏移 Data Offset。表示数据偏移的大小。该部分占 4 个 BIT。
6、 6 位保留位 Reserved Bites:保留位,此处不用。该部分占 6 个 BIT。
的 16 次方减 1,即:65535 个字节。因此,在以太网中能够传输的最大 IP 数据包为 65535 个字节。
5、 16 位标识号 Identification。该部分占 16 个 BIT,以十进制数表示。
TCPIP协议各层详解
TCPIP协议各层详解OSI七层协议互联⽹协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层TCP/IP协议毫⽆疑问是互联⽹的基础协议,没有它就根本不可能上⽹,任何和互联⽹有关的操作都离不开TCP/IP协议。
不管是OSI七层模型还是TCP/IP的四层、五层模型,每⼀层中都要⾃⼰的专属协议,完成⾃⼰相应的⼯作以及与上下层级之间进⾏沟通。
由于OSI七层模型为⽹络的标准层次划分,所以我们以OSI 七层模型为例从下向上进⾏⼀⼀介绍。
TCP/IP协议毫⽆疑问是互联⽹的基础协议,没有它就根本不可能上⽹,任何和互联⽹有关的操作都离不开TCP/IP协议。
不管是OSI七层模型还是TCP/IP的四层、五层模型,每⼀层中都要⾃⼰的专属协议,完成⾃⼰相应的⼯作以及与上下层级之间进⾏沟通。
tcp/ip是个协议组,它可以分为4个层次,即⽹路接⼝层,⽹络层,传输层,以及应⽤层,在⽹络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
在传输层有TCP,UDP协议⽽在应⽤层有HTTP,FTP,DNS等协议因此HTTP本⾝就是⼀个协议,是从WEB服务器端传输超⽂本,到本地浏览器的⼀个传输协议OSI模型OSI/RM协议是由ISO(国际标准化组织)制定的,它需要三个基本的功能:提供给开发者⼀个休息的,通⽤的概念以便开发完善,可以⽤来解释连接不同系统的框架。
OSI模型定义了不同计算机互联的标准,是设计和描述计算机⽹络通信的基本框架。
OSI模型把⽹络通信的基本框架⼯作分为7层,分别是物理层,数据链路层,⽹络层,传输层,会话层,表⽰层和应⽤层(1)(Physical Layer)孤⽴的计算机之间要想⼀起玩,就必须接⼊internet,⾔外之意就是计算机之间必须完成组⽹物理层功能:主要是基于电器特性发送⾼低电压(电信号),⾼电压对应数字1,低电压对应数字0物理层是OSI参考模型的最低层,它利⽤传输介质为数据链路层提供物理连接。
IP、TCP、UDP、ICMP 报文结构整理
IP、TCP、UDP、ICMP 报文结构整理网络封包示意图以太网首部结构14字节(定长),且2字节类型确定了其后报文的协议类型常见协议类型如下:0800 IP0806 ARP8137 Novell IPX809b Apple TalkDATA(数据段):该段数据不能超过1500字节。
因为以太网规定整个传输包的最大长度不能超过1514字节。
(14字节为目标MAC,源MAC,TYPE)IP报文及首部4位首部长度:(占4位bit),指IP报文头的长度。
最大的长度(即4个bit都为1时)为15个长度单位,每个长度单位为4字节(TCP/IP标准,DoubleWord),所以IP协议报文头的最大长度为60个字节,最短为上图所示的20个字节。
16位总长度(字节数): 指IP报文的总长度(包括其后的数据部分,但不包括以太网首部长度14,也即此长度减去IP的首部长度,即是其后报文的长度)。
注意这里的单位为字节,而不是4字节,所以一个IP报文的的最大长度为65535个字节。
8位协议:该字段指出在其后报文(网络7层结构或TCP/IP的传输层)使用的协议,可能的协议有UDP、TCP、ICMP、IGMP、IGP等。
16位首部校验和:用于检验IP报文头部在传播的过程中是否出错,主要校验报文头中是否有某一个或几个bit被污染或修改了。
TCP数据包的头4位首部长度:(占4位bit),算法同IP报文的4位首部长度。
最大的长度(即4个bit都为1时)为15个长度单位,每个长度单位为4字节(TCP/IP标准,DoubleWord),一般为上图所示的20个字节。
UDP数据包的头封包长度:指udp包头(8byte) + 数据的总长度ICMP头和报文校验和的计算Icmp 头只有8byte 。
发送ICMP报文时,必须由程序自己计算校验和,将它填入ICMP头部对应的域中。
校验和的计算方法是:将数据以字(16位)为单位累加到一个双字中(强转换双字类型),如果数据长度为奇数(奇数个字节),最后一个字节将被扩展到字,累加的结果是一个双字,最后将这个双字的高16位和低16位相加后取反,便得到了校验和!。
报文头格式
TCP报文头:(一般20-60字节)32位端口号:源端口和目的端口各占16位,2的16次方等于65536,看端口的命令:netstat。
32位序号:也称为顺序号(Sequence Number),简写为SEQ,32位确认序号:也称为应答号(Acknowledgment Number),简写为ACK。
在握手阶段,确认序号将发送方的序号加1作为回答。
4位首部长度:这个字段占4位,它的单位时32位(4个字节)。
本例值为7,TCP的头长度为28字节,等于正常的长度2 0字节加上可选项8个字节。
,TCP的头长度最长可为60字节(二进制1111换算为十进制为15,15*4字节=60字节)。
6位标志字段:ACK 置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。
RST 置1时重建连接。
如果接收到RST位时候,通常发生了某些错误。
SYN 置1时用来发起一个连接。
FIN 置1时表示发端完成发送任务。
用来释放连接,表明发送方已经没有数据发送了。
URG 紧急指针,告诉接收TCP模块紧要指针域指着紧要数据。
注:一般不使用。
PSH 置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。
注:一般不使用。
16位检验和:检验和覆盖了整个的TCP报文段: TCP首部和TCP数据。
这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。
16位紧急指针:注:一般不使用。
只有当U R G标志置1时紧急指针才有效。
紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
可选与变长选项:通常为空,可根据首部长度推算。
用于发送方与接收方协商最大报文段长度(MSS),或在高速网络环境下作窗口调节因子时使用。
首部字段还定义了一个时间戳选项。
最常见的可选字段是最长报文大小,又称为MSS (Maximum Segment Size)。
每个连接方通常都在握手的第一步中指明这个选项。
TCP,UDP完整数据包校验和通用计算
TCP,UDP完整数据包校验和通用计算TCP,UDP完整数据包校验和通用计算ICMP,IP,UDP,TCP报头部分都有checksum(检验和)字段。
ICMP和IP报头校验和的计算都很简单,使用RFC1071中给出的方法即可完成(如下)。
//计算校验和USHORT checksum(USHORT *buffer,int size){unsigned long cksum=0;while(size>1){cksum+=*buffer++;size-=sizeof(USHORT);}if(size){cksum+=*(UCHAR *)buffer;}//将32位数转换成16while (cksum>>16)cksum=(cksum>>16)+(cksum & 0xffff);return (USHORT) (~cksum);}UDP/TCP报头中的校验和的计算比较复杂的,要用到UDP/TCP伪首部:先要填充伪首部各个字段,然后再将UDP/TCP报头以后(包括报头)的数据附加到伪首部的后面,再对位首部使用上述校验和计算,所得到的值才是UDP/TCP报头部分的校验和。
位首部可以用如下的结构体表示:typedef struct{ULONG sourceip; //源IP地址ULONG destip; //目的IP地址BYTE mbz; //置空(0)BYTE ptcl; //协议类型USHORT plen; //TCP/UDP数据包的长度(即从TCP/UDP报头算起到数据包结束的长度单位:字节)}Psd_Header;这个过程是一个很繁琐的过程,计算过几次后再也忍受不了做这样重复的工作,于是写了一个通用的计算函数。
这个函数使用起来我感觉非常方便:先封装好你的数据包(完整的,包括以太头),然后将数据包的首地址作为参数,调用该函数即可。
函数将帮你完成IP报头以及UDP/TCP报头部分校验和的计算。
概要介绍ICMPTCP及UDP三种高级扫描技术及原理
概要介绍ICMPTCP及UDP三种高级扫描技术及原理是一切入侵的基础,扫描探测一台主机包括是为了确定主机是否活动、主机系统、正在使用哪些端口、提供了哪些服务、相关服务的软件版本等等,对这些内容的探测就是为了“对症下药”。
对主机的探测工具非常多,比如大名鼎鼎的nmap、netcat、upercan,以及国内的某-Scanner等等。
ICMP协议——PING是最常用的,也是最简单的探测手段,用来判断目标是否活动。
实际上Ping是向目标发送一个要求回显(Type=8)的ICMP数据报,当主机得到请求后,再返回一个回显(Type=0)数据报。
而且Ping程序一般是直接实现在系统内核中的,而不是一个用户进程。
Ping是最基本的探测手段,PingSweep(Ping扫射)就是对一个网段进行大范围的Ping,由此确定这个网段的网络运作情况,比如著名的fping工具就是进行Ping扫射的。
不过现在连基本的个人防火墙都对Ping做了限制,这个也太基本了。
如果透过防火墙,如何获得最理想的目标图,也是很多人整天思考的问题。
我们这里介绍的一些扫描技术就是要尽可能地绕过一些安全防护设备,并且尽量保护自己,同时达到我们需要的目的。
一、高级ICMP扫描技术Ping就是利用ICMP协议走的,高级的ICMP扫描技术主要是利用ICMP协议最基本的用途:报错。
根据网络协议,如果按照协议出现了错误,那么接收端将产生一个ICMP的错误报文。
这些错误报文并不是主动发送的,而是由于错误,根据协议自动产生。
当IP数据报出现checkum和版本的错误的时候,目标主机将抛弃这个数据报,如果是checkum出现错误,那么路由器就直接丢弃这个数据报了。
有些主机比如AI某、HP-U某等,是不会发送ICMP的Unreachable数据报的。
我们利用下面这些特性:1、向目标主机发送一个只有IP头的IP数据包,目标将返回DetinationUnreachable的ICMP错误报文。
以太网帧,IP,TCP,UDP首部结构
以太网帧,IP,TCP,UDP首部结构1.以太网帧的格式以太网封装格式2.IP报头格式IP是TCP/IP协议簇中最为重要的协议。
所有的TCP,UDP, ICMP 和IGMP数据都以IP数据报格式传输。
IP提供的是不可靠、无连接的协议。
普通的IP首部长为20个字节,除非含有选项字段。
4位版本:目前协议版本号是4,因此IP有时也称作IPV4.4位首部长度:首部长度指的是首部占32bit字的数目,包括任何选项。
由于它是一个4比特字段,因此首部长度最长为60个字节。
服务类型(TOS):服务类型字段包括一个3bit的优先权字段(现在已经被忽略),4bit的TOS子字段和1bit未用位必须置0。
4bit的TOS分别代表:最小时延,最大吞吐量,最高可靠性和最小费用。
4bit中只能置其中1比特。
如果所有4bit均为0,那么就意味着是一般服务。
总长度:总长度字段是指整个IP数据报的长度,以字节为单位。
利用首部长度和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。
由于该字段长16bit,所以IP数据报最长可达65535字节。
当数据报被分片时,该字段的值也随着变化。
标识字段:标识字段唯一地标识主机发送的每一份数据报。
通常每发送一份报文它的值就会加1。
生存时间:T T L(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。
它指定了数据报的生存时间。
T T L的初始值由源主机设置(通常为 3 2或6 4),一旦经过一个处理它的路由器,它的值就减去 1。
当该字段的值为 0时,数据报就被丢弃,并发送 I C M P报文通知源主机。
首部检验和:首部检验和字段是根据 I P首部计算的检验和码。
它不对首部后面的数据进行计算。
I C M P、I G M P、U D P和T C P在它们各自的首部中均含有同时覆盖首部和数据检验和码。
3.TCP首部格式尽管T C P和U D P都使用相同的网络层( I P),T C P却向应用层提供与U D P完全不同的服务。
TCPIP的中文含义是 传输控制协议
从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网间网层、传输层、应用层。其中:
网络接口层 这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。
网间网层 负责相邻计算机之间的通信。其功能包括三方面。一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。二、处理输入数据报:首先检查其合法性,然后进行寻径——假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。三、处理路径、流控、拥塞等问题。
SMTP(Simple Mail Transfer Protocol)简单邮件ork manage Protocol)简单网络管理协议
FTP(File Transfer Protocol)文件传输协议
ARP(Address Resolation Protocol)地址解析协议
TCP/IP是用于计算机通信的一组协议,我们通常称它为TCP/IP协议族。它是70年代中期美国国防部为其ARPANET广域网开发的网络体系结构和协议标准,以它为基础组建的INTERNET是目前国际上规模最大的计算机网络,正因为INTERNET的广泛使用,使得TCP/IP成了事实上的标准。之所以说TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。以下我们对协议族中一些常用协议英文名称和用途作一介绍:
另一个重要的TCP/IP协议集的成员是用户数据报协议(UDP),它同TCP相似但比TCP原始许多。TCP是一个可靠的协议,因为它有错误检查和握手确认来保证数据完整的到达目的地。UDP是一个“不可靠”的协议,因为它不能保证数据报的接收顺序同发送顺序相同,甚至不能保证它们是否全部到达。如果有可靠性要求,则应用程序避免使用它。同许多TCP/IP工具同时提供的SNMP(简单网络管理协议)就是一个使用UDP协议的应用例子。
tcpip协议报文格式
1、IP报文格式IP协议是TCP/IP协议族中最为核心的协议。
它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。
在局域网环境,IP协议往往被封装在以太网帧(见本章 1.3节)中传送。
而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。
如图2-3所示:图2-3 TCP/IP报文封装图2-4是IP头部(报头)格式:(RFC 791 )。
7强地卵H标m址町选项图2-4 IP头部格式其中:•版本(Version )字段:占4比特。
用来表明IP协议实现的版本号,当前一般为IPv4,即0100。
•报头长度(In ternet Header Len gth ,IHL )字段:占4比特。
是头部占32比特的数字,包括可选项。
普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。
此字段最大值为60字节。
•服务类型(Type of Service ,TOS )字段:占8比特。
其中前3比特为优先权子字段(Precede nee,现已被忽略)。
第8比特保留未用。
第4至第7比特分别代表延迟、吞吐量、可靠性和花费。
当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。
这4比特的服务类型中只能置其中1比特为1。
可以全为0,若全为0则表示一般服务。
服务类型字段声明了数据报被网络系统传输时可以被怎样处理。
例如:TELNET 协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP (Network News Transfer Protocol ,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。
实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF (Open Shortest Path First Protocol )、IS-IS (I ntermediate System to In termediate System Protocol )可以根据这些字段的值进行路由决策。
网络数据包分析
整理课件
9
传输控制协议协议TCP
TCP是传输层协议,提供可靠的应用数据传输。 TCP在两个或多个主机之间建立面向连接的通
信。 TCP支持多数据流操作,提供错误控制,甚至
完成对乱序到达的报文进行重新排序。
整理课件
10
TCP协议的头结构
和IP一样,TCP的功能受限于其头中携带的信息。因此理解 TCP的机制和功能需要了解TCP头中的内容,表显示了TCP 头结构。
整理课件
5
抓取Ping指令发送的数据包
按照之前Sniffer的设置抓取Ping指令发送的数据包,命令执行 如图所示。
整理课件
6
抓取Ping指令发送的数据包
整理课件
7
抓取Ping指令发送的数据包
其实IP报头的所有属性都在报头中显示出来,可以看出实际抓取 的数据报和理论上的数据报一致,分析如图所示。
32
UDP和TCP传递数据的比较
UDP协议
TCP协议
无连接的服务;在主机之间不建立会话。 面向连接的服务;在主机之间建立会话。
UDP不能确保或承认数据传递或序列化数 TCP 通过确认和按顺序传递数据来确保数据的
据。
传递。
使用 UDP 的程序负责提供传输数据所需 使用 TCP 的程序能确保可靠的数据传输。 的可靠性。
整理课件
8
②抓取一次完整的FTP会话并分 析
使用sniffer pro可以抓取TCP数据报,FTP服务就 是通过TCP协议进行传输的。
首先开启目标主机(虚拟机)的FTP服务。(开始程序-管理工具-Internet服务管理器-启动FTP服务)
启动主机中sniffer,然后在主机DOS命令行下使用 FTP指令连接目标主机上的FTP服务器。(ftp 目标 主机IP地址)并输入用户名及其密码默认都是ftp; 退出对方FTP命令是bye;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
来源端口(2字节)
目的端口(2字节)
序号(4字节)
确认序号(4字节)
头长度(4位)
保留(6位)
URG
ACK
PSH
RST
SYN
PIN
窗口大小(2字节)
校验和(16位)
紧急指针(16位)
选项(可选)
数据
(1)TCP源端口(Source Port):16位的源端口包含初始化通信的端口号。源端口和 IP地址的作用是标识报文的返回地址。(2)TCP目的端口(Destination Port):16位 的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接
(13)校验和(Check Sum):这个校验和和IP的校验和有所不同,不仅对头数据进 行校验还对封包内容校验。
(14)紧急指针(Urgent Pointer):当URG为1的时候才有效。TCP的紧急方式是发 送紧急数据的一种方式。
4、UDP协议的头结构
源端口(2字节) 封报长度(2字节)
数据
目的端口(2字节) 校验和(2字节)
片断偏移地址(13 位)
存活时间(8位) 协议(8位)
校验和(16位)
来源IP地址(32位)
目的IP地址(32位)
选项(可选)
填充(可选)
数据
(1)字节和数字的存储顺序是从右到左,依次是从低位到高位,而网络存储顺序是从 左到右,依次从低位到高位。
(2)版本:占第一个字节的高四位。头长度:占第一个字节的低四位。 (3)服务类型:前3位为优先字段权,现在已经被忽略。接着4位用来表示最小延迟、 最大吞吐量、最高可靠性和最小费用。
(1)源端口(Source Port):16位的源端口域包含初始化通信的端口号。源 端口和IP地址的作用是标识报文的返回地址。(2)目的端口(Destination Port):6位的目的端口域定义传输的目的。这个端口指明报文接收计算机 上的应用程序地址接口。(3)封包长度(Length):UDP头和数据的总长 度。(4)校验和(Check Sum):和TCP和校验和一样,不仅对头数据进行 校验,还对包的内容进行校验。
(4)封包总长度:整个IP报的长度,单位为字节。 (5)存活时间:就是封包的生存时间。通常用通过的路由器的个数来衡量,比如初始 值设置为32,则每通过一个路由器处理就会被减一,当这个值为0的时候就会丢掉这个 包,并用ICMP消息通知源主机。 (6)协议:定义了数据的协议,分别为:TCP、UDP、ICMP和IGMP。定义为: #define PROTOCOL_TCP 0x06 #define PROTOCOL_UDP 0x11 #define PROTOCOL_ICMP 0x06 #define PROTOCOL_IGMP 0x06 (7)检验和:校验的首先将该字段设置为0,然后将IP头的每16位进行二进制取反PSH:以最快的速度传输数据。 (9)RST:连线复位,首先断开连接,然后重建。 (10)SYN:同步连线序号,用来建立连线。 (11)FIN:结束连线。如果FIN为0是结束连线请求,FIN为1表示结束连线。 (12)窗口大小(Window):目的机使用16位的域告诉源主机,它想收到的每个TCP 数据段大小。
5、ARP报头结构
硬件类型
协议类型
硬件地址长度
协议长度
操作类型
发送方的硬件地址(0-3字节)
源物理地址(4-5字节)
源IP地址(0-1字节)
源IP地址(2-3字节)
目标硬件地址(0-1字节)
目标硬件地址(2-5字节)
目标IP地址(0-3字节)
(1)硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1;(2)协 议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制);(3)硬件地 址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在 任意硬件和任意协议的网络中使用;(4)操作字段用来表示这个报文的类型,ARP 请求为1,ARP响应为2,RARP请求为3,RARP响应为4;(5)发送方的硬件地址(03字节):源主机硬件地址的前3个字节;(6)发送方的硬件地址(4-5字节):源 主机硬件地址的后3个字节;(7)发送方IP(0-1字节):源主机硬件地址的前2个字 节;(8)发送方IP(2-3字节):源主机硬件地址的后2个字节;(9)目的硬件地址 (0-1字节):目的主机硬件地址的前2个字节;(10)目的硬件地址(2-5字节): 目的主机硬件地址的后4个字节;(11)目的IP(0-3字节):目的主机的IP地址。
口。
(3)序列号(Sequence Number):TCP连线发送方向接收方的封包顺序号。 (4)确认序号(Acknowledge Number):接收方回发的应答顺序号。 (5)头长度(Header Length):表示TCP头的双四字节数,如果转化为字节个数需 要乘以4。 (6)URG:是否使用紧急指针,0为不使用,1为使用。 (7)ACK:请求/应答状态。0为请求,1为应答。
IP,TCP,UDP,ICMP报头
作者:小波
以太网数据包TCP、IP、ICMP、UDP、 ARP协议头结构详解
以太网首部
目地MAC地址(8字节) 源MAC地址(8字节) 类型(2字节)
1、IP头的结构
版本(4位)
头长度(4位) 服务类型(8位) 封包总长度(16位)
封包标识(16位)
标志(3位)
2、ICMP协议的头结构
类型(8位)
代码(8位) 类型或者代码
校验和(8位)
(1)类型:一个8位类型字段,表示ICMP数据包类型。(2)代码:一个 8位代码域,表示指定类型中的一个功能。如果一个类型中只有一种功能, 代码域置为0。(3)检验和:数据包中ICMP部分上的一个16位检验和。
3、TCP协议的头结构