[Javanetsim-cvs] javaNetSim/core/protocolsuite/tcp_ip ProtocolStack.java,1.40,1.41 Tcp.java,1.35,1.3
Status: Beta
Brought to you by:
darkkey
From: gift <gi...@us...> - 2006-02-23 19:36:43
|
Update of /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14020/core/protocolsuite/tcp_ip Modified Files: ProtocolStack.java Tcp.java Log Message: vvv... Index: ProtocolStack.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/ProtocolStack.java,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** ProtocolStack.java 22 Feb 2006 14:05:19 -0000 1.40 --- ProtocolStack.java 23 Feb 2006 19:36:33 -0000 1.41 *************** *** 210,216 **** try{ ! String outInterface[] = mIPprotocol.router(inPacket.getDestIPAddress()); ! if(outInterface[0] == null) --- 210,221 ---- try{ ! try{ String outInterface[] = mIPprotocol.router(inPacket.getDestIPAddress()); ! } ! catch(NullPointerException e){ ! System.out.println("ProtocolStack.java: 216 " + e.toString()); ! } ! ! String outInterface[] = mIPprotocol.router(inPacket.getDestIPAddress()); if(outInterface[0] == null) Index: Tcp.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/Tcp.java,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** Tcp.java 23 Feb 2006 14:03:10 -0000 1.35 --- Tcp.java 23 Feb 2006 19:36:34 -0000 1.36 *************** *** 295,299 **** private Hashtable PortTable = new Hashtable(); private ProtocolStack mParentStack; ! private int window_size=10; // private int total_received=0; // private int total_sent=0; --- 295,299 ---- private Hashtable PortTable = new Hashtable(); private ProtocolStack mParentStack; ! private int window_size=25; // private int total_received=0; // private int total_sent=0; *************** *** 393,413 **** Enumeration HTkeys; Integer curkey; ! HTkeys = Elm.SegmentsToResend.keys(); ! while (HTkeys.hasMoreElements()) ! { ! curkey= (Integer) HTkeys.nextElement(); ! try{ ! //Create Layer info ! LayerInfo TCP_Info = new LayerInfo(getClass().getName()); ! TCP_Info.setObjectName(mParentStack.getParentNodeName()); ! TCP_Info.setDataType("TCP Protocol"); ! TCP_Info.setLayer("Transport"); ! TCP_Info.setDescription("Resending packet due to timer out: " + repTime + " msec has passed."); ! Simulation.addLayerInfo(TCP_Info); ! ! Elm.sent_duplicates++; ! mParentStack.sendPacket((TCP_packet)Elm.SegmentsToResend.get(curkey)); ! } catch (Exception e) {} ! } } else { --- 393,416 ---- Enumeration HTkeys; Integer curkey; ! try{ ! HTkeys = Elm.SegmentsToResend.keys(); ! while (HTkeys.hasMoreElements()) ! { ! curkey= (Integer) HTkeys.nextElement(); ! try{ ! //Create Layer info ! LayerInfo TCP_Info = new LayerInfo(getClass().getName()); ! TCP_Info.setObjectName(mParentStack.getParentNodeName()); ! TCP_Info.setDataType("TCP Protocol"); ! TCP_Info.setLayer("Transport"); ! TCP_Info.setDescription("Resending packet due to timer out: " + repTime + " msec has passed."); ! Simulation.addLayerInfo(TCP_Info); ! ! Elm.sent_duplicates++; ! mParentStack.sendPacket((TCP_packet)Elm.SegmentsToResend.get(curkey)); ! } catch (Exception e) {System.out.println("Queue of segments to resend INNER ERROR: " + e.toString());} ! } ! ! } catch (Exception e) {System.out.println("Queue of segments to resend OUTER ERROR: " + e.toString());} } else { *************** *** 1051,1054 **** --- 1054,1059 ---- public void receiveTCPPacket(TCP_packet inPacket) throws TransportLayerPortException, TransportLayerException, LowLinkException, CommunicationException { + + System.out.println(" !!!!!!!!!!! SEQ_numb==" + inPacket.get_sequence_number()); //test: check sum of TCP packet if (inPacket.getCheck_Sum() == 1) *************** *** 1112,1121 **** boolean flags[]={false,true,false,false,true,false}; /* URG, !ACK!, PSH, RST, !SYN!, FIN */ Application listener;int ack_num=1; ! listener = (Application)Elm.application; ! if (mParentStack.sendTCPSegment(listener,msg,flags,ack_num)) { ! //we have sent ACK for received segment => adding it to SentACKs ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); ! } //listener.RecvData(inPacket.getTCP_message()); we do not receive segment because this is a SYN-packet } else { //we have already received this segment --- 1117,1132 ---- boolean flags[]={false,true,false,false,true,false}; /* URG, !ACK!, PSH, RST, !SYN!, FIN */ Application listener;int ack_num=1; ! listener = (Application)Elm.application; ! ! //we are going to send ACK for received segment => adding it to SentACKs ! System.out.println("BEFORE: SYN-flags I=" + inPacket.get_sequence_number()); ! if (inPacket.get_sequence_number() == 1) System.out.println("SYN-flags EVERYTHING IS OK 1-st place I==1"); ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); ! System.out.println(" DONE I=" + inPacket.get_sequence_number()); ! ! if (!(mParentStack.sendTCPSegment(listener,msg,flags,ack_num))) { ! Elm.SentACKs.remove(inPacket.get_sequence_number()); ! } //listener.RecvData(inPacket.getTCP_message()); we do not receive segment because this is a SYN-packet } else { //we have already received this segment *************** *** 1150,1154 **** if (!(Elm.ReceivedSegments.contains(chk))) { ! if (Elm.isServer) { --- 1161,1165 ---- if (!(Elm.ReceivedSegments.contains(chk))) { ! try{ if (Elm.isServer) { *************** *** 1156,1160 **** TCPsetServerTimer(Elm,inPacket.get_destPort()); } else TCPsetTimer(Elm); ! Elm.received_segments++; Elm.ReceivedSegments.addElement(chk); //adding seq_number that we have received --- 1167,1174 ---- TCPsetServerTimer(Elm,inPacket.get_destPort()); } else TCPsetTimer(Elm); ! }catch(NullPointerException e){ ! System.out.println("TCP.java: case 2 - 1162 " + e.toString()); ! } ! Elm.received_segments++; Elm.ReceivedSegments.addElement(chk); //adding seq_number that we have received *************** *** 1178,1184 **** Simulation.addLayerInfo(TCP_Info); //deleting from SegmentsToResend the segmet with the acknowledgment number we have received NOTE: dec by 1 is used see RFC ! Elm.SegmentsToResend.remove((Integer)our_ack-1); ! // if (Elm.SegmentsToResend.remove((Integer)our_ack-1)==null) {System.out.println("Error here");} //now we have to send last ACK-segment (with SYN=false, seq_num=1, ack_num=1) --- 1192,1202 ---- Simulation.addLayerInfo(TCP_Info); + try{ //deleting from SegmentsToResend the segmet with the acknowledgment number we have received NOTE: dec by 1 is used see RFC ! Elm.SegmentsToResend.remove((Integer)our_ack-1); ! // if (Elm.SegmentsToResend.remove((Integer)our_ack-1)==null) {System.out.println("Error here");} ! }catch(NullPointerException e){ ! System.out.println("TCP.java: case 2 - 1191 " + e.toString()); ! } //now we have to send last ACK-segment (with SYN=false, seq_num=1, ack_num=1) *************** *** 1189,1201 **** listener = (Application)Elm.application; ! if (mParentStack.sendTCPSegment(listener,msg,flags,ack_num)) { ! //we have sent ACK for received segment => adding it to SentACKs ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); } //listener.RecvData(inPacket.getTCP_message()); we do not receive segment because this is a SYN-packet } else { //we have already received this segment //System.out.println("tttttttt"); if (Elm.isServer) { --- 1207,1231 ---- listener = (Application)Elm.application; ! try{ ! ! //we are going to send ACK for received segment => adding it to SentACKs ! System.out.println("BEFORE: SYN-flags with ACK must be I=1, I=" + inPacket.get_sequence_number()); ! if (inPacket.get_sequence_number() == 1) System.out.println("SYN-flags with ACK EVERYTHING IS OK 2-nd place I==1"); ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); ! System.out.println(" DONE I=" + inPacket.get_sequence_number()); ! ! if (!(mParentStack.sendTCPSegment(listener,msg,flags,ack_num))) { ! Elm.SentACKs.remove(inPacket.get_sequence_number()); } + + }catch(NullPointerException e){ + System.out.println("TCP.java: case 2 - 1208 " + e.toString()); + } //listener.RecvData(inPacket.getTCP_message()); we do not receive segment because this is a SYN-packet } else { //we have already received this segment //System.out.println("tttttttt"); + try{ if (Elm.isServer) { *************** *** 1216,1219 **** --- 1246,1253 ---- //now we have to resend our ACK again mParentStack.sendPacket((TCP_packet) Elm.SentACKs.get((Integer)inPacket.get_sequence_number())); + } + catch(NullPointerException e){ + System.out.println("TCP.java: case 2 - 1235 " + e.toString()); + } } *************** *** 1224,1232 **** if (inPacket.get_FIN_flag()) { //FIN flag! Last segment was received. //Elm=(TCP_HashTableElement)PortTable.get(inPacket.get_destPort()); Integer chk = (Integer)inPacket.get_sequence_number(); if (!(Elm.ReceivedSegments.contains(chk))) ! { if (Elm.isServer) { --- 1258,1268 ---- if (inPacket.get_FIN_flag()) { + try{ //FIN flag! Last segment was received. //Elm=(TCP_HashTableElement)PortTable.get(inPacket.get_destPort()); Integer chk = (Integer)inPacket.get_sequence_number(); if (!(Elm.ReceivedSegments.contains(chk))) ! { ! if (Elm.isServer) { *************** *** 1276,1284 **** listener = (Application)Elm.application; //Elm.isFIN_sent=true; - will be set in "sendTCPSegment" ! if (mParentStack.sendTCPSegment(listener,msg,flags,ack_num)) ! { ! //we have sent ACK for received segment => adding it to SentACKs ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); ! } } else { --- 1312,1326 ---- listener = (Application)Elm.application; //Elm.isFIN_sent=true; - will be set in "sendTCPSegment" ! ! //we are going to send ACK for received segment => adding it to SentACKs ! System.out.println("BEFORE: I=" + inPacket.get_sequence_number()); ! if (inPacket.get_sequence_number() == 1) System.out.println("EVERYTHING IS OK, ready 3-rd place I==1"); ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); ! System.out.println(" 3-rd place DONE I=" + inPacket.get_sequence_number()); ! ! if (!(mParentStack.sendTCPSegment(listener,msg,flags,ack_num))) ! { ! Elm.SentACKs.remove(inPacket.get_sequence_number()); ! } } else { *************** *** 1291,1299 **** Elm.isFIN_confirmed=true; int ack_num=chk+1; ! if (mParentStack.sendTCPSegment(listener,msg,flags,ack_num)) ! { ! //we have sent ACK for received segment => adding it to SentACKs ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); ! } } else { --- 1333,1347 ---- Elm.isFIN_confirmed=true; int ack_num=chk+1; ! ! //we are going to send ACK for received segment => adding it to SentACKs ! System.out.println("BEFORE: I=" + inPacket.get_sequence_number()); ! if (inPacket.get_sequence_number() == 1) System.out.println("EVERYTHING IS OK, ready 4-th place I==1"); ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); ! System.out.println(" 4-th place DONE I=" + inPacket.get_sequence_number()); ! ! if (!(mParentStack.sendTCPSegment(listener,msg,flags,ack_num))) ! { ! Elm.SentACKs.remove(inPacket.get_sequence_number()); ! } } else { *************** *** 1304,1312 **** Application listener; listener = (Application)Elm.application; int ack_num=chk+1; ! if (mParentStack.sendTCPSegment(listener,msg,flags,ack_num)) ! { ! //we have sent ACK for received segment => adding it to SentACKs ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); ! } } else { --- 1352,1366 ---- Application listener; listener = (Application)Elm.application; int ack_num=chk+1; ! ! //we are going to send ACK for received segment => adding it to SentACKs ! System.out.println("BEFORE: I=" + inPacket.get_sequence_number()); ! if (inPacket.get_sequence_number() == 1) System.out.println("EVERYTHING IS OK, ready 5-th place I==1"); ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); ! System.out.println(" 5-th place DONE I=" + inPacket.get_sequence_number()); ! ! if (!(mParentStack.sendTCPSegment(listener,msg,flags,ack_num))) ! { ! Elm.SentACKs.remove(inPacket.get_sequence_number()); ! } } else { *************** *** 1320,1326 **** } ! } ! } else { //we have already received this segment if (Elm.isServer) { --- 1374,1381 ---- } ! } } else { //we have already received this segment + + try { if (Elm.isServer) { *************** *** 1342,1354 **** //now we have to resend our ACK again mParentStack.sendPacket((TCP_packet) Elm.SentACKs.get((Integer)inPacket.get_sequence_number())); } ! ! } else { // no FIN flag, no SYN flag //just normal mode. Have to check ACK flag, decompose, send acknowledgement ! Integer chk = (Integer)inPacket.get_sequence_number(); Integer our_ack = (Integer)inPacket.get_acknowledgment_number(); --- 1397,1416 ---- //now we have to resend our ACK again mParentStack.sendPacket((TCP_packet) Elm.SentACKs.get((Integer)inPacket.get_sequence_number())); + } + catch(NullPointerException e){ + System.out.println("TCP.java: case 2 - 1368 " + e.toString()); + } } ! } ! catch(NullPointerException e){ ! System.out.println("TCP.java: case 2 - 1375 " + e.toString()); ! } ! } else { // no FIN flag, no SYN flag //just normal mode. Have to check ACK flag, decompose, send acknowledgement ! try{ Integer chk = (Integer)inPacket.get_sequence_number(); Integer our_ack = (Integer)inPacket.get_acknowledgment_number(); *************** *** 1414,1422 **** // if ((our_ack!=2 || Elm.sent_segments!=2) && Elm.PortStatus!=1) //{ ! if (mParentStack.sendTCPSegment(listener,msg,flags,ack_num)) ! { ! //we have sent ACK for received segment => adding it to SentACKs ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); ! } //} --- 1476,1490 ---- // if ((our_ack!=2 || Elm.sent_segments!=2) && Elm.PortStatus!=1) //{ ! //we are going to send ACK for received segment => adding it to SentACKs ! ! System.out.println("BEFORE: I=" + inPacket.get_sequence_number()); ! if (inPacket.get_sequence_number() == 1) System.out.println("EVERYTHING IS OK, ready 6-th place I==1"); ! Elm.SentACKs.put(new Integer(inPacket.get_sequence_number()), (TCP_packet) mParentStack.getTCPSegment_clone(listener,msg,flags,ack_num)); ! System.out.println(" 6-th place DONE I=" + inPacket.get_sequence_number()); ! ! if (!(mParentStack.sendTCPSegment(listener,msg,flags,ack_num))) ! { ! Elm.SentACKs.remove(inPacket.get_sequence_number()); ! } //} *************** *** 1456,1463 **** TCP_Info.setDescription("Resending ACK packet due to duplicate arrival. Total duplicates received: " + Elm.received_duplicates + "."); Simulation.addLayerInfo(TCP_Info); ! //now we have to resend our ACK again ! mParentStack.sendPacket((TCP_packet) Elm.SentACKs.get((Integer)inPacket.get_sequence_number())); } ! } } --- 1524,1542 ---- TCP_Info.setDescription("Resending ACK packet due to duplicate arrival. Total duplicates received: " + Elm.received_duplicates + "."); Simulation.addLayerInfo(TCP_Info); ! //now we have to resend our ACK again ! Integer ik = (Integer)inPacket.get_sequence_number(); ! ! TCP_packet Tpl = (TCP_packet) Elm.SentACKs.get(ik); ! ! System.out.println("I=" + ik); ! if (Tpl==null) {System.out.println("Error: PACKET = null when I=" + ik); } ! ! mParentStack.sendPacket(Tpl); /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PARASITE PLACE*/ } ! } ! catch(NullPointerException e){ ! System.out.println("TCP.java: case 2 - 1492 " + e.toString()); ! } ! } } |