本文整理汇总了Java中org.pcap4j.packet.TcpPacket类的典型用法代码示例。如果您正苦于以下问题:Java TcpPacket类的具体用法?Java TcpPacket怎么用?Java TcpPacket使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
TcpPacket类属于org.pcap4j.packet包,在下文中一共展示了TcpPacket类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: onReceiveDataPacket
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
void onReceiveDataPacket(TcpPacket tcpPacket, TcpHeader tcpHeader, IpV4Header ipV4Header ){
if(System.currentTimeMillis()-lastSendAckTime>1000){
int rs=tcpHeader.getSequenceNumber()+tcpPacket.getPayload().getRawData().length;
if(rs>remoteSequence_max){
remoteSequence_max=rs;
}
Packet ackPacket=PacketUtils.createAck(
capEnv.local_mac,
capEnv.gateway_mac,
localAddress,(short)localPort,
ipV4Header.getSrcAddr(),tcpHeader.getSrcPort().value(),
remoteSequence_max, localSequence,getIdent());
try {
sendHandle.sendPacket(ackPacket);
} catch (Exception e) {
e.printStackTrace();
}
lastSendAckTime=System.currentTimeMillis();
lastReceiveDataTime=System.currentTimeMillis();
}
}
示例2: onReceiveDataPacket
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
void onReceiveDataPacket(TcpPacket tcpPacket,TcpHeader tcpHeader,IpV4Header ipV4Header ){
if(System.currentTimeMillis()-lastSendAckTime>1000){
int rs=tcpHeader.getSequenceNumber()+tcpPacket.getPayload().getRawData().length;
if(rs>remoteSequence_max){
remoteSequence_max=rs;
}
Packet ackPacket=PacketUtils.createAck(
capEnv.local_mac,
capEnv.gateway_mac,
localAddress,(short)localPort,
ipV4Header.getSrcAddr(),tcpHeader.getSrcPort().value(),
remoteSequence_max, localSequence,getIdent());
try {
sendHandle.sendPacket(ackPacket);
} catch (Exception e) {
e.printStackTrace();
}
lastSendAckTime=System.currentTimeMillis();
lastReceiveDataTime=System.currentTimeMillis();
}
}
示例3: onReceiveDataPacket
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
void onReceiveDataPacket(TcpPacket tcpPacket, TcpHeader tcpHeader, IpV4Header ipV4Header) {
if (System.currentTimeMillis() - lastSendAckTime > 1000) {
int rs = tcpHeader.getSequenceNumber() + tcpPacket.getPayload().getRawData().length;
if (rs > remoteSequence_max) {
remoteSequence_max = rs;
}
Packet ackPacket = PacketUtils.createAck(
capEnv.local_mac,
capEnv.gateway_mac,
localAddress, localPort,
ipV4Header.getSrcAddr(), tcpHeader.getSrcPort().value(),
remoteSequence_max, localSequence, getIdent());
try {
sendHandle.sendPacket(ackPacket);
} catch (Exception e) {
e.printStackTrace();
}
lastSendAckTime = System.currentTimeMillis();
lastReceiveDataTime = System.currentTimeMillis();
}
}
示例4: testHandleDnsRequestNotUdpPacket
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
@Test
public void testHandleDnsRequestNotUdpPacket() throws Exception {
TcpPacket.Builder payLoadBuilder = new TcpPacket.Builder()
.srcPort(TcpPort.HTTP)
.dstPort(TcpPort.HTTP)
.srcAddr(InetAddress.getByAddress(new byte[]{8, 8, 4, 4}))
.dstAddr(InetAddress.getByAddress(new byte[]{8, 8, 8, 8}))
.correctChecksumAtBuild(true)
.correctLengthAtBuild(true)
.payloadBuilder(
new UnknownPacket.Builder()
.rawData(new byte[0])
);
IpPacket ipOutPacket = new IpV4Packet.Builder()
.version(IpVersion.IPV4)
.tos(IpV4Rfc791Tos.newInstance((byte) 0))
.protocol(IpNumber.UDP)
.srcAddr((Inet4Address) Inet4Address.getByAddress(new byte[]{8, 8, 4, 4}))
.dstAddr((Inet4Address) Inet4Address.getByAddress(new byte[]{8, 8, 8, 8}))
.correctChecksumAtBuild(true)
.correctLengthAtBuild(true)
.payloadBuilder(payLoadBuilder)
.build();
dnsPacketProxy.handleDnsRequest(ipOutPacket.getRawData());
assertNull(mockEventLoop.lastOutgoing);
assertNull(mockEventLoop.lastResponse);
}
示例5: createSyncAck
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
static Packet createSyncAck(
MacAddress srcAddress_mac,
MacAddress dstAddrress_mac,
Inet4Address srcAddress,short srcPort,
Inet4Address dstAddress,short dstPort,
int ack_sequence,int sequence,short ident){
TcpPacket.Builder builder_tcp=new TcpPacket.Builder();
//builder_tcp.payloadBuilder(new UnknownPacket.Builder().rawData(new byte[0]));
builder_tcp.correctChecksumAtBuild(true);
builder_tcp.correctLengthAtBuild(true);
builder_tcp.paddingAtBuild(true);
builder_tcp.ack(true);
builder_tcp.acknowledgmentNumber(ack_sequence);
//builder_tcp.checksum(tcpHeader.getChecksum());
//builder_tcp.dataOffset((byte) 8);
builder_tcp.dstAddr(dstAddress);
builder_tcp.dstPort(new TcpPort(dstPort,""));
//builder_tcp.fin(tcpHeader.getFin());
ArrayList<TcpOption> tcp_options=new ArrayList<TcpOption>();
TcpNoOperationOption nop=TcpNoOperationOption.getInstance();
TcpMaximumSegmentSizeOption seg_option=new TcpMaximumSegmentSizeOption.Builder().maxSegSize(mtu).correctLengthAtBuild(true).build();
tcp_options.add(seg_option);
tcp_options.add(nop);
tcp_options.add(nop);
TcpSackPermittedOption sack_permit_option=TcpSackPermittedOption.getInstance();
tcp_options.add(sack_permit_option);
tcp_options.add(nop);
TcpWindowScaleOption win_option=new TcpWindowScaleOption.Builder().shiftCount(shiftCount).correctLengthAtBuild(true).build();
tcp_options.add(win_option);
builder_tcp.options(tcp_options);
//builder_tcp.padding(tcpHeader.getPadding());
builder_tcp.psh(false);
builder_tcp.reserved((byte) 0);
builder_tcp.rst(false);
builder_tcp.sequenceNumber(sequence);
builder_tcp.srcAddr(srcAddress);
builder_tcp.srcPort(new TcpPort(srcPort,""));
builder_tcp.syn(true);
builder_tcp.urg(false);
//builder_tcp.urgentPointer(tcpHeader.getUrgentPointer());
builder_tcp.window( window);
IpV4Packet.Builder builder_ipv4=new IpV4Packet.Builder();
builder_ipv4.correctChecksumAtBuild(true);
builder_ipv4.correctLengthAtBuild(true);
builder_ipv4.paddingAtBuild(true);
builder_ipv4.dstAddr(dstAddress);
builder_ipv4.dontFragmentFlag(true);
builder_ipv4.fragmentOffset((short)0);
//builder_ipv4.headerChecksum(ipV4Header.getHeaderChecksum());
// short identification= Math.abs(random.nextInt(Short.MAX_VALUE));
builder_ipv4.identification(ident);
builder_ipv4.ihl((byte) 5);
//builder_ipv4.moreFragmentFlag(ipV4Header.getMoreFragmentFlag());
//builder_ipv4.options(ipV4Header.getOptions());
//builder_ipv4.padding(ipV4Header.getPadding());
builder_ipv4.protocol(IpNumber.TCP);
// builder_ipv4.reservedFlag(ipV4Header.getReservedFlag());
builder_ipv4.srcAddr(srcAddress);
builder_ipv4.tos(IpV4Rfc1349Tos.newInstance((byte) 0));
//builder_ipv4.totalLength( 52);
builder_ipv4.ttl(ttl);
builder_ipv4.version(IpVersion.IPV4);
builder_ipv4.payloadBuilder(builder_tcp);
//
Packet p = buildIpV4(srcAddress_mac,dstAddrress_mac,builder_ipv4);
return p;
}
示例6: getSrcPort
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
/**
* Return source port
*
* @param packet
* @return
*/
private String getSrcPort(Packet packet) {
if (protocolType.equals("TCP")) {
return packet.get(TcpPacket.class).getHeader().getSrcPort().toString();
} else if (protocolType.equals("UDP")) {
return packet.get(UdpPacket.class).getHeader().getSrcPort().toString();
}
return "80";
}
示例7: getDstPort
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
/**
* Return destination port
*
* @param packet
* @return
*/
private String getDstPort(Packet packet) {
if (protocolType.equals("TCP")) {
return packet.get(TcpPacket.class).getHeader().getDstPort().toString();
} else if (protocolType.equals("UDP")) {
return packet.get(UdpPacket.class).getHeader().getDstPort().toString();
}
return "80";
}
示例8: getPacketTypeText
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
/**
*
* @param packet
* @return
*/
public PacketInfo getPacketTypeText(Packet packet) {
PacketInfo packetInfo = new PacketInfo();
String packetType = "";
// Default values for packet info
packetInfo.setType("Unknown");
packetInfo.setLength(packet.length());
if (packet != null) {
// EthernetPacket
if (packet.get(EthernetPacket.class) != null) {
packetType += "Ethernet/";
}
// IPPacket
if (packet.get(IpV4Packet.class) != null) {
packetType += "IPV4/";
}
// TCPPacket
if (packet.get(TcpPacket.class) != null) {
packetType += "TCP/";
}
// UDPPacket
if (packet.get(UdpPacket.class) != null) {
packetType += "UDP";
}
if (packetType.endsWith("/")) {
packetType = packetType.substring(0, packetType.length() - 1);
}
packetInfo.setType(packetType);
}
return packetInfo;
}
示例9: pack
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
public static IpV6Packet pack(
final Packet payload, Inet6Address src, Inet6Address dst, int hopLimit, short id
) {
IpNumber nextHeader;
if (payload instanceof UdpPacket) {
nextHeader = IpNumber.UDP;
}
else if (payload instanceof IcmpV6CommonPacket) {
nextHeader = IpNumber.ICMPV6;
}
else if (payload instanceof TcpPacket) {
nextHeader = IpNumber.TCP;
}
else {
throw new AssertionError();
}
IpV6Packet.Builder builder = new IpV6Packet.Builder();
return builder.version(IpVersion.IPV6)
.trafficClass(IpV6SimpleTrafficClass.newInstance((byte)0))
.flowLabel(IpV6SimpleFlowLabel.newInstance(0))
.nextHeader(nextHeader)
.hopLimit((byte)hopLimit)
.srcAddr(src)
.dstAddr(dst)
.payloadBuilder(new SimpleBuilder(payload))
.correctLengthAtBuild(true)
.build();
}
示例10: pack
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
public static IpV4Packet pack(
final Packet payload, Inet4Address src, Inet4Address dst, int ttl, short id
) {
IpNumber ipNum;
if (payload instanceof UdpPacket) {
ipNum = IpNumber.UDP;
}
else if (payload instanceof IcmpV4CommonPacket) {
ipNum = IpNumber.ICMPV4;
}
else if (payload instanceof TcpPacket) {
ipNum = IpNumber.TCP;
}
else {
throw new AssertionError();
}
IpV4Packet.Builder builder = new IpV4Packet.Builder();
return
builder.version(IpVersion.IPV4)
.tos(IpV4Rfc791Tos.newInstance((byte)0))
.identification(id)
.ttl((byte)ttl)
.protocol(ipNum)
.srcAddr(src)
.dstAddr(dst)
.payloadBuilder(new SimpleBuilder(payload))
.correctChecksumAtBuild(true)
.correctLengthAtBuild(true)
.build();
}
示例11: process_server
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
public void process_server(final Packet packet, EthernetHeader ethernetHeader, IpV4Header ipV4Header, TcpPacket tcpPacket, boolean client){
TcpHeader tcpHeader=tcpPacket.getHeader();
if(!preDataReady){
if(!connectReady){
//第一次握手
dstMacaAddress=ethernetHeader.getSrcAddr();
if(tcpHeader.getSyn()&&!tcpHeader.getAck()){
remoteStartSequence=tcpHeader.getSequenceNumber();
remoteSequence=remoteStartSequence+1;
remoteSequence_max=remoteSequence;
MLog.println("接收第一次握手 "+remoteAddress.getHostAddress()+":"+remotePort+"->"+localAddress.getHostAddress()+":"+localPort+" ident "+ipV4Header.getIdentification());
MLog.println(""+packet);
Packet responePacket=PacketUtils.createSyncAck(
capEnv.local_mac,
capEnv.gateway_mac,
localAddress,(short)localPort,
ipV4Header.getSrcAddr(),tcpHeader.getSrcPort().value(),
tcpHeader.getSequenceNumber()+1,localStartSequence,(short)0
);
try {
sendHandle.sendPacket(responePacket);
} catch (Exception e) {
e.printStackTrace();
}
localSequence=localStartSequence+1;
MLog.println("发送第二次握手 "+capEnv.local_mac+"->"+capEnv.gateway_mac+" "+localAddress+"->"+" ident "+0);
MLog.println(""+responePacket);
}
if(!tcpHeader.getSyn()&&tcpHeader.getAck()){
if(tcpPacket.getPayload()==null){
//第三次握手,客户端确认
if(tcpHeader.getAcknowledgmentNumber()==localSequence){
MLog.println("接收第三次握手 "+" ident "+ipV4Header.getIdentification());
MLog.println(packet+"");
Thread t1=new Thread(){
public void run(){
//startSend(basePacket_server,syc_sequence_client+1);
}
};
//t1.start();
connectReady=true;
}
}
//MLog.println("客户端响应preview\n "+packet);
//MLog.println("request "+tcp.ack());
sendedTable_server.remove(tcpHeader.getAcknowledgmentNumber());
boolean selfAck=selfAckTable.contains(ipV4Header.getIdentification());
//MLog.println("客户端确认 "+"selfack "+selfAck+" id "+ipV4Header.getIdentification()+" ack_sequence "+tcpHeader.getAcknowledgmentNumberAsLong()+" "+sendedTable_server.size()+"ppppppp "+tcpHeader);
}
}else {
if(tcpPacket.getPayload()!=null){
preDataReady=true;
onReceiveDataPacket( tcpPacket, tcpHeader, ipV4Header );
byte[] sim=getSimResponeHead();
sendData(sim);
}
}
}else {
if(tcpPacket.getPayload()!=null){
onReceiveDataPacket( tcpPacket, tcpHeader, ipV4Header );
TunData td=new TunData();
td.tun=this;
td.data=tcpPacket.getPayload().getRawData();
capEnv.vDatagramSocket.onReceinveFromTun(td);
}
}
if(tcpHeader.getRst()){
MLog.println("reset packet "+ipV4Header.getIdentification()+" "+tcpHeader.getSequenceNumber()+" "+remoteAddress.getHostAddress()+":"+remotePort+"->"+localAddress.getHostAddress()+":"+localPort+" "+" ident "+ipV4Header.getIdentification());
}
}
示例12: onEvent
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
@Override
public void onEvent(PacketContainer container, long sequence, boolean endOfBatch) throws Exception {
if (shouldSkipEvent(sequence)) {
return;
}
IpV4Packet ipV4Packet = container.getIpV4Packet();
if (ipV4Packet == null) {
return;
}
buffer.clear();
buffer.put(TYPE);
buffer.put(VERSION);
Timestamp timestamp = container.getTimestamp();
buffer.putLong(timestamp.getTime());
buffer.putInt(timestamp.getNanos());
IpV4Packet.IpV4Header ipV4Header = ipV4Packet.getHeader();
buffer.put(ipV4Header.getProtocol().value());
Packet transportLayerPacket = ipV4Packet.getPayload();
if (transportLayerPacket.getPayload() == null) {
return;
}
if (transportLayerPacket instanceof UdpPacket) {
UdpPacket.UdpHeader udpHeader = (UdpPacket.UdpHeader) transportLayerPacket.getHeader();
buffer.put(ipV4Header.getSrcAddr().getAddress());
buffer.putShort(udpHeader.getSrcPort().value());
buffer.put(ipV4Header.getDstAddr().getAddress());
buffer.putShort(udpHeader.getDstPort().value());
} else {
TcpPacket.TcpHeader tcpHeader = (TcpPacket.TcpHeader) transportLayerPacket.getHeader();
buffer.put(ipV4Header.getSrcAddr().getAddress());
buffer.putShort(tcpHeader.getSrcPort().value());
buffer.put(ipV4Header.getDstAddr().getAddress());
buffer.putShort(tcpHeader.getDstPort().value());
}
byte[] content = transportLayerPacket.getPayload().getRawData();
SipContentReader.read(content, (i1, i2) -> {
buffer.position(HEADER_LENGTH);
buffer.limit(buffer.capacity());
int length = i2 - i1;
buffer.putShort((short) length);
buffer.put(content, i1, length);
buffer.flip();
try {
TimeUnit.MILLISECONDS.sleep(delay);
channel.write(buffer);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
示例13: process_server
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
public void process_server(final Packet packet,EthernetHeader ethernetHeader,IpV4Header ipV4Header,TcpPacket tcpPacket,boolean client){
TcpHeader tcpHeader=tcpPacket.getHeader();
if(!preDataReady){
if(!connectReady){
//第一次握手
dstMacaAddress=ethernetHeader.getSrcAddr();
if(tcpHeader.getSyn()&&!tcpHeader.getAck()){
remoteStartSequence=tcpHeader.getSequenceNumber();
remoteSequence=remoteStartSequence+1;
remoteSequence_max=remoteSequence;
MLog.println("接收第一次握手 "+remoteAddress.getHostAddress()+":"+remotePort+"->"+localAddress.getHostAddress()+":"+localPort+" ident "+ipV4Header.getIdentification());
MLog.println(""+packet);
Packet responePacket=PacketUtils.createSyncAck(
capEnv.local_mac,
capEnv.gateway_mac,
localAddress,(short)localPort,
ipV4Header.getSrcAddr(),tcpHeader.getSrcPort().value(),
tcpHeader.getSequenceNumber()+1,localStartSequence,(short)0
);
try {
sendHandle.sendPacket(responePacket);
} catch (Exception e) {
e.printStackTrace();
}
localSequence=localStartSequence+1;
MLog.println("发送第二次握手 "+capEnv.local_mac+"->"+capEnv.gateway_mac+" "+localAddress+"->"+" ident "+0);
MLog.println(""+responePacket);
}
if(!tcpHeader.getSyn()&&tcpHeader.getAck()){
if(tcpPacket.getPayload()==null){
//第三次握手,客户端确认
if(tcpHeader.getAcknowledgmentNumber()==localSequence){
MLog.println("接收第三次握手 "+" ident "+ipV4Header.getIdentification());
MLog.println(packet+"");
Thread t1=new Thread(){
public void run(){
//startSend(basePacket_server,syc_sequence_client+1);
}
};
//t1.start();
connectReady=true;
}
}
//MLog.println("客户端响应preview\n "+packet);
//MLog.println("request "+tcp.ack());
sendedTable_server.remove(tcpHeader.getAcknowledgmentNumber());
boolean selfAck=selfAckTable.contains(ipV4Header.getIdentification());
//MLog.println("客户端确认 "+"selfack "+selfAck+" id "+ipV4Header.getIdentification()+" ack_sequence "+tcpHeader.getAcknowledgmentNumberAsLong()+" "+sendedTable_server.size()+"ppppppp "+tcpHeader);
}
}else {
if(tcpPacket.getPayload()!=null){
preDataReady=true;
onReceiveDataPacket( tcpPacket, tcpHeader, ipV4Header );
byte[] sim=getSimResponeHead();
sendData(sim);
}
}
}else {
if(tcpPacket.getPayload()!=null){
onReceiveDataPacket( tcpPacket, tcpHeader, ipV4Header );
TunData td=new TunData();
td.tun=this;
td.data=tcpPacket.getPayload().getRawData();
capEnv.vDatagramSocket.onReceinveFromTun(td);
}
}
if(tcpHeader.getRst()){
MLog.println("reset packet "+ipV4Header.getIdentification()+" "+tcpHeader.getSequenceNumber()+" "+remoteAddress.getHostAddress()+":"+remotePort+"->"+localAddress.getHostAddress()+":"+localPort+" "+" ident "+ipV4Header.getIdentification());
}
}
示例14: createDataPacket
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
static Packet createDataPacket(
MacAddress srcAddress_mac,
MacAddress dstAddrress_mac,
Inet4Address srcAddress,short srcPort,
Inet4Address dstAddress,short dstPort,
int sequence,int ack, byte[] data,short ident){
Packet p=null;
TcpPacket.Builder builder_tcp=new TcpPacket.Builder();
builder_tcp.payloadBuilder(new UnknownPacket.Builder().rawData(data));
builder_tcp.correctChecksumAtBuild(true);
builder_tcp.correctLengthAtBuild(true);
builder_tcp.paddingAtBuild(true);
builder_tcp.ack(true);
builder_tcp.acknowledgmentNumber(ack);
//builder_tcp.checksum(tcpHeader.getChecksum());
//builder_tcp.dataOffset((byte)8);
builder_tcp.dstAddr(dstAddress);
builder_tcp.dstPort(new TcpPort( dstPort,""));
builder_tcp.fin(false);
//builder_tcp.options(tcpHeader.getOptions());
//builder_tcp.padding(tcpHeader.getPadding());
builder_tcp.psh(false);
builder_tcp.reserved((byte) 0);
builder_tcp.rst(false);
builder_tcp.sequenceNumber(sequence);
builder_tcp.srcAddr(srcAddress);
builder_tcp.srcPort(new TcpPort( srcPort,""));
builder_tcp.syn(false);
builder_tcp.urg(false);
//builder_tcp.urgentPointer(tcpHeader.getUrgentPointer());
builder_tcp.window( window);
IpV4Packet.Builder builder_ipv4=new IpV4Packet.Builder();
builder_ipv4.correctChecksumAtBuild(true);
builder_ipv4.correctLengthAtBuild(true);
builder_ipv4.dontFragmentFlag(true);
builder_ipv4.paddingAtBuild(true);
builder_ipv4.dstAddr(dstAddress);
builder_ipv4.fragmentOffset( (short)0);
//builder_ipv4.headerChecksum(ipV4Header.getHeaderChecksum());
//short identification= Math.abs(random.nextInt(Short.MAX_VALUE));
//identification=ident;
builder_ipv4.identification(ident);
builder_ipv4.ihl((byte) 5);
builder_ipv4.moreFragmentFlag(false);
//builder_ipv4.options(ipV4Header.getOptions());
//builder_ipv4.padding(ipV4Header.getPadding());
builder_ipv4.protocol(IpNumber.TCP);
//builder_ipv4.reservedFlag(ipV4Header.getReservedFlag());
builder_ipv4.srcAddr(srcAddress);
builder_ipv4.tos(IpV4Rfc1349Tos.newInstance((byte) 0));
//builder_ipv4.totalLength( 52);
builder_ipv4.ttl(ttl);
builder_ipv4.version(IpVersion.IPV4);
builder_ipv4.payloadBuilder(builder_tcp);
p = buildIpV4(srcAddress_mac,dstAddrress_mac,builder_ipv4);
return p;
}
示例15: createAck
import org.pcap4j.packet.TcpPacket; //导入依赖的package包/类
static Packet createAck(
MacAddress srcAddress_mac,
MacAddress dstAddrress_mac,
Inet4Address srcAddress,short srcPort,
Inet4Address dstAddress,short dstPort,
int ack_sequence,int sequence,short ident){
TcpPacket.Builder builder_tcp=new TcpPacket.Builder();
//builder_tcp.payloadBuilder(new UnknownPacket.Builder().rawData(new byte[0]));
builder_tcp.correctChecksumAtBuild(true);
builder_tcp.correctLengthAtBuild(true);
builder_tcp.paddingAtBuild(true);
builder_tcp.ack(true);
builder_tcp.acknowledgmentNumber(ack_sequence);
//builder_tcp.checksum(tcpHeader.getChecksum());
//builder_tcp.dataOffset((byte) 8);
builder_tcp.dstAddr(dstAddress);
builder_tcp.dstPort(new TcpPort( dstPort,""));
//builder_tcp.fin(tcpHeader.getFin());
builder_tcp.psh(false);
builder_tcp.reserved((byte) 0);
builder_tcp.rst(false);
builder_tcp.sequenceNumber(sequence);
builder_tcp.srcAddr(srcAddress);
builder_tcp.srcPort(new TcpPort( srcPort,""));
builder_tcp.syn(false);
builder_tcp.urg(false);
//builder_tcp.urgentPointer(tcpHeader.getUrgentPointer());
builder_tcp.window( window);
IpV4Packet.Builder builder_ipv4=new IpV4Packet.Builder();
builder_ipv4.correctChecksumAtBuild(true);
builder_ipv4.correctLengthAtBuild(true);
builder_ipv4.paddingAtBuild(true);
builder_ipv4.dstAddr(dstAddress);
builder_ipv4.dontFragmentFlag(true);
builder_ipv4.fragmentOffset( (short) 0);
//builder_ipv4.headerChecksum(ipV4Header.getHeaderChecksum());
//short identification= Math.abs(random.nextInt(Short.MAX_VALUE));
builder_ipv4.identification(ident);
builder_ipv4.ihl((byte) 5);
//builder_ipv4.moreFragmentFlag(ipV4Header.getMoreFragmentFlag());
//builder_ipv4.options(ipV4Header.getOptions());
//builder_ipv4.padding(ipV4Header.getPadding());
builder_ipv4.protocol(IpNumber.TCP);
// builder_ipv4.reservedFlag(ipV4Header.getReservedFlag());
builder_ipv4.srcAddr(srcAddress);
builder_ipv4.tos(IpV4Rfc1349Tos.newInstance((byte) 0));
//builder_ipv4.totalLength( 52);
builder_ipv4.ttl(ttl);
builder_ipv4.version(IpVersion.IPV4);
builder_ipv4.payloadBuilder(builder_tcp);
//
Packet p = buildIpV4(srcAddress_mac,dstAddrress_mac,builder_ipv4);
//System.out.println("自定义确认 "+" identification "+identification+" ack_sequence "+ack_sequence+" # "+tcpPacket.getHeader());
return p;
}