[Javanetsim-cvs] javaNetSim/core/protocolsuite/tcp_ip Tcp.java,1.6,1.7 Udp.java,1.28,1.29
Status: Beta
Brought to you by:
darkkey
From: gift <gi...@us...> - 2005-11-26 16:11:51
|
Update of /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32242/core/protocolsuite/tcp_ip Modified Files: Tcp.java Udp.java Log Message: YES!!! TCP v.0.1 Index: Tcp.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/Tcp.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Tcp.java 26 Nov 2005 14:44:02 -0000 1.6 --- Tcp.java 26 Nov 2005 16:11:43 -0000 1.7 *************** *** 677,680 **** --- 677,681 ---- if(mParentStack.isInternalIP(inPacket.getDestIPAddress())){ this.total_received++; //overall stats + // test if destination TCP port exists on this NeworkLayerDevice if (PortTable.get(inPacket.get_destPort()) !=null) *************** *** 700,704 **** //in case this is not duplicate Integer chk = (Integer)inPacket.get_sequence_number(); ! if (Elm.ReceivedSegments.contains(chk)) { Elm.PortStatus=2; //port will be busy from now --- 701,705 ---- //in case this is not duplicate Integer chk = (Integer)inPacket.get_sequence_number(); ! if (!(Elm.ReceivedSegments.contains(chk))) { Elm.PortStatus=2; //port will be busy from now *************** *** 729,733 **** listener = (Application)Elm.application; mParentStack.sendTCPSegment(listener,msg,flags); ! } else { //we have already received this segment Elm.received_duplicates++; --- 730,735 ---- listener = (Application)Elm.application; mParentStack.sendTCPSegment(listener,msg,flags); ! //listener.RecvData(inPacket.getTCP_message()); we do not receive segment because this is a SYN-packet ! } else { //we have already received this segment Elm.received_duplicates++; *************** *** 740,763 **** if ((Elm.connectedtoIP.equals(inPacket.getSourceIPAddress())) && (Elm.connectedtoPort==inPacket.get_srcPort())) { ! //now we decompose TCP datagram ! ! // everything is OK, one more test: check sum of TCP packet ! //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("TCP packet received from "+ inPacket.getSourceIPAddress() + ":" + inPacket.get_srcPort() + " message: \"" +inPacket.getTCP_message() + "\"."); ! ! Simulation.addLayerInfo(TCP_Info); ! ! Application listener; ! listener = (Application)Elm.application; ! listener.RecvData(inPacket.getTCP_message()); } else { //have to disconnect listener from port --- 742,888 ---- if ((Elm.connectedtoIP.equals(inPacket.getSourceIPAddress())) && (Elm.connectedtoPort==inPacket.get_srcPort())) { ! //now we decompose TCP segment ! //everything is OK ! //Check for SYN ! if (inPacket.get_SYN_flag()) ! { ! //we have received an answer for our SYN-segment ! //a little test ! if (!(inPacket.get_ACK_flag())) throw new TransportLayerPortException("TCP Error: No ACK flag set in segment!"); ! ! //in case this is not duplicate ! Integer chk = (Integer)inPacket.get_sequence_number(); ! if (!(Elm.ReceivedSegments.contains(chk))) ! { ! Elm.received_segments++; ! Elm.ReceivedSegments.addElement(chk); //adding seq_number that we have received ! // everything is OK now we decompose TCP datagram ! ! //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("TCP SYN-packet with ACK received from "+ inPacket.getSourceIPAddress() + ":" + inPacket.get_srcPort() + "." + " TCP Port " + inPacket.get_destPort() + " has status \"busy\" from now."); ! Simulation.addLayerInfo(TCP_Info); ! ! //deleting from SegmentsToResend the segmet with the acknowledgment number we have received ! Integer our_ack = (Integer)inPacket.get_acknowledgment_number(); ! Elm.SegmentsToResend.remove(our_ack); ! ! //now we have to send last ACK-segment (with SYN=false, seq_num=1, ack_num=1) ! //we have one received segment so everything we have to do is just to call "mParentStack.sendTCPSegment(listener,msg,flags);" ! String msg=""; ! boolean flags[]={false,true,false,false,false,false}; /* URG, !ACK!, PSH, RST, SYN, FIN */ ! Application listener; ! listener = (Application)Elm.application; ! mParentStack.sendTCPSegment(listener,msg,flags); ! //listener.RecvData(inPacket.getTCP_message()); we do not receive segment because this is a SYN-packet ! ! } else { //we have already received this segment ! Elm.received_duplicates++; ! } ! ! } else ! { ! //NOT SYN-segment ! //check for FIN ! if (inPacket.get_FIN_flag()) ! { ! //FIN flag! Last segment was received. ! //a little test ! if (!(inPacket.get_ACK_flag())) throw new TransportLayerPortException("TCP Error: No ACK flag set in segment!"); ! ! Integer chk = (Integer)inPacket.get_sequence_number(); ! if (!(Elm.ReceivedSegments.contains(chk))) ! { ! Elm.received_segments++; ! Elm.ReceivedSegments.addElement(chk); //adding seq_number that we have received ! // everything is OK now we decompose TCP datagram ! ! //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("TCP FIN-packet with ACK received from "+ inPacket.getSourceIPAddress() + ":" + inPacket.get_srcPort() + "." + " TCP Port " + inPacket.get_destPort() + " has status \"busy\" from now."); ! ! Simulation.addLayerInfo(TCP_Info); ! ! //deleting from SegmentsToResend the segmet with the acknowledgment number we have received ! Integer our_ack = (Integer)inPacket.get_acknowledgment_number(); ! Elm.SegmentsToResend.remove(our_ack); ! ! //now we have to send ACK-segment (with SYN=false, seq_num=XX, ack_num=XX) ! //we have one received segment so everything we have to do is just to call "mParentStack.sendTCPSegment(listener,msg,flags);" ! String msg=""; ! boolean flags[]={false,true,false,false,false,false}; /* URG, !ACK!, PSH, RST, SYN, FIN */ ! Application listener; ! listener = (Application)Elm.application; ! mParentStack.sendTCPSegment(listener,msg,flags); //we have sent last ACK and we can close TCP port now ! listener.RecvData(inPacket.getTCP_message()); ! ! /*NOTE!!!! MAYBE USEFUL TO COMMENT THIS LINE DUE TO THE STATISTIC*/ FreePort(listener); ! ! } else { //we have already received this segment ! Elm.received_duplicates++; ! } ! ! ! } else { ! // no FIN flag, no SYN flag ! //just normal mode. Have to check ACK flag, decompose, send acknowledgement ! ! //a little test ! if (!(inPacket.get_ACK_flag())) throw new TransportLayerPortException("TCP Error: No ACK flag set in segment!"); ! ! Integer chk = (Integer)inPacket.get_sequence_number(); ! if (!(Elm.ReceivedSegments.contains(chk))) ! { ! Elm.received_segments++; ! Elm.ReceivedSegments.addElement(chk); //adding seq_number that we have received ! // everything is OK now we decompose TCP datagram ! ! //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("TCP packet with ACK received from "+ inPacket.getSourceIPAddress() + ":" + inPacket.get_srcPort() + "." + " TCP Port " + inPacket.get_destPort() + " has status \"busy\" from now."); ! ! Simulation.addLayerInfo(TCP_Info); ! ! //deleting from SegmentsToResend the segmet with the acknowledgment number we have received ! Integer our_ack = (Integer)inPacket.get_acknowledgment_number(); ! Elm.SegmentsToResend.remove(our_ack); ! ! //now we have to send ACK-segment (with SYN=false, seq_num=XX, ack_num=XX) ! //we have one received segment so everything we have to do is just to call "mParentStack.sendTCPSegment(listener,msg,flags);" ! String msg=""; ! boolean flags[]={false,true,false,false,false,false}; /* URG, !ACK!, PSH, RST, SYN, FIN */ ! Application listener; ! listener = (Application)Elm.application; ! mParentStack.sendTCPSegment(listener,msg,flags); //we have sent last ACK and we can close TCP port now ! listener.RecvData(inPacket.getTCP_message()); ! ! } else { //we have already received this segment ! Elm.received_duplicates++; ! } ! } ! } ! } else { //have to disconnect listener from port Index: Udp.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/Udp.java,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** Udp.java 26 Nov 2005 14:44:02 -0000 1.28 --- Udp.java 26 Nov 2005 16:11:43 -0000 1.29 *************** *** 231,235 **** { //now we decompose UDP datagram ! // everything is OK, one more test: check sum of UDP packet //Create Layer info --- 231,235 ---- { //now we decompose UDP datagram ! // everything is OK //Create Layer info |