code: public final void sendOverWire (final ProtocolDataUnit unit) throws InternetSCSIException , IOException , InterruptedException {
  
          final Session session = connection.getSession();
  
          unit.getBasicHeaderSegment().setInitiatorTaskTag(session.getInitiatorTaskTag());
          final InitiatorMessageParser parser = (InitiatorMessageParser) unit.getBasicHeaderSegment().getParser();
          parser.setCommandSequenceNumber(session.getCommandSequenceNumber());
          parser.setExpectedStatusSequenceNumber(connection.getExpectedStatusSequenceNumber().getValue());
  
          unit.write(socketChannel);
  
          LOGGER.debug("Sending this PDU: " + unit);
  
          // increment the Command Sequence Number
          if (parser.incrementSequenceNumber()) {
              connection.getSession().incrementCommandSequenceNumber();
          }
  
      }
docs: Sends the given <code>ProtocolDataUnit</code> instance over the socket to the connected iSCSI Target.
  
  @param unit The <code>ProtocolDataUnit</code> instances to send.
  @throws InternetSCSIException if any violation of the iSCSI-Standard emerge.
  @throws IOException if an I/O error occurs.
  @throws InterruptedException if another caller interrupted the current caller before or while the current caller
  was waiting for a notification. The interrupted status of the current caller is cleared when this
  exception is thrown.