📄 ippacket.java
字号:
package jpcap;
/**
* IP僷働僢僩傪昞尰偡傞僋儔僗偱偡丅<P>
* v4/v6偺椉曽傪庢傝埖偆偙偲偑弌棃傑偡丅
*/
public class IPPacket extends Packet
{
/**
* IP偺僶乕僕儑儞 (v4/v6)
*/
public byte version;
/**
* 偙偺僷働僢僩偺桪愭搙(僋儔僗) (v4/v6)
*/
public byte priority;
/**
* IP僼儔僌價僢僩 [D]elay 嬌椡抶墑偝偣側偄 (v4)
*/
public boolean d_flag;
/**
* IP僼儔僌價僢僩[T]hrough 崅僗儖乕僾僢僩梫媮 (v4)
*/
public boolean t_flag;
/**
* IP僼儔僌價僢僩[R]eliability 崅怣棅惈梫媮 (v4)
*/
public boolean r_flag;
/**
* 僷働僢僩挿 (v4/v6)
*/
public short length;
/**
* 梊栺僼儔僌儊儞僩僼儔僌 (v4)
*/
public boolean rsv_frag;
/**
* 僼儔僌儊儞僩嬛巭僼儔僌 (v4)
*/
public boolean dont_frag;
/**
* 僼儔僌儊儞僩屻懕偁傝偺僼儔僌 (v4)
*/
public boolean more_frag;
/**
* 僼儔僌儊儞僩僆僼僙僢僩 (v4)
*/
public short offset;
/**
* 儂僢僾尷奅抣 (媽Time To Live) (v4/v6)
*/
public short hop_limit;
/**
* 壓埵儗僀儎僾儘僩僐儖 (v4/v6)
*/
public short protocol;
/**
* IDENTIFICATION (v4)
*/
public int ident;
/**
* 僼儘乕儔儀儖 (v6)
*/
public int flow_label;
/**
* 憲怣尦IP傾僪儗僗
*/
public IPAddress src_ip;
/**
* 憲怣愭IP傾僪儗僗
*/
public IPAddress dst_ip;
/**
* 僆僾僔儑儞僿僢僟 (v6)
**/
public java.util.Vector options=null;
/**
* IPv4偲偟偰僷働僢僩偺僷儔儊乕僞傪愝掕偟傑偡
*
* @param priority 桪愭搙
* @param d_flag,t_flag,r_flag Delay, Through, Realiability僼儔僌
* @param rsv_frag 梊栺僼儔僌儊儞僩僼儔僌
* @param dont_frag 僼儔僌儊儞僩嬛巭僼儔僌
* @param more_frag 屻懕僼儔僌儊儞僩僼儔僌
* @param offset 僆僼僙僢僩
* @param ident 幆暿巕
* @param ttl Time To Live
* @param protocol 僾儘僩僐儖斣崋 (忋埵儗僀儎僾儘僩僐儖(eg. TCPPacket)傪宲彸偟偰偄傞応崌偼偙偺抣
偼柍帇偝傟傑偡丅)
* @param src 憲怣尦IP傾僪儗僗
* @param dst 憲怣愭IP傾僪儗僗
**/
public void setIPv4Parameter(int priority,
boolean d_flag,boolean t_flag,boolean r_flag,
boolean rsv_frag,boolean dont_frag,boolean more_frag,
int offset,int ident,int ttl,
int protocol,IPAddress src,IPAddress dst){
this.version=4;
this.priority=(byte)priority;
this.d_flag=d_flag;this.t_flag=t_flag;this.r_flag=r_flag;
this.rsv_frag=rsv_frag;this.dont_frag=dont_frag;
this.more_frag=more_frag;
offset=(short)offset;
this.ident=ident;
this.hop_limit=(short)ttl;
this.protocol=(short)protocol;
this.src_ip=src;
this.dst_ip=dst;
}
/**
* IPv6偲偟偰僷働僢僩偺僷儔儊乕僞傪愝掕偟傑偡
*
* @param class 僋儔僗
* @param flow_label 僼儘乕儔儀儖
* @param nxt_hdr 師僿僢僟
* @param hop_limit 尷奅儂僢僾悢
* @param src 憲怣尦傾僪儗僗
* @param dst 憲怣愭傾僪儗僗
**/
public void setIPv6Parameter(int cls,int flowlabel,int nxt_hdr,
int hop_limit,IPAddress src,IPAddress dst){
this.version=6;
this.priority=(byte)cls;
this.flow_label=flowlabel;
this.protocol=(short)nxt_hdr;
this.hop_limit=(short)hop_limit;
this.src_ip=src;
this.dst_ip=dst;
}
void setIPv4Value(byte ver,byte pri,boolean d,boolean t,boolean r,
boolean rf,boolean df,boolean mf,short offset,
short len,short ident,short ttl,short proto,
byte[] src_ip,byte[] dst_ip){
this.version=ver;
this.priority=pri;
d_flag=d;t_flag=t;r_flag=r;
rsv_frag=rf;dont_frag=df;more_frag=mf;
this.offset=offset;
this.length=len;
this.ident=ident;
this.hop_limit=ttl;
this.protocol=proto;
this.src_ip=new IPAddress(4,src_ip);
this.dst_ip=new IPAddress(4,dst_ip);
}
void setIPv6Value(byte ver,byte v6class,int flow,
short payload,byte nxt,short hlim,
byte[] src,byte[] dst){
this.version=ver;
this.priority=v6class;
this.flow_label=flow;
this.length=payload;
this.protocol=nxt;
this.hop_limit=hlim;
this.src_ip=new IPAddress(6,src);
this.dst_ip=new IPAddress(6,dst);
}
void addOptionHeader(IPv6Option header){
if(options==null)
options=new java.util.Vector();
options.addElement(header);
}
byte[] getSourceAddress(){
return src_ip.getAddress();
}
byte[] getDestinationAddress(){
return dst_ip.getAddress();
}
/**
* 偙偺僷働僢僩偺撪梕傪暥帤楍偱昞尰偡傞<P>
* 宍幃(IPv4): src_ip->dst_ip protocol(protocol) priority(priority)
* [D][T][R] hop(hop_limit) [RF/][DF/][MF] offset(offset) ident(ident)<P>
* 宍幃(IPv6): src_ip->dst_ip protocol(protocol) priority(priority)
* flowlabel(flow_label) hop(hop_limit)
*/
public String toString(){
if(version==4){
return super.toString()+" "+src_ip+"->"+
dst_ip+" protocol("+protocol+
") priority("+priority+") "+(d_flag?"D":"")+(t_flag?"T":"")+
(r_flag?"R":"")+" hop("+hop_limit+") "+(rsv_frag?"RF/":"")+
(dont_frag?"DF/":"")+(more_frag?"MF":"")+" offset("+offset+
") ident("+ident+")";
}else{
return super.toString()+" "+src_ip+"->"+
dst_ip+" protocol("+protocol+") priority("+priority+
") flowlabel("+flow_label+") hop("+hop_limit+")";;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -