/** * @param port port * @return a TcpPort object. */ public static TcpPort register(TcpPort port) { return registry.put(port.value(), port); } }
/** * @param value value * @return a TcpPort object. */ public static TcpPort getInstance(Short value) { if (registry.containsKey(value)) { return registry.get(value); } else { return new TcpPort(value, "unknown"); } }
this.srcPort = TcpPort.getInstance(ByteArrays.getShort(rawData, SRC_PORT_OFFSET + offset)); this.dstPort = TcpPort.getInstance(ByteArrays.getShort(rawData, DST_PORT_OFFSET + offset)); this.sequenceNumber = ByteArrays.getInt(rawData, SEQUENCE_NUMBER_OFFSET + offset); this.acknowledgmentNumber = ByteArrays.getInt(rawData, ACKNOWLEDGMENT_NUMBER_OFFSET + offset);
@Override protected int calcHashCode() { int result = 17; result = 31 * result + srcPort.hashCode(); result = 31 * result + dstPort.hashCode(); result = 31 * result + sequenceNumber; result = 31 * result + acknowledgmentNumber; result = 31 * result + dataOffset; result = 31 * result + reserved; result = 31 * result + (urg ? 1231 : 1237); result = 31 * result + (ack ? 1231 : 1237); result = 31 * result + (psh ? 1231 : 1237); result = 31 * result + (rst ? 1231 : 1237); result = 31 * result + (syn ? 1231 : 1237); result = 31 * result + (fin ? 1231 : 1237); result = 31 * result + window; result = 31 * result + checksum; result = 31 * result + urgentPointer; result = 31 * result + options.hashCode(); result = 31 * result + Arrays.hashCode(padding); return result; } }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } TcpHeader other = (TcpHeader) obj; return checksum == other.checksum && sequenceNumber == other.sequenceNumber && acknowledgmentNumber == other.acknowledgmentNumber && dataOffset == other.dataOffset && srcPort.equals(other.srcPort) && dstPort.equals(other.dstPort) && urg == other.urg && ack == other.ack && psh == other.psh && rst == other.rst && syn == other.syn && fin == other.fin && window == other.window && urgentPointer == other.urgentPointer && reserved == other.reserved && options.equals(other.options) && Arrays.equals(padding, other.padding); }
@Override protected int calcHashCode() { int result = 17; result = 31 * result + srcPort.hashCode(); result = 31 * result + dstPort.hashCode(); result = 31 * result + sequenceNumber; result = 31 * result + acknowledgmentNumber; result = 31 * result + dataOffset; result = 31 * result + reserved; result = 31 * result + (urg ? 1231 : 1237); result = 31 * result + (ack ? 1231 : 1237); result = 31 * result + (psh ? 1231 : 1237); result = 31 * result + (rst ? 1231 : 1237); result = 31 * result + (syn ? 1231 : 1237); result = 31 * result + (fin ? 1231 : 1237); result = 31 * result + window; result = 31 * result + checksum; result = 31 * result + urgentPointer; result = 31 * result + options.hashCode(); result = 31 * result + Arrays.hashCode(padding); return result; } }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } TcpHeader other = (TcpHeader) obj; return checksum == other.checksum && sequenceNumber == other.sequenceNumber && acknowledgmentNumber == other.acknowledgmentNumber && dataOffset == other.dataOffset && srcPort.equals(other.srcPort) && dstPort.equals(other.dstPort) && urg == other.urg && ack == other.ack && psh == other.psh && rst == other.rst && syn == other.syn && fin == other.fin && window == other.window && urgentPointer == other.urgentPointer && reserved == other.reserved && options.equals(other.options) && Arrays.equals(padding, other.padding); }
/** * @param value value * @return a TcpPort object. */ public static TcpPort getInstance(Short value) { if (registry.containsKey(value)) { return registry.get(value); } else { return new TcpPort(value, "unknown"); } }
public TcpPacketTest() throws Exception { this.srcPort = TcpPort.SNMP; this.dstPort = TcpPort.getInstance((short) 0); this.sequenceNumber = 1234567; this.acknowledgmentNumber = 7654321;
/** * @param port port * @return a TcpPort object. */ public static TcpPort register(TcpPort port) { return registry.put(port.value(), port); } }
this.srcPort = TcpPort.getInstance(ByteArrays.getShort(rawData, SRC_PORT_OFFSET + offset)); this.dstPort = TcpPort.getInstance(ByteArrays.getShort(rawData, DST_PORT_OFFSET + offset)); this.sequenceNumber = ByteArrays.getInt(rawData, SEQUENCE_NUMBER_OFFSET + offset); this.acknowledgmentNumber = ByteArrays.getInt(rawData, ACKNOWLEDGMENT_NUMBER_OFFSET + offset);
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(); } }
TcpHeader tcpHeader=tcpPacket.getHeader(); if(client){ TCPTun conn=tcpManager.getTcpConnection_Client(ipV4Header.getSrcAddr().getHostAddress(),tcpHeader.getSrcPort().value(), tcpHeader.getDstPort().value()); if(conn!=null){ conn.process_client(capEnv,packet,head_eth,ipV4Header,tcpPacket,false); TCPTun conn=null;conn = tcpManager.getTcpConnection_Server(ipV4Header.getSrcAddr().getHostAddress(),tcpHeader.getSrcPort().value()); if( tcpHeader.getDstPort().value()==listenPort){ if(tcpHeader.getSyn()&&!tcpHeader.getAck()&&conn==null){ conn=new TCPTun(capEnv,ipV4Header.getSrcAddr(),tcpHeader.getSrcPort().value()); tcpManager.addConnection_Server(conn); conn = tcpManager.getTcpConnection_Server(ipV4Header.getSrcAddr().getHostAddress(),tcpHeader.getSrcPort().value()); if(conn!=null){ conn.process_server(packet,head_eth,ipV4Header,tcpPacket,true);