예제 #1
0
파일: TcpPacket.java 프로젝트: sjroot/lab
  private static TcpPacket parse(
      IpPacket p, InetAddress source, InetAddress destination, int tcpLength, Buffer data)
      throws BufferUnderflowException {
    TcpPacket s = new TcpPacket();

    s.ipPacket = p;
    s.tcpLength = tcpLength;
    s.sourceAddr = source;
    s.destinationAddr = destination;
    s.srcPort = data.getUnsignedShort();
    s.dstPort = data.getUnsignedShort();

    s.sessionKey = new TcpSessionKeyImpl(s.sourceAddr, s.destinationAddr, s.srcPort, s.dstPort);

    s.seq = data.getInt();
    s.ack = data.getInt();
    s.parseDataOffsetAndFlags(data);
    s.window = data.getUnsignedShort();
    s.checksum = data.getUnsignedShort();
    s.urgentPointer = data.getUnsignedShort();
    s.parseOptions(data);
    s.parseData(data);

    return s;
  }