private void assembly_packet(Packet packet)
	{
		if (packet.getTransport() instanceof TCP)
		{
			TCP transport = (TCP) packet.getTransport();
			
			//detectando pacote possivelmente fragmentado
			if (transport.isACK() && (transport.getACK_number() > 1))
			{
				//verifica se o pacote recebido veio na ordem correta
				int offset = transport.getSequence_number();
				if (offset != this.data_offset)
					return;
				
				reply_if_isACK(packet);
				this.assembled += packet.get_data();
				
				if (transport.isFIN() && packet.getApplication() != null)
				{
					packet.set_data(this.assembled);
					packet.setLength(this.assembled.length());
					this.assembled = "";
					this.data_offset = 1;
					if (!packet.getApplication().get_text().startsWith("226")) //PUT nope
						this.agent.notify_agent(packet);
				}
					
			}
		}
	}