logo
 Login
Username:

Password:

Remember me



Lost Password?

Register now!
 Main Menu
 Who's Online
3 user(s) are online (1 user(s) are browsing Forum)

Members: 0
Guests: 3

more...
 New Members
bprado 2008/9/14
HAMZAKHAN115 2008/6/20
deviltron 2008/6/11
czaidi 2007/12/21
Moderator 2007/10/24
3Dscorpion 2007/10/7
zubair 2007/9/30
afzalnaj 2007/9/29
YASIR 2007/9/29
wahaj18 2007/9/29
   All Posts


(1) 2 3 4 ... 18 »


Re: What You Need To Know About Modems
Moderator
Joined:
2007/8/30 18:11
From 24°56'9.75"N, 67° 5'41.51"E
Posts: 54
Offline
Good gosh!

Posted on: 12/24 1:44
_________________
Go Ahead! PLAY!
Transfer the post to other applications Transfer


Re: Introduction to Denial of Service
Moderator
Joined:
2007/8/30 18:11
From 24°56'9.75"N, 67° 5'41.51"E
Posts: 54
Offline
Top information!

Posted on: 12/24 1:40
_________________
Go Ahead! PLAY!
Transfer the post to other applications Transfer


Reverse port forwarding with OpenSSH
Home away from home
Joined:
2007/8/31 13:48
From Pakistan
Posts: 334
Offline

SSH is a mighty fine tool, especially OpenSSH.

You can set up local port forwards, so that when you connect to a certain port on localhost, you get tunneled to another host across the galaxy.

I'm going to write a bit about reverse SSH tunneling, also known as reverse port forwarding.

You might want to read briefly on IP and TCP before reading this document - probably a good idea to learn how to utilize a UNIX-style shell too. (That includes the GNU/Linux environment.)

Theory

First, let me clarify what reverse port forwarding really means.

Imagine two computers, one's named "Bird" and the other's named "Hen". Hen is trapped behind a corporate firewall, with zero chance of getting any port forwarding done on any port on any protocol (other than outgoing connections of course).

Now, Hen needs to be accessible from the outside anyway, since Bird could need to access material lying on Hen.

This is where a reverse tunnel comes into play. From Hen, you run a command and Hen connects to Bird and starts listening on a TCP port that you chose. Then, when a connection is made to that port on Bird, Hen actually gets the request.

Still confused? In short, reverse tunneling lets you set up a listening socket on another machine, and when something connects to it, it gets tunneled through that reverse tunnel, back to the host that set the socket up.

Prerequisites

If you haven't already noticed, I'm going to do this with OpenSSH. On most Linux systems, OpenSSH is the SSH daemon running and also the installed SSH client.

To see what version you have, write ssh -V - it should say something about OpenSSH.

It would also be good if you knew a bit about basic networking and sockets.

Implementation

Try it yourself right now, it's fine to do on your local host.

First, the OpenSSH command line syntax for remote forwards.

ssh -N -f -R [li:]lp:ch:cp remote_host

li means local interface, this isn't how the manual describes it, but it's a better way of thinking about it. It's what host the listening socket on the remote machine should bind to, which essentially means from where it should accept connections. This defaults, for obvious reasons, to localhost.

lp means local port, and like above, this is what port the listening socket on the remote host should bind to, and again from where it should accept connections.

ch:cp means connect host and connect port, respectively. When the remote listening socket gets a connection, this is where the connection will be tunneled. You could in fact tunnel it to www.google.com if you wanted to, but we will be using localhost:22 here, because that's where the local SSH daemon is, mostly.

remote_host is the host where the listening socket will be set up, in the theory section this would have been Bird.

-N and -f are optional, but both recommended. -N makes OpenSSH skip executing a command on the remote host, which would be pointless here, and -f makes it go into the background - if we didn't use -f then we'd have an OpenSSH instance still running as long as the tunnel was alive, in the foreground.

So, let's try it on the local host.

ssh -N -f -R 13337:localhost:22 localhost

We've now set up a port forward from 13337 on localhost to localhost on port 22. While this might not seem very valuable, but we'll dig deeper into this in a second.

Practical implementation

So, back to our two computers Hen and Bird. Hen is behind a firewall, with no chance of port forwarding, Bird can accept Internet routable connections on port 22.

Let's say that Bird's address is bird.lericson.se, and Hen's is hen.lericson.se.

Now, on Hen we would run

ssh -N -f -R 19822:localhost:22 bird.lericson.se

If everything went OK, bird.lericson.se should now have a process listening on port 19822, and when anything connects to it, it should be the same as somebody on hen.lericson.se connecting to the local host on port 22. So, somebody at bird.lericson.se might run the following command to log on to hen.lericson.se:

ssh -p 19822 localhost

But it isn't bound to SSH at all, you can tunnel anything you'd like. Say you want a tunnel to the internal web server which is only accessible from inside the corporate firewall, as in from where hen.lericson.se is. What you'd do then is to set up a reverse port forward to the web server, on port 80 - which is HTTP. An example:

ssh -N -f -R 8080:10.0.0.2:80 bird.lericson.se

Now, bird.lericson.se can now access the web server on 10.0.0.2 by connecting to its local host on port 8080.

Failsafe

So, if you got it running by now you'll probably wonder what happens if Hen suddenly reboots or if Bird suddenly reboots or if the link just generally dies?

No problem, what we need to do then is to design a shell script to be ran by a cron daemon whenever the following conditions are met:

  • The cron daemon is running.
  • The time since the last execution of entered command is equal to or more than set time-limit.
  • There is no two concurrent solar eclipses.

What this script would do is check if the link is alive - or well, if the tunnel process is alive - and if it isn't, try to set it up.

Furthermore, this requires that you set OpenSSH up with public key authentication, otherwise you have to enter the password for bird.lericson.se each time the tunnel restarts.

Public key authentication

This is a beautiful contraption, a very beautiful contraption. You'll probably find that you love it unless you already know it, if you do know it, you can skip this section.

First, you need to generate RSA key pairs. From Hen, run ssh-keygen -t rsa. This will generate RSA keys, and when it asks you for where to save it, just hit Enter. If it tells you that this will overwrite existing keys, it's up to you if you want to overwrite your old ID.

It'll now ask you for a passphrase, if you don't want one - just hit Enter twice. Not having one severely lowers security of the key pair, but has the added benefit in what we're going to do: it's automatically used, you don't have to enter any passphrase, because there's none to enter.

Next, open up ~/.ssh/id_rsa.pub on Hen, copy the file's content, connect to Bird, open ~/.ssh/authorized_keys and append the line you copied from ~/.ssh/id_rsa.pub. If you want to have extra security, you can prefix the line you just added with from="1.2.3.*,www.example.com" <rest of the line> to only allow this key to be used from certain hosts, so that if somebody would overcome your key, they must still use the designated IP address.

This is where public key authentication is less attractive. It requires that you run a SSH key agent, a process that just keeps track of your public keys and lets OpenSSH use them. Most desktop environments (XFCE, GNOME, ...) start this agent up by default, so there's no cause for a headache here. Though, if, for some reason, you don't have an agent running, you can manually start it. It is a rather complicated procedure. For basic usage, this suffices:

eval `ssh-agent`

That'll set up the environment for your current session. A duly recommended read for more information is the Gentoo Linux documentation on it. (It's not Gentoo specific as far as I can tell.)

When your agent is up and running, run ssh-add. It will ask you for a passphrase if you set one (which is strongly recommended, and I recommend it to be long.) If it does, just type it in and hit Enter.

If everything up until now went according to plan, you should be able to run this without having to type in a password or passphrase. That is, it should just connect.

ssh bird.lericson.se

If it works, congratulations! If it doesn't, I strongly urge you to read the document linked to above.

Do notice that you can have several keys in .ssh/authorized_keys, just keep it at one per line.

Cron

The cron process is one of the old UNIX-derived things we still have. Cron comes from the word "chronological," or thereof, which in turn comes from Greek's "Chronos," who was said to be the personification of time. In short, the cron process (or crond, cron daemon) runs things at given points in time, over and over. It's like a scheduler.

This serves us pretty well, since we need a failure safe way of reestablishing our link. What you need to do is to set up a cron job that tries to reestablish the link when if it goes down.

This script should work for that purpose

#!/bin/sh
REMOTE_HOST="bird.lericson.se"
LISTEN_PORT=19822

COMMAND="ssh -N -f -R ${LISTEN_PORT}:localhost:22 $REMOTE_HOST"
pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND

Given that you saved this script and want it run each fifth minute, the line you should add to your crontab is

*/5 * * * * /bin/sh /path/to/script.sh

Again, please notice that for this cron-script to succeed, you have to have public key authentication and a valid key. How you choose to get that is up to you, one example would be to have a key without a passphrase and add it or likewise.

Shell-script

Another approach which isn't 100% automatic but more secure (in terms of failure safety), is to manually run a shell loop that tries to set up the tunnel once the tunnel process exits, which allows you to inherit your own environment and thus you only need to enter the passphrase once - which aids security a good deal. Script follows:

#!/bin/sh

REMOTE_HOST="bird.lericson.se"
LISTEN_PORT=19822
COMMAND="ssh -N -R ${LISTEN_PORT}:localhost:22 $REMOTE_HOST"

while true; do
$COMMAND
sleep 60 # Wouldn't want to stress the server too much if the command somehow fails.
done

Save it to any file you like and just run sh path/to/file.sh. As long as the script runs, it'll try to establish the reverse forward tunnel each minute, when it has died for any reason.

 

Written by Ludvig Ericson

taken from: http://lericson.se/docs/reverse-port-forwarding-openssh/


Posted on: 2008/11/27 12:16
_________________
Syed Hasan Atizaz
Transfer the post to other applications Transfer


Re: What You Need To Know About Modems
Home away from home
Joined:
2007/8/31 13:48
From Pakistan
Posts: 334
Offline
Why You May Need to Change the Initialization String

In general, the string AT&F2&C1&D2 should work without any problem. But
there is no guarantee that it will always work. When it does not work,
you'll normally need to change the initialization string to solve the
problems.

Here are a few reasons why the initialization string used by your
communications program may not work:

1. The settings need adjustments to work with the system you are
calling.

Case 1: When I called the Hayes BBS, the modem would abort and failed
to make a connection. It turned out that the default setting (30
seconds) of the S7 register is not long enough for the ATI modem to
make a connection with the Hayes Ultra 96 modem on the other end.

Solution: To establish a connection to the Hayes BBS, I need to add
"S7=60" to the modem initialization string and also change the
setting in the communications software to wait 60 seconds for a
connection.

By initializing the modem with the string AT&F2&C1&D2S7=60, I was
able to connect without any problem. (The default setting for the S7
register is not universal, the Hayes Ultra and Practical Peripheral
use 50 seconds as the default value.) Note that there is nothing
special about the number 60. In my particular case, any number larger
than 45 will work.

Case 2: When I call a system that uses the Telebit T1600 modems, I
cannot make a connection if the ATI modem is set to use V.42bis or
MNP-5. The ATI modem will only connect reliably when it is set to use
MNP-4.

Solution: To connect successfully, I have to set up the modem as V.32
with MNP-4 by sending the string AT&F1&U0 to the ATI modem. (AT&F1
sets the ATI modem as V.32 with MNP-5, &U0 turns off data
compression.)

2. Your communication software may not be compatible with the setting.
For example, America Online implemented an error-correcting scheme in
the software (both the PC and the Mac versions) which is not
compatible with the modem's error correction protocol.

Solution: To use America Online, you need to turn off error control
on the modem. AT&F configures the ATI modem as V.32 without error
control.

3. Your computer hardware may not work with the setting. As I mention
earlier, you need a properly wired cable for the Mac to use hardware
flow control. If you do not have the right cable or if your Mac
simply won't work with the cable, you will need to use software flow
control. (&K4 tells the ATI modem to use software flow control.)

Solution: To use the ATI modem in V.32/V.42bis mode with my Mac, I
need to disable hardware flow control and use XON/XOFF software flow
control instead. The string AT&F2&K4&C1&D2S7=60 sets up the modem
properly (again, S7=60 is for calling the Hayes BBS).

4. You may need to change the setting to achieve better performance. It
is advisable that you turn off MNP-5 while downloading pre-compressed
files from a remote system that has a MNP-5 modem. You can initialize
the ATI modem to turn off MNP-5 data compression with the string
AT&F1&U0.


Again, the initialization string used here is for the ATI modem only. If
you use a different modem, you would need to check with the modem manual
to find out the equivalent commands to use.


Editing the Initialization String

If the initialization string provided by your software does not work (or
if your software does not support your modem at all), you'll need to
edit the initialization string in your communications program.

The modem initialization string consists of a series of commands (called
the AT commands). They can be divided into three groups:

1. A capital character followed by a digit. For example, M1.
2. An ampersand & and a capital character followed by a digit. For
example, &M1. Note that M1 is different from &M1.
3. Sr=n where "r" is the number of the register to be changed and "n" is
the new value that is being assigned. For example, S7=60.

There are some other characters that may also appear in the modem
initialization string. These characters normally should not be changed.

AT tells the modem that modem commands follow.

Z resets the modem to default state

~ makes your software pause for half a second. You can use
more than one ~ in a row. For example, ~~~~ tells the
software to pause two seconds.

^M sends the terminating Carriage Return character to the
modem. This is a control code that most communication
software translate as a "carriage return."


Let's assume that the appropriate initialization string to use is
AT&F2&C1&D2S7=60 (for the ATI modem). You'll need to replace this string
with the one provided by your communications software.

If your software does not support your modem, you can install the
program by telling it that you have a Hayes modem. After the
installation, you'll simply edit the initialization string with the
appropriate one. Please make sure you do not delete any ~ or ^M.

Here are some examples,

1. To change the string provided by Procomm Plus

ATE1 S7=60 S11=60 V1 X1 Q0 S0=0^M

Use the string

AT&F2&C1&D2S7=60^M

2. To edit the string used by Telix

ATZ^M~~~AT S7=45 S0=0 V1 X4^M

change it to

ATZ^M~~~AT&F2&C1&D2S7=60^M

3. To replace the initialization string provided by ZTerm (Macintosh)

ATE1M1 V1^M

use the following string

AT&F2&C1&D2S7=60^M


Match Software Settings To the Modem Settings
Besides using the right initialization string, you also need to make
sure that the settings in your communications program match those of the
modem.

Speed setting

If you have a modem that supports data compression. You want to make
sure that the speed setting for the entries in your dialing directory is
the maximum throughput. Here are the general rules of thumb:

For a V.32bis/V.42bis modem, set speed to 38400 or 57600 bps (check your
modem manual).
For a V.32/V.42bis modem, set speed to 38400 bps.
For a V.32/MNP-5 modem, set speed to 19200 bps.
For a V.22bis/V.42bis modem, set speed to 9600 bps.
For a V.22bis/MNP-5 modem, set speed to 4800 bps.

Note: Your computer may not be fast enough to work reliably at 38400 or
57600 bps. Also, the communications programs you use may not support
speed higher than 19200 bps.


Hardware flow control

Note that you will need to configure your software to use hardware
handshaking if the modem is initialized to use hardware flow control.


Dialing Time-out Value

Independent from your modem setting, your software may also impose a
limit on how long it will wait for a connection. If you initialize the
modem with the command S7=60, you'll need to change the time-out value
used by your software to 60 seconds accordingly.

Configuring Popular Communications Software to Work with High-speed Modems

Below are brief instructions for configuring some popular communications
programs to work with a high-speed modem. The particular initialization
string is for the ATI 9600etc/e modem. It is assumed that the
appropriate initialization string to use is AT&F2&C1&D2S7=60.

Make sure you save the changes you make.


Procomm Plus 2.0

To change the modem initialization string: (Global, i.e. it works with
every dialing entry)
1. Load Procomm, press Alt-S
2. Select Modem Options
3. Select Modem Commands
4. Press A
5. Change the initialization string to AT&F2&C1&D2S7=60^M

To set the software to wait 60 seconds for connection: (Global)
1. Load Procomm, press Alt-S
2. Select Modem Options
3. Select General Options
4. Press A
5. Type 60 and press Return

To enable hardware flow control: (Global)
1. Load Procomm, press Alt-S
2. Select Terminal Options
3. Press D (hardware flow control)
4. Press Space Bar to toggle, press Return to accept
5. Press C (software flow control)
6. Press Space Bar to toggle, press Return to accept

Telix

To change the modem initialization string: (Global)
1. Press Alt-O
2. Select Modem and dialing
3. Select A (Init String)
4. Change the initialization string to ATZ^M~~~AT&F2&C1&D2S7=60^M

To set the software to wait 60 seconds for connection: (Global)
1. Press Alt-O
2. Select Modem and dialing
3. Select K (Dial time) and enter 60 press Return

To enable hardware flow control (Global)
1. Press Alt-O
2. Select Terminal options
3. Press J (XON/XOFF software flow control)
4. Select Off
5. Select K (CTS/RTS hardware flow control)
6. Select On
7. Press ESC to exit

Qmodem

To change the modem initialization string: (Global)
1. Press Alt-N
2. Press M to select Modem menu
3. Select Modem Commands
4. Press Return
5. Change the initialization string to AT&F2&C1&D2S7=60^M

To set the software to wait 60 seconds for connection: (Global)
1. Press Alt-N
2. Press M to select Modem menu and Press Return to select Communication
Parameters
3. Press H to select Timeout delay
4. Type 60 and press Return
5. ESC to exit

To enable hardware flow control: (Global)

1. Press Alt-N
2. Select Toggles
3. Press Return to toggle XON/XOFF flow
4. Select CTS/RTS flow
5. Press Return to toggle
6. ESC
7. ESC
8. Press E for Exit
9. Save Changes


HyperAccess 5

Note: HyperAccess 5 supports the ATI 9600etc/e. However, HyperAccess 5 does
not let you edit the initialization string directly. You can add additional
setup commands to change the modem settings for each individual dialing
entry.

To change the modem initialization string: (Individual, i.e. it works
only with the particular dialing entry)
1. Select Define system settings from the Main menu
2. Select Modify
3. Use cursor to select the system to modify and press Enter
4. Select Hardware from the System settings menu
5. Select Modem
6. Select Additional modem setup commands
7. Type S7=60
8. Press ESC twice to go back the Main menu

To set the software to wait 60 seconds for connection:
N/A

To enable hardware flow control: (Individual)
1. Select Define system settings from the Main menu
2. Select Modify
3. Use cursor to select the system to modify and press Enter
4. Select Hardware from the System settings menu
5. Make sure that Data terminal ready signal is output on DTR, delete
RTS if it is listed
6. Select Communications port
7. Select Incoming hardware handshaking and type CTS
8. Select Outgoing hardware handshaking and type RTS


Crosstalk for Windows

To change the modem initialization string: (Global)
1. Pull down Setup menu and select Modem...
2. Select Custom and click on Settings
3. Change the initialization string to ^M~AT&F2&C1&D2S7=60^M
4. Click OK

To set the software to wait 60 seconds for connection: (Individual)
1. Pull down File menu and select Open a phone book entry
2. Open the phone book entry
3. Pull down Setup menu and select Session
4. Click on More
5. Change the value in Allow xx seconds for the host to answer

To enable hardware flow control: (Individual)
1. Pull down File menu and select Open a phone book entry
2. Open the phone book entry
3. Pull down Setup menu and select Device
4. Click on RTS/CTS and click OK


MicroPhone II (for Macintosh)

To change the modem initialization string: (Individual)
1. Choose Settings Menu
2. Select Communications
3. Choose V.32 Standard from the Modem Driver list box
4. Click OK
5. Hold down the Command key and choose Scripts menu
6. Select Modify Script
7. Click the Modem Scripts button
8. Double-click on Modem_Init
9. Double-click on the first line that says
Set Variable * mcmd from Expression "'AT....'"
10. Change the initialization string in the lower right box to
'AT&F2&C1&D2S7=60^M'
11. Double-click on the second line that says
Set Variable * mcmd from Expression "'AT....'"
12. Change the initialization string in the lower right box to
'AT&F2&C1&D2S7=60^M'
13. Click OK
14. Press the Option key and choose the File menu
15. Select Save Modem Driver (If you want to save the driver under a new
name, select Save Modem Driver As... in the File Menu. Name the new
driver, and save it into the Modem Folder.)

To set the software to wait 60 seconds for connection:
N/A

To enable hardware flow control: (Individual)
1. Pull down Settings Menu
2. Select Communications
3. Click on the Hardware Handshake box

ZTerm (for Macintosh)

To change the modem initialization string: (Global)
1. Choose Settings Menu and select Modem
2. Change Init String to AT&F2&C1&D2S7=60^M

To set the software to wait 60 seconds for connection: (Individual)
1. Choose Settings Menu and select Modem
2. Edit Dial Timeout

To enable hardware flow control: (Global)
1. Choose Settings Menu and Select Flow Control
2. Uncheck Xon-Xoff Receive
3. Uncheck Xon-Xoff Send
4. Check HW Handshake


Other Settings for Your Communications Software

Telephone Number

Online services use different phone numbers for different kinds of
modems. To get the best throughput, make sure you dial the right phone
number. Note that many bulletin board systems do not allow calling their
high-speed modem lines with 2400 bps modems. You would be disconnected.

For example:
EXEC-PC, the largest BBS in the United States, has the following
telephone numbers:

#1: Standard 2400 bps modems 414-789-4210
#2: US Robotics HST 9600 MNP5 414-789-4337
#3: US Robotics HST 14400 & V.32/V.42bis/MNP5 414-789-4352
#4: US Robotics V.32bis/V.42bis & HST 414-789-4360
#5: CompuCom Speedmodem 9600 MNP5 modems 414-789-4450
#6: Hayes 9600B V-series modems, NON-V.32 414-789-4315


If you have a 9600 bps HST modem, call #2.
If you have a 14400 bps HST modem, call #3 or #4. You can also call #2
but you won't be able to get the best throughput.
If you have a V.32 modem, call #3 or #4.
If you have a V.32bis modem, call #4. You can also call #3 but you won't
get the best throughput.
If you have a CompuCom SpeedModem Champ, call #5
If you have a CompuCom SpeedModem Storm, call #3 or #4 (V.32), #5 (CSP)
If you have a CompuCom SpeedModem Star, call #4 (V.32bis), you can also
call #3 or #5 but you can only connect at 9600 bps.
If you have a Hayes V-series Smartmodem 9600 (or 9600B) modem, call #6.


Dial String: ATDT

You don't have change the dialing string unless you use a PBX system or
have call waiting service.
PBX
If you have to dial the digit 9 to obtain an outside line, Use ATDT9,
(the comma , instructs the modem to pause two seconds). This allows
enough time for the dial tone to occur before the modem dials. You can
use as many commas as you like.
Call Waiting
Call waiting service will disrupt modem sessions. If your telephone
company supports the ability to disable call waiting, use the dial
string ATDT*70, (make sure you add the comma ,) instead of ATDT.

ATDT*70,123-4567

Also, adding 1170 after the ATDP dial command can be used to disable
call-waiting on some pulse-dialing phone systems. Check with your phone
company to see if these features are supported.


8-N-1 or 7-E-1 (data bits-parity-stop bits)

In general, set the parameters to 8-N-1. If you are calling a commercial
online service (such as GEnie), you may need to set the parameters to
7-E-1.

Half vs. Full Duplex: Local Echo

The only popular on-line service that uses half duplex is GEnie.

Terminal Emulation

If you are using an IBM compatible, choose IBM PC or ANSI.
Otherwise, try VT102, VT100, VT52, TTY.

Comm Port

For your computer to talk to your modem, you need to tell the software
where to find the modem. If you use a PC with an external modem, you
need to specify which serial port the modem is connected to. If you have
an internal modem, you need to configure the modem and tell the software
which COM port the modem is configured for.

If you use a Macintosh, specify whether your modem is connected to the
modem port or the printer port.

File Transfer Protocols
Errors that occur during file transfer are automatically detected and
corrected by file transfer protocols. If a block of data is received
incorrectly, the receiving system sends a message to the sending system
and requests the re-transmission. This process is automatic. When errors
occur during file transfer, the communication program shows an error in
the file transfer status window.

ASCII

This is designed to work with ASCII text files only. Notice that you do
not have to use this protocol when transferring text files. The ASCII
protocol is useful for uploading a text file when you are composing
e-mail online.

Xmodem

Xmodem is one of the most widely used file transfer protocols. The
original Xmodem protocol uses 128-byte packets and a simple "checksum"
method of error detection. A later enhancement, Xmodem-CRC, uses a more
secure Cyclic Redundancy Check (CRC) method for error detection. Xmodem
protocol always attempts to use CRC first. If the sender does not
acknowledge the requests for CRC, the receiver shifts to the checksum
mode and continues its request for transmission.

Xmodem-1K

Xmodem 1K is essentially Xmodem CRC with 1K (1024 byte) packets. On some
systems and bulletin boards it may also be referred to as Ymodem. Some
communication software programs, most notably Procomm Plus 1.x, also
list Xmodem-1K as Ymodem. Procomm Plus 2.0 no longer refers to Xmodem-1K
as Ymodem.

Ymodem

Ymodem is essentially Xmodem 1K that allows multiple batch file
transfer. On some systems it is listed as Ymodem Batch.

Ymodem-g

Ymodem-g is a variant of Ymodem. It is designed to be used with modems
that support error control. This protocol does not provide software
error correction or recovery, but expects the modem to provide the
service. It is a streaming protocol that sends and receives 1K packets
in a continuous stream until instructed to stop. It does not wait for
positive acknowledgement after each block is sent, but rather sends
blocks in rapid succession. If any block is unsuccessfully transferred,
the entire transfer is canceled.

Zmodem

This is generally the best protocol to use if the electronic service you
are calling supports it. Zmodem has two significant features: it is
extremely efficient and it provides crash recovery.

Like Ymodem-g, Zmodem does not wait for positive acknowledgement after
each block is sent, but rather sends blocks in rapid succession. If a
Zmodem transfer is canceled or interrupted for any reason, the transfer
can be resurrected later and the previously transferred information need
not be resent.

Kermit

Kermit was developed at Columbia University. It was designed to
facilitate the exchange of data among very different types of computers
(mainly minicomputers and mainframes). You probably will not need to use
Kermit unless you are calling a minicomputer or mainframe at an
educational institution.

Sealink

Sealink is a variant of Xmodem. It was developed to overcome the
transmission delays caused by satellite relays or packet-switching
networks.

Which file transfer protocol should you use?

In general, I recommend Zmodem. If Zmodem is not supported by the system
you are calling, use Ymodem-g. (If you are connecting to a UNIX system
in a university, you may have to use Kermit or Xmodem to transfer
files.)

Here are the test results obtained by downloading the files using
various file transfer protocols. The number before the parentheses is
the transfer speed (in cps) and the number in the parentheses is the
time elapsed (in seconds).

Protocol Xmodem Xmodem-1K Ymodem Ymodem-g Zmodem
---------------------------------------------------------------------
the-wave.txt 429(334) 1508(95) 1527(94) 3261(44) 3296(43)
dayrpt.arc 314(26) 758(11) 761(11) 1042(8) 1025(8)
dayrpt.wks 415(47) 1252(15) 1244(15) 2314(8) 2337(8)
sunset.arc 337(15) 771(6) 745(6) 987(5) 965(5)
sunset.pic 399(41) 1337(12) 1297(12) 2594(6) 2588(6)
text109k.arc 343(86) 817(36) 814(36) 1089(27) 1064(27)
text109k.txt 410(271) 1379(80) 1351(82) 2812(39) 2885(38)



************************************************************************
Appendix A: Resources
Here is a list of selected modem manufacturers.
Manufacturer Information Tech Support Support BBS
--------------------------------------------------------------------------
ATI Technologies (416) 756-0718 (416) 756-0711 (416) 756-4591
Cardinal (800) 233-0187 (717) 293-3124 (717) 293-3074
Compucom (800) 228-6648 (408) 732-4500 (408) 738-4990
Hayes (404) 441-1617 (404) 441-1617 (800) 874-2937
Image Communications (201) 935-8880 (201) 935-8880 n/a
Intel (800) 538-3373 (503) 629-7000 (503) 645-6275
Microcom (800) 822-8224 (617) 551-1313 (617) 551-1655
Multi-Tech (800) 328-9717 (800) 328-9717 (612) 785-9875
Practical Peripherals (800) 442-4774 (818) 991-8200 (818) 706-2467
Prometheus (800) 477-3473 (503) 624-0571 (503) 691-5199
Supra (800) 727-8772 (503) 967-2440 (503) 967-2444
Telebit (800) 835-3248 (800) 835-3248 n/a
U.S. Robotics (800) 342-5877 (800) 982-5151 (708) 982-5092
Zoom (800) 666-6191 (617) 423-1076 (617) 451-5284
Support BBS for Communications Programs
--------------------------------------------------------------------------
Procomm Plus (Datastorm Technologies, Inc.) (314) 875-0523
Telix (Exis Inc.) (416) 439-9399
Qmodem (The Forbin Project, Inc.) (319) 233-6157
HyperAccess 5 (Hilgraeve Inc.) (313) 243-5915
Crosstalk for Windows (DCA) (404) 740-8428
MicroPhone II (Software Ventures) (415) 849-1912
ZTerm n/a
************************************************************************
Appendix B: How to reach the author
If you have any comments or suggestions, I'll love to hear from you. You can
reach me via
America Online: Pat Chen
CompuServe: 70754,3162
DELPHI: POC
FidoNet: 1:161/444.38
GEnie: p.chen2
MCI Mail: 445-6669
Internet: 445-6669@mcimail.com
70754.3162@compuserve.com
pchen@cup.portal.com
U.S. Mail: Patrick Chen
P.O. Box 5325
Irvine, CA 92716

************************************************************************

Posted on: 2008/10/21 7:12
_________________
Syed Hasan Atizaz
Transfer the post to other applications Transfer


What You Need To Know About Modems
Home away from home
Joined:
2007/8/31 13:48
From Pakistan
Posts: 334
Offline
-----------------------------------------------------------------------------

What You Need To Know About Modems

December 25, 1991
Version 1.0
------------------------------------------------------------------------------
Copyright (c) 1991 Patrick Chen. All rights reserved.
Distribution Notice: This document may be distributed by electronic bulletin
boards and commercial on-line services. This document may not be edited or
changed in any way for redistribution.

This article is Part One of a three-part report entitled "The Joy of
Telecomputing." As a plain ASCII file, it cannot contain any of the
illustrations and graphic elements provided in the printed version. For
further information about "The Joy of Telecomputing," see Appendix C.

This article should be useful to anyone interested in high-speed modems (or
2400 bps modems with MNP-5 or V.42bis). Most modems mentioned in this article
are external units. These modems can be used on any microcomputer system, be
it a PC, a Macintosh or an Amiga. Although only certain communication programs
are used as examples, the discussions about setting up software apply to
packages not covered herein.
It is assumed that the reader knows the basics about going online. For
example, we would not discuss how to connect an external modem to your
computer, nor would we explain what 8-N-1 means.
This file is in the IBM ASCII format. Each line ends with a linefeed and a
carriage return. If you use a Macintosh, open the file with a text editor and
get rid of the linefeeds. (I recommend McSink, a shareware text editor widely
available. Just launch McSink and open the file, then choose the Convert menu
and select Strip Linefeeds.)
To print this document, use a 10-pitch (12 characters per inch) mono-spaced
font such as Courier.
Every effort has been made to supply complete and accurate information.
However, information contained herein is subject to change without notice and
should not be construed as a commitment by the author who assumes no
responsibilities for any errors that may appear.
Trademarks: The author has attempted throughout this document to distinguish
proprietary trademarks from discriptive terms by following the capitalization
style used by the manufacturer.
-----------------------------------------------------------------------------
CONTENTS
Introduction
Modulation Protocols
2400 bps modems
High-speed modems
V.32
V.32bis
U.S. Robotics HST
Telebit PEP
Hayes Express 96
CompuCom CSP
Things to come
V.fast
ISDN
Error Control Protocols
V.42 and MNP-4
V.42 & MNP-4 can provide error-free connections
V.42 and MNP-4 can improve throughput
Are MNP 4/V.42 useful?
Data Compression Protocols
MNP-5 & V.42bis
Are MNP-5 & V.42bis useful?
Compression by Software vs. MNP-5/V.42bis
Local Flow Control and Data Buffering
Macintosh and high-speed modems
PC and UART
Profiles of High-speed modems
ATI 9600etc/e
CompuCom SpeedModem Champ/Star/Storm
Hayes modems
Image Communications: Twincom 96/42
Intel 9600EX & 14.4EX
Practical peripherals PM9600SA & PM9600
Prometheus modems
Telebit modems
U.S. Robotics modems
Zoom V.32 Turbo Modems
Things to come
Buying a High-speed Modem
Should you pay the extra for a V.32bis modem?
Should you buy a modem with a proprietary modulation protocol?
Should you buy a 2400 bps modem with V.42bis?
Beware of the ads
Setting Up Software to Work with High-speed Modems
The Proper Software Setup
Does Your Software Initialize the Modem Properly?
Does Your Software Configure Itself to Match the Modem Settings?
Why You May Need to Change the Initialization String
Editing the Initialization String
Match Software Settings To the Modem Settings
Configuring Popular Communications Software to Work with High-speed Modems
Procomm 2.0
Telix
Qmodem
HyperAccess 5
Crosstalk for Windows
MicroPhone II (for Macintosh)
ZTerm (for Macintosh)
Other Settings for Your Communications Software
Telephone Number
Dial String: ATDT
8-N-1 or 7-E-1 (data bits-parity-stop bits)
Half vs. Full Duplex: Local Echo
Terminal Emulation
Comm Port
File Transfer Protocols
ASCII
Xmodem
Xmodem-1K
Ymodem
Ymodem-g
Zmodem
Kermit
Sealink
Which file transfer protocol should you use?
Appendix A: Resources
Appendix B: How to reach the author
Appendix C: About "The Joy of Telecomputing"



-------------------------------------------------------------------------
Introduction

Buying and using a modem used to be relatively easy. Not so long ago,
almost all modems are 1200 or 2400 bps units and they are all compatible
with the Hayes Smartmodems (although some are more Hayes-compatible than
others). How time has changed.

Today, modems not only run faster, they are also loaded with features
like error control and data compression. Suddenly, you are confronted
with all the buzzwords: V.32, V.32bis, V.42, V.42bis, MNP-5, LAP-M, etc.
What do they mean? And what do they mean to you?

To make the most of a high-speed modem, you need to understand three
different kinds of protocols and the relationships among them. They are
the modulation protocols, error control protocols and data compression
protocols.

Modulation Protocols

Modem stands for MOdulator/DEModulator. A modem converts digital signals
generated by the computer into analog signals which can be transmitted
over a telephone line and transforms incoming analog signals into their
digital equivalents.

The specific techniques used to encode the digital bits into analog
signals are called modulation protocols. The various modulation
protocols define the exact methods of encoding and the data transfer
speed. In fact, you cannot have a modem without modulation protocols. A
modem typically supports more than one modulation protocols.

The raw speed (the speed without data compression) of a modem is
determined by the modulation protocols. High-speed modems are modems
that feature modulation protocols at 9600 bps or higher. A 2400 bps
modem with data compression that can theoretically yield a 9600 bps
throughput is not a high-speed modem.

"CCITT" is a French acronym for the International Telegraph and
Telephone Consultative Committee. CCITT, a United Nations agency, is an
international telecommunications standards committee that makes
recommendations on a broad range of subjects concerning data
communications.

2400 bps Modems

A 2400 bps Hayes-compatible modem typically supports the following
modulation protocols:

Bell 103 (300 bps U.S. Standard)
Bell 212A (1200 bps U.S. Standard)
CCITT V.22 (1200 bps standard used outside the U.S.)
CCITT V.22bis (2400 bps International Standard)

Some 2400 bps modems also support the following protocols:

CCITT V.21 (300 bps standard used outside the U.S.)
CCITT V.23 (1200/75 and 75/1200 bps, used in Europe)

In the past, most 2400 bps modems do not support any error correction or
data compression protocols. Recently, however, many modem manufacturers
have introduced 2400 bps modems with extra features like data
compression, error correction and fax capability.

High-speed Modems

There are two standard modulation protocols for high-speed modems: V.32
and V.32bis. Both are standards established by the CCITT.

V.32

This is the standard for 9600 (and 4800) bps modems. CCITT V.32 is
adopted by the CCITT in 1984. But the market has not taken off until
recently. V.32 modems used to cost more than modems using proprietary
modulation protocols (Hayes introduced the Smartmodem 9600, a V.32
modem, in 1988 with a $1999 price tag). But it is no longer true. At
present, street prices for most V.32 modem are below $500. Every modem
manufacturer is making V.32 modems now. Packet-switching networks like
Sprintnet (Telenet) and CompuServe are also starting to support V.32
modems. Companies that make modems with proprietary modulation protocols
are making modems with "dual standard." U.S. Robotics, Telebit, Hayes
and CompuCom all have modems that support V.32 and their own proprietary
protocols.

V.32bis

V.32bis, established in early 1991, is the CCITT standard for 14400 bps
modems. A V.32bis modem also can fall back to 12000, 9600, 7200 and 4800
bps. V.32bis is downwardly compatible with V.32.

Unlike 2400 bps modems where a single modulation protocol (V.22bis) is
supported by all modem makers, there are several proprietary modulation
protocols used by modems from different manufacturers.

U.S. Robotics HST (High Speed Technology)

Until the recent surge of V.32 modems, the U.S. Robotics HST was the de
facto standard in the PC-based BBS community. U.S. Robotics introduced
the Courier HST modem in 1986 and pioneered the market for high-speed
modems in the IBM PC environment. The immense popularity of the HST
modems was partly due to the generous discount program U.S. Robotics
offered to the BBS Sysops (SYStem OPerators). Many modem manufacturers
have implemented similar Sysop discount programs, but most BBS sysops
remain loyal to the U.S. Robotics modems.

The original Courier HST modem ran at 9600 bps. U.S. Robotics later
improved the speed of the Courier HST to 14400 bps.

Although U.S. Robotics remains committed to the HST modems, there are
now three different high-speed Courier modems available: the Courier HST
(which only supports the HST protocol), the Courier V.32bis (which only
supports V.32bis) and the Courier HST Dual Standard (which supports both
the HST and the V.32bis protocols).

Telebit PEP (Packetized Ensemble Protocol)

Telebit introduced the TrailBlazer in 1985 that employed a proprietary
modulation protocol called PEP. While the Courier HST is popular among
BBS, Telebit modems dominate the UNIX UUCP and Usenet communities.
(Usenet, UUCP and the Internet are discussed in Part II of "The Joy of
Telecomputing".

The TrailBlazer Plus owes its success partly to its built-in support for
the UUCP g-protocol, thus allowing efficient and flawless UUCP session.
PEP also performs well even with noisy telephone lines. The actual
throughput is around 14400 bps. The TrailBlazer Plus has an installed
base of more than 120,000 units.

Telebit also introduced a cheaper (and slower) PEP modem, the T1000, in
1988.

Hayes Express 96

Hayes entered the high-speed modem arena in 1987 with the introduction
of the V-series Smartmodem 9600. The modem used a proprietary modulation
protocol called Express 96 (also known as Hayes "Ping Pong" protocol).
The V-series modems have not been as successful as the U.S. Robotics or
the Telebit modems.

CompuCom CSP (CompuCom Speed Protocol)

While every modem manufacturer is jumping on the V.32 bandwagon,
CompuCom bucked the trend and came out with the SpeedModem Champ in
early 1991. It's a 9600 bps modem with a proprietary modulation
protocol called CSP. The SpeedModem Champ has one strong selling point.
It is the only modem with a proprietary protocol that costs less than a
generic V.32 modem. The internal SpeedModem Champ is priced at $169. An
external version is available for $199. Hundreds of PC-based bulletin
board systems have installed the SpeedModem Champ. The Champ also works
as a Hayes-compatible 2400 bps modem with MNP 2-4 error control and
MNP-5 data compression.

Two modems can establish a connection only when they share a common
modulation protocol. To connect at high speed, two modems have to
support the same high-speed modulation protocol. Therefore, a modem with
a proprietary modulation protocol can only establish a high-speed
connection with another modem from the same manufacturer. A U.S.
Robotics HST modem can only establish a high-speed connection (at 9600
or 14400 bps) with another HST or an USR Dual Standard modem. A Courier
HST modem cannot establish a high-speed connection with a Courier
V.32bis modem. They can only connect at 2400 bps. (All high-speed modems
in the market support the CCITT V.22bis modulation protocol).

On the other hand, two V.32 modems can talk to each other at 9600 bps.
They do not have to be from the same manufacturer. Two V.32bis modems
can talk to each other at 14400 bps. A V.32 modem can talk to a V.32bis
modem at 9600 bps.


Things to come

V.fast
CCITT is working on a new modem standard, dubbed V.fast. If all goes
well, the next modem standard can materialize before 1993. A V.fast
modem is expected to reach a raw speed of 19,200-24,000 bps over
standard dial-up telephone lines.

ISDN
In a couple of years we may not need modems at all. Integrated Services
Digital Network (ISDN) has been coming for years. When will ISDN really
become available for the rest of us? It depends on your local telephone
company. It is estimated that by the end of 1994 about half the
telephone connections in the U.S. will has access to it. With ISDN, you
won't need a modem since no modulation or demodulation will be
necessary. You will need an ISDN adapter instead.

An ISDN line carries three digital channels: two "B" channels that carry
various kinds of data at 64,000 bps and a "D" channel at 16,000 bps that
can carry control signals or serve as a third data channel.

A single ISDN channel can transfer uncompressed data bidirectionally at
64,000 bps. Combine that with a data compression scheme and you will be
able to transfer data at hundreds of kilobits per second.

Eventually, ISDN will provide widely available, low-cost digital
communications for voice and data communication. Until ISDN is firmly in
place, high-speed modems will be with us for a while.

Error Control (Error-Correcting, Error Correction) Protocols

Besides high-speed modulation protocols, all current models of
high-speed modems also support error control and data compression
protocols.

V.42 and MNP-4

There are two standards for error control protocols: MNP 4 and V.42. The
Microcom Networking Protocol, MNP, is developed by Microcom. MNP 2 to 4
are error correction protocols. MNP-5 is a data compression protocol.
V.42 is established by CCITT. V.42 actually incorporates two error
control schemes. V.42 uses LAP-M (Link Access Procedure for Modems) as
the primary scheme and includes MNP-4 as the alternate scheme.
Therefore, a V.42 modem will be able to establish an error-controlled
connection with a modem that only supports MNP 4.

A modem that uses a proprietary modulation protocol may also use a
non-standard error control protocol. For example, Hayes V-series
Smartmodem 9600 supports an error control protocol called LAP-B.
CompuCom's SpeedModem Champ also uses a non-standard error control
protocol.


V.42 & MNP-4 can provide error-free connections

Modems without error control protocols, such as most 2400 bps
Hayes-compatible modems, cannot provide error-free data communications.
The noise and other phone line anomalies are beyond the capabilities of
any standard modem to deliver error-free data.

V.42 (and MNP 2-4) copes with the phone line impairments by filtering
out the line noise and automatically retransmitting corrupted data. If
you have used a standard Hayes-compatible modem, you probably notice
some garbled characters (like "@8d_\nw`[ce" show up on your screen from
time to time. When two modems establish an error-controlled connection,
they are said to have a reliable link and are capable of filtering out
those garbled characters caused by the line noise. Notice that the line
noise is still there, it just does not show up on your screen or the
screen on the remote system.

The filtering process used by V.42 (and MNP 2-4) is similar to the error
correction scheme used by file transfer protocols (such as Xmodem). The
two modems use a sophisticated algorithm to make sure that the data
received match with the data sent. If there is a discrepancy, the data
is resent.

What is the difference between error control protocols (such as V.42)
and file transfer protocols (such as Xmodem)?

For one thing, file transfer protocols provide error detection and
correction only during file transfers. File transfer protocols do not
provide any error control when you are reading e-mail messages or
chatting with other people online. In other words, an error control
protocol is "on" all the time during your online session and file
transfer protocols are "on" only some of the times, namely when you are
sending or receiving files.

Even though an error control protocol is "on" all the time, we still
need file transfer protocols when two modems establish a reliable link.
A modem works with bit streams, timing and tones. It does not understand
what a file is. When you download or upload a file, your communications
software needs to take care of the details related to the file: the
filename, file size, etc. This is handled by the file transfer protocol
which does more than error-checking.

Some file transfer protocols, most notably Ymodem-g and Imodem, are
developed to handle file transfer without performing any error-checking.
The idea of using a protocol like Ymodem-g is to eliminate the
redundancy thus improve the transfer speed. Ymodem-g and Imodem should
only be used with modems that provide built-in error control protocols.
These file transfer protocols do not provide any error-detection or
recovery capability. If a problem occurs during the file transfer, the
transfer session will be aborted.

Protocols like Ymodem-g or Imodem depend on the modems to provide
assurance for the integrity of data being transferred. However, you
should know that a reliable link between two modems does not provide
absolute guarantee for the data integrity during file transfer. When you
call a remote computer, there are really three links involved in the
process. Besides the link between the two modems, there are still one
link between your computer and your modem and another link between the
remote modem and the remote computer. When two modems make a reliable
connection using V.42 or MNP 4, only the data integrity between the two
modems is ensured. It is still possible for errors to occur at either
end between the serial port and the modem (in the cable) or in the
computer itself. (Fortunately, such errors are rare.)

For extra protection, you may still want to use a file transfer protocol
- such as Zmodem - which also performs error checking even if you have a
reliable link with the remote system. There is a common misconception
that Ymodem-g is much faster than other file transfer protocols.
Although Ymodem-g is significantly faster than Ymodem, it offers little
over Zmodem. Zmodem has proven to be extremely efficient. (See benchmark
below)


Filename Ymodem Ymodem-g Zmodem
-------------------------------------------------------
the-wave.txt 1527 cps 3261 cps 3296 cps
dayrpt.arc 761 1042 1025
dayrpt.wks 1244 2314 2337
sunset.arc 745 987 965
sunset.pic 1297 2594 2588
text109k.arc 814 1089 1064
text109k.txt 1351 2812 2885


Note: The seven test files used throughout this article are available
on the Hayes BBS (800-874-2937). It is an excellent source for
information about Hayes products. The BBS also provides a database
for thousands of BBS in the U.S. Best of all, it is free.

Unless noted otherwise, the results are obtained by using the
following:

Computer: Mac SE with Mobius Two Page Display with 68030 accelerator
Modem: ATI 9600etc/e (the modem is set as V.32 with V.42bis enabled)
Operating System: System 7.0
Communication Software: ZTerm (Comm port speed set to 38400 bps)
File Transfer Protocol: Zmodem

All results are reported by ZTerm. (I use several communication
programs on both IBM PC and Mac. All of them show the average
throughput while file transfer is in progress, but ZTerm actually
produces a report after the transfer is completed).


V.42 & MNP-4 can improve throughput

The other benefit of V.42 (or MNP 4) is that it can improve throughput.
Before sending the data to a remote system, a modem with V.42 (or MNP 4)
assembles the data into packets and during that process it is able to
reduce the size of the data by stripping out the start and stop bits.

A character typically takes up 1 start bit, 8 data bits and 1 stop bit
for a total of 10 bits. When two modems establish a reliable link using
V.42 or MNP 4, the sending modem strips the start and stop bits (which
subtracts 20% of the data) and sends the data to the other end. The
receiving modem then reinserts the start and stop bits and pass the data
to the remote computer.

Therefore, even without compressing the data you can expect to see as
much as 1150 characters per second on a 9600 bps connection. (Although
the modem subtracts 20% of the data, the speed increase is less than 20%
due to the overhead incurred by the error control protocol.) Here are
the test results obtained by downlaoding the same file (1) without any
error control protocol, (2) with MNP-4, and (3) with V.42. No data
compression protocol is used.


Filename No EC MNP-4 V.42
------------------------------------------------------------------
the-wave.txt 935 cps 1151 cps 1128 cps
dayrpt.arc 863 1023 1002
dayrpt.wks 898 1071 1052
sunset.arc 838 971 953
sunset.pic 903 1080 1065
text109k.arc 908 1085 1064
text109k.txt 937 1150 1127



Are MNP4 and V.42 useful?
Absolutely. Anyone that has ever used a standard modem can appreciate
the benefit of an error-free connection. And the increase in data
throughput, though modest, is nothing to sneeze at.


Data Compression Protocols

Besides error control protocols, all current high-speed modems also
support data compression protocols. That means the sending modem will
compress the data on-the-fly and the receiving modem will decompress the
data to its original form.

MNP-5 and V.42bis

There are two standards for data compression protocols, MNP-5 and CCITT
V.42bis. Some modems also use proprietary data compression protocols.

A modem cannot support data compression without utilizing an error
control protocol, although it is possible to have a modem that only
supports an error control protocol but not any data compression
protocol. A MNP-5 modem requires MNP 4 error control protocol and a
V.42bis modem requires V.42 error control protocol.

Also note that although V.42 include MNP-4, V.42bis does not include
MNP-5. However, virtually all high-speed modems that support CCITT
V.42bis also incorporate MNP-5.

The maximum compression ratio that a MNP-5 modem can achieve is 2:1.
That is to say, a 9600 bps MNP-5 modem can transfer data up to 19200
bps. The maximum compression ratio for a V.42bis modem is 4:1. That is
why all those V.32 modem manufacturers claim that their modems provide
throughput up to 38400 bps.

Are MNP-5 and V.42bis useful?

Don't be fooled by the claim. It is extremely rare, if ever, that you
will be able to transfer files at 38400 bps. In fact, V.42bis and MNP-5
are not very useful when you are downloading files from online services.
Why?

How well the modem compression works depends on what kind of files are
being transferred. In general, you will be able to achieve twice the
speed for transferring a standard text file (like the one you are
reading right now). Decreasing by 50% means that you can double the
throughput on the line so that a 9600 bps modem can effectively transmit
19200 bps.

V.42bis and MNP-5 modem cannot compress a file which is already
compressed by software. In the case of MNP-5, it will even try to
compress a precompressed file and actually expand it, thus slow down the
file transfer! Here are the test results obtained by downloading the
three compressed files using (1) MNP-4 without data compression, (2)
MNP-5, (3) V.42 without data compression, and (4) V.42bis.


Filename MNP-4 MNP-5 V.42 V.42bis
-------------------------------------------------------------------
dayrpt.arc 1023 cps 946 1002 1010
sunset.arc 971 935 953 950
text109k.arc 1085 988 1064 1053



If you have ever downloaded files from a BBS or online service, you know
that almost all files are in a compressed format. Therefore, you should
only expect to see an actual throughput between 950 to 1100 cps even if
your V.32/V.42bis modem is supposed to offer throughput "up to" 38400
bps.

Most PC files are in the ZIP format. Macintosh files are typically in
the .SIT (Stuffit) or .CPT (Compact Pro) format. Amiga files are usually
in the ZOO, ARC or LZH format. Note that GIF files are also in a
compressed format.


Compression by Software vs. MNP-5/V.42bis

There are several reasons why compression software programs (such as
PKZIP or Stuffit) are superior to MNP-5 or V.42bis.

1. Compressed files save disk storage space.

2. Compression software programs are more versatile. Most of them allow
you to group several files in a compressed file archive to ensure
that all the related files get transferred at the same time.

3. Software compression is more efficient than on-the-fly modem
compression. In the case of a small file, this may not make much
difference. But the difference can be significant when you are
transferring large files.

Filename Size Time Throughput
-----------------------------------------------------------------
the-wave.txt 143579 bytes 43 seconds 3296 cps
dayrpt.arc 8423 bytes 8 seconds 1010 cps
dayrpt.wks 19712 bytes 8 seconds 2337 cps
sunset.arc 5084 bytes 5 seconds 950 cps
sunset.pic 16391 bytes 6 seconds 2643 cps
text109k.arc 29775 bytes 28 seconds 1053 cps
text109k.txt 111386 bytes 39 seconds 2822 cps


As we can see from the test results, it is about 30% faster to transfer
the compressed file text109k.arc than to download the text file with
V.42bis.

Hayes BBS does not provide a compressed version for the file
the-wave.txt. Using PKZIP (for PC) and Stuffit (for Macintosh), we
obtain the following results:

the-wave.zip: 6812 bytes (PKZIP)
the-wave.sit: 6081 bytes (Stuffit)

Assuming a transfer speed of 1000 cps, the compressed file can be
downloaded in 7 seconds. That's six times faster than downloading the
text file with V.42bis!

Here is another example. Spider Island Software BBS (714-730-5785) has a
test file called One-Minute Max. It is a Macintosh TIFF file (file size
206,432 bytes). According to Spider Island Software, the file can be
downloaded in 56 seconds (with an effective throughput of 3745cps) with
a V.32/V.42bis modem.

The result may seem impressive at first. However, the file can be
compressed to 6065 bytes (with Compact Pro) or 7385 bytes (with
Stuffit). Assuming a transfer speed of 1000 cps, it would only take 6-8
seconds to transfer. Again, it is seven to nine times faster than
downloading the file with V.42bis.

On-the-fly modem compression does have one advantage. It is more
convenient. You can send a file without compressing it first and the
recipient does not need to decompress the file.

Local Flow Control and Data Buffering

To get the most from a modem with data compression, you'll want to send
data from your PC to the modem as quickly as possible. If the modem is
idle and waiting for the computer to send data, you are not getting the
maximum performance from the modem.

For example, you have a V.32/V.42bis modem and you want to send a text
file to a remote system which also has a V.32/V.42bis modem. Let's
assume the modem is able to send the file at 20000 bps using V.42bis. If
your computer is sending data to your modem at 9600 bps, your modem will
have to stop and wait to receive data from your computer.

To get the maximum performance, you want to set the computer to send
data to the modem at 38400 bps (the maximum a V.32/V.42bis modem can
achieve). Since the modem can only send the file to the other modem at
20000 bps, it will never have to wait.

Here are the test results for downloading the text file the-wave.txt by
setting the communication port at different speeds:

the-wave.txt: 946 cps (modem port speed 9600 bps)
1885 cps (modem port speed 19200 bps)
3296 cps (modem port speed 38400 bps)


However, there is a new problem. Since your computer is sending data
faster than the modem can handle, there needs to be some ways for the
modem to ask the computer to stop sending data. Otherwise, data loss is
sure to occur. This is where local flow control comes into play.

A high-speed modem typically supports two kinds of local flow control:
hardware handshaking (CTS/RTS) and software handshaking (XON/XOFF). Of
the two, hardware flow control is the preferred method.

We have mentioned earlier that there are three links involved when you
are connected to a remote system:

1. The link between your computer and your modem
2. The link between the modems
3. The link between the remote modem and the remote computer

Local flow control is used for the first and third links. Notice that
the first link may not use the same kind of flow control as the third
link.

Hardware flow control (or hardware handshaking) works by altering
voltage levels on the RTS (Request To Send) and CTS (Clear To Send)
signal lines at the RS232 serial interface between the modem and the
computer.

CTS is used by the modem on the sending end of a transmission. When the
local modem is ready to receive data, it sends the CTS signal to the
local computer and the computer starts transferring data. If the modem
is unable to accept the data as fast as it is received from the
computer, the modem will disable the CTS to inform the computer that the
modem buffer is almost full (A high-speed modem typically contains a
small amount of RAM which is used to provide data buffers). The computer
will then suspend data transfer. Once the local modem has emptied its
buffer by transmitting data to the remote modem, it will enable CTS
again.

RTS is used by the computer on the receiving end of a transmission. When
the computer cannot accept data at the rate at which the modem is
passing data, it will disable RTS. The computer enables RTS again when
it is ready to resume receiving data from the modem.

Software flow control (or software handshaking) is achieved by embedding
control character in the data stream. XON and XOFF are the most commonly
used control characters. XON is also known as Control-Q or DC3 (ASCII
19) while XOFF is known as Control-S or DC1 (ASCII 17).

The use of XON and XOFF during data transfer can create problem when a
binary file contain the Control-S (^S) character as a legitimate part of
the data. Do not use this method if ^S and ^Q are part of the
transmitted data.


Macintosh and High-speed Modems

If you use a Macintosh with a high-speed modem, you will need a special
modem cable that is wired correctly to support hardware handshaking. You
can order the cable from most mail-order companies that sell high-speed
modems. I got mine from Maya Computer (800-541-2318) for $10 (plus $2.50
for shipping & handling).

Unfortunately, the cable did not work with my SE. The cable is good
since it worked fine on a Mac IIsi. It just refused to work on my SE. I
was disappointed but not surprised. After all, my SE is equipped with a
25 Mhz 68030 accelerator. (Well, it is actually both an accelerator and
a video adapter for a 19 inch dual-page monitor.) Since I will never
want to run my SE without the accelerator, I have no choice but to use
software handshaking.

PC and UART (8250, 16450, 16550)

Your PC's serial port has a UART (Universal Asynchronous
Receiver/Transmitter) chip to control the input/output. The XT usually
has an 8250 UART, the AT usually has a 16450 UART. If you are running
Windows, Desqview, OS/2 or any other multitasking environment, you
should upgrade your UART with the 16550 (if your PC does not already
have one). The 16550 is standard in most IBM PS/2 and many 386-based
computers. The 16550 UART has a 16 bytes FIFO (first in, first out)
buffer that helps to prevent degradation when several programs are
running at the same time.

If you use an external modem, the UART is in your computer (either on
the motherboard or on an I/O card that has the serial port). If you use
an internal modem, the UART is on the modem. (Both internal modems from
Practical Peripherals and Zoom use the 16550 UART. The Twincom 96/42
uses a 16450. The CompuCom SpeedModem Champ, due to its unique design,
does not use a standard UART.)

Even if you have a 16550 UART, the communication software that you use
will need to support it. Fortunately, the most recent versions of
popular communications programs are all designed to support the 16550
UART.

Hayes ESP (Enhanced Serial Port)
Hayes makes an adapter called Enhanced Serial Port (ESP) that has two
serial ports complete with an on-board coprocessor. The ESP can save
your PC's CPU from having to manage the work load. If a 16550 UART is
not good enough for you, the ESP may be the only answer.


Profiles of High-speed Modems
Here are profiles of some high-speed modems. The list is not comprehensive,
nor is it intended to be. Unless noted otherwise, the street price quoted are
from PC Connection (800-243-8088) in PC Magazine (12/31/91). PC Connection
generally does not offer the lowest price, but the service is excellent. I
have dealt with PC Connection and MacConnection (800-800-4444) for years
and have yet to be disappointed with their services.
Unless noted otherwise, a V.32/V.42bis modem supports V.32, MNP2-5,
V.42/V.42bis. And a V.32bis/V.42bis modem supports V.32bis, MNP 2-5,
V.42/V.42bis. Most modems listed here are introduced in the past eighteen
months.


ATI 9600etc/e

ATI Technologies is well known for their video adapters. But they also
make a V.32/V.42bis external modem. As of this writing, it is the least
expensive external modem from an established manufacturer. It is a
generic high-speed modem that works well. The street price for the ATI
9600etc/e is $379.

I have been using an ATI 9600etc/e for several months now and I am very
pleased with it. I will not hesitate to recommend it to anyone looking
for an affordable V.32/V.42bis modem.

There are two things I really like about the ATI modem:
* It has a slide volume control on the outside so you can easily adjust
the volume by hand.
* It has factory settings for three different modes: V.32 only, V.32
with MNP-5, V.32 with V.42bis. It is very convenient if you need to
initialize the modem in different ways.

CompuCom SpeedModem Champ/Star/Storm
The SpeedModem Champ is a 9600 bps high-speed modem with CompuCom's
proprietary CSP modulation protocol. It is introduced in early 1991. It
can be ordered from CompuCom directly at a discount price of $169. The
CompuCom Champ is supported by hundreds of BBS in the U.S., including
heavyweights such as EXEC-PC and Channel 1.
CompuCom also markets the SpeedModem Combo which is a SpeedModem Champ
with fax and voice mail capabilities. The current price is $269.
The SpeedModem Storm is a dual-mode modem. It supports both CSP and
V.32/V.42bis. The discount price is $299 (internal) and $339 (external).
The Storm is also available with fax and voice mail options for an
additional $90.
The SpeedModem Star is also a dual-mode modem. It supports both CSP and
V.32bis/V.42bis. The discount price is $499 (internal) and $539
(external). The Star is also available with fax and voice mail options
for an additional $90.
Hayes Modems

V-series Smartmodem 9600. Introduced in 1987, this is a high-speed modem
that supports the proprietary Hayes Express 96 modulation protocol. The
V-series Smartmodem 9600 is still available from various mail order
vendors. There is also an internal unit called V-series Smartmodem
9600B.

Smartmodem 9600. Introduced in 1988, the Smartmodem 9600 is a V.32
modem. It does not support any error control or data compression
protocol. Don't confuse this unit with the V-series Smartmodem 9600.

Ultra 96 is a dual-mode modem from Hayes. Introduced in 1990, the Ultra
96 supports both V.32/V.42bis and the Hayes Express 96 modulation
protocol. Ultra 96 has many unique features that are not needed if you
are calling BBS or online services. The current street price is $669.

Introduced in Fall 1991, Ultra 144 is a dual-mode modem that supports
both V.32bis/V.42bis and the Hayes Express 96 protocol. The current
street price is $799.

Optima 96 is a plain vanilla V.32/V.42bis modem. This is Hayes' answer
to the "generic" V.32/V.42bis modem. The current street price is $479.

Image Communications: Twincom 96/42

The Twincom 96/42 is an internal V.32/V.42bis modem. It lists for $299.
(Don't expect to get discount on the price.) It just won a 1991 Best Buy
Award from Computer Shopper. Notice that it has a 16450 UART, not a
16550. Furthermore, you cannot replace the 16450 with a 16550, the
Twincom 96/42 will not support a 16550 UART at all.

Intel 9600EX & 14.4EX
The 9600EX is a V.32/V.42bis modem. The 14.4EX is a V.32bis/V.42bis
modem. PC Connection is selling the 9600EX for $499 and the 14.4EX for
$549. If you decide to buy an Intel modem, the 14.4EX is obviously a
better deal.

Practical Peripherals PM9600SA & PM9600

The PM9600SA is a V.32/V.42bis modem. It is designed to be compatible
with the Hayes Ultra 96. That means you can tell your communications
software that you have a Hayes Ultra 96. However, the PM9600SA only
responds to a subset of the commands supported by the Hayes Ultra 96.
Any commands specific to the Hayes Ultra 96 that are not implemented in
the PM9600SA will be ignored.

Some early PM9600SA units have quite a few problems connecting to other
V.32 modems. (Make sure you send in the warranty card.) Practical
Peripheral has since sent out several ROM upgrades and the current
shipping units seem to be working fine.

Practical Peripherals also makes an internal modem that features a 16550
UART. You can get the PM9600SA for $469 and the internal PM9600 for
$399.
Prometheus Modems
Prometheus modems are available from many Macintosh mail order
companies. Until recently, Prometheus is the only manufacturer that
makes high-speed modems with fax capability.

Promodem 9600 Plus is a V.32/V.42bis modem. It can also send and receive
Group III fax at 9600 bps.

Prometheus Ultima is a V.32bis/V.42bis fax modem. It can also send and
receive Group III fax at 9600 bps. MacConnection sells the Ultima for
$689.

Telebit Modems

Telebit makes several modems. The prices quoted for the Telebit modems
are their new list prices.

TrailBlazer Plus. $849. Introduced in 1985, the Trailblazer has been the
de facto standard in the UNIX UUCP and Usenet communities. With the new
pricing, you should consider the T2500 or the T3000 instead of the
TrailBlazer Plus if you need to connect to a Telebit PEP modem.

T1000. Introduced in 1988, the T1000 is the little brother of the
TrailBlazer Plus. The T1000 supports PEP at a slower speed. The actual
throughput is about 9600 cps. The current list price is $699. Unlike the
TrailBlazer Plus, the T1000 does not have callback or password security.

T2500. $949. Introduced in 1989 when V.32 modems started to enter the
market, the T2500 supports both V.32/V.42bis and PEP. The maximum
throughput is 19,200 bps due to the limitation imposed by the older
Rockwell chipset used.

T1600. $699. The T1600 is a V.32/V.42bis modem introduced in 1991. It
provides built-in support for UUCP and offers password and callback
security.

T3000. $949. This is the top of the line model from Telebit. The T3000
is a V.32bis/V.42bis modem. PEP upgrade is available for $99 until
3/31/92. After that date, the upgrade will be $199.

QBlazer. $745. If I am going to buy another high-speed modem today, this
will be it. (I use a notebook computer). QBlaser is the first portable
V.32/V.42bis modem (2.3"x2.4"x2.4". It works with a 9-volt battery for
about two hours.

Note that T1600, T2500, T3000 all offer the following features:
* Built-in support for UNIX UUCP, Xmodem, Ymodem, Kermit file transfer
protocols
* Two types of dial-access security: password security and callback
security
* Remote management and diagnostics

U.S. Robotics Modems

Courier HST. This is the modem that made U.S. Robotics the king of
PC-based BBS communities. Unless you are only going to communicate with
other USR HST modems, it is probably not a good idea to purchase this
unit. The street price for a 14400 bps HST is $550-$600. Telemart
(800-521-1973) sells either the internal or the external version for
$559.

Courier V.32bis. Introduced in 1990, this is a V.32bis/V.42bis modem. It
does not support HST. Telemart offers the external version for $565 and
the internal version for $535.

Courier HST Dual Standard. This unit is introduced in 1990. If you need
to connect to HST modems and also want to be able to talk to other
V.32/V.32bis modems, this is the modem to buy. Its current street price
is around $800. Telemart sells the HST Dual Standard for $799. (Note
that earlier HST Dual Standard modems only support V.32 and not
V.32bis.) The HST Dual Standard is considered by many PC users as the
best modem money can buy.

The only reservation I have about the Courier modems is their size. The
external Courier modems are rather bulky: 8.3" wide, 12.65" deep, 1.57"
tall. I would not want to carry one of these with me when I travel.
(It's bigger than my notebook computer.)

Sportster 9600 V.42bis. This unit is introduced in 1991. The Sportster
9600 is an entry level V.32/V.42bis modem from U.S. Robotics. The list
price is $645 for the external version. ($595 for the Internal version).

WorldPort 9600 V.32. The WorldPort 9600 is a portable pocket modem.
Originally made by Touchbase Systems, the WorldPort 9600 is a V.32/MNP-5
modem. It does not support V.42/V.42bis. The WorldPort 9600 works with a
9-volt battery. The list price is $699.

Zoom V.32 Turbo Modems
Zoom has been making Hayes-compatible modems for a long time. The V.32
Turbo is their entry into the high-speed modem arena. The V.32 Turbo is
a V.32/V.42bis with a 12000 bps turbo mode which is compatible with a
V.32bis modem at 12000 bps. Zoom also makes an internal version of the
V.32 Turbo that features a 16550 UART. PC Connection sells the internal
model for $399.

Things to come

Every modem manufacturer makes at least one V.32/V.42bis modem now. And
soon every manufacturer will also make a V.32bis/V.42bis modem. The
price for V.32 and V.32bis modems will continue to drop.

In fact, Supra has announced an external V.32 fax modem (SupraFaxModem
V.32) for $299 and an external V.32bis fax modem (SupraFaxModem V.32bis)
for $399. These prices are for the modems only. Communication and fax
software will be bundled with the modem for an additional $50-$70.
(These modems won't be available at least until January 1992.)

Buying a High-speed Modem

V.32 and V.32bis modems are clearly the standards of high-speed modems
today. You should buy a V.32 or a V.32bis modem unless

1. Your application requires a high-speed modem with a proprietary
modulation protocol. In this case, you should consider a dual-mode
modem that support both the proprietary protocol and V.32 (or
V.32bis).

2. You cannot afford a V.32 modem. In this case, your only choice for a
high-speed modem is the CompuCom SpeedModem Champ.


Should you pay the extra for a V.32bis modem?

A V.32bis modem is faster than a V.32 modem but it also costs more.
Should you pay the extra for the speed difference? That depends on two
factors: what's the price difference and how do you want to reach the
remote system. If the price difference is $50, I would buy the V.32bis
modem. But what if the price difference is $200?

Assuming the remote system support V.32bis, a V.32bis modem will pay for
itself rather quickly if you are placing long distance calls to the
remote system. However, it may be more cost-effective for you to use
some packet-switching networks to reach the remote system by calling a
local number. A V.32bis modem will be wasted since none of the
packet-switching networks currently support V.32bis. In fact, they are
just starting to offer 9600 bps access service. Part III of "The Joy of
Telecomputing" provides a comprehensive discussion of the issues
involved.


Should you buy a modem with a proprietary modulation protocol?
With the exception of the CompuCom SpeedModem Champ, it is generally not
a good idea to purchase a modem which only supports a proprietary
modulation protocol. If you have to connect to a modem that uses a
proprietary modulation protocol, you should consider getting a modem
that supports dual modulation protocols (USR Courier Dual Standard,
Telebit 2500 or 3000, Hayes Ultra).

Should you buy the SpeedModem Champ? It certainly costs much less than
even the least expensive generic V.32 modem in the market today.
Assuming the systems you are calling support both V.32 and the CompuCom
Champ modems, should you save the money and buy the Champ?

Unfortunately, there is no clear-cut answer to the question. The answer
again depends on how you are going to reach the remote systems. If you
want to reach the remote systems via a packet-switching network, the
CompuCom Champ may not be a good choice.

The CompuCom Champ is generally not supported by packet-switching
networks (The only company that supports the CompuCom Champ is
Connect-USA). As a result, you will only be able to connect at 2400 bps
with the packet-switching networks. You would be forced to place a long
distance call if you want to connect at 9600 bps. See Part III of "The
Joy of Telecomputing" for the various issues involved.


Should you buy a 2400 bps modem with V.42bis?
If you are thinking of purchasing a 2400 bps modem with V.42bis data
compression, think again.

We have mentioned earlier that V.42bis and MNP-5 are useless for
downloading compressed files. There is one more reason why a 2400 bps
with V.42bis is generally not useful when you are calling commercial
online services or BBS.

Online services and BBS usually have separate phone numbers for 2400 bps
and high-speed modems. Most of them do not support V.42bis on their 2400
bps lines. Therefore, you won't be able to make a connection with
V.42bis if you call their 2400 bps modem lines.

Couldn't you call their 9600 bps lines? Well, not really. Commercial
online services, as well as many bulletin board systems, typically do
not allow you to call their high-speed modem lines with a 2400 bps
modem. You won't be able to make a connection even if you try.

You should seriously consider the CompuCom SpeedModem Champ instead of a
2400 bps modem with V.42bis. The CompuCom Champ will probably give you
much more for your money (especially if you need to pay more than $100
for the V.22bis/V.42bis modem).


Beware of the Ads

Current V.32 modems typically support MNP 2-5 and V.42/V.42bis. However,
there are still some earlier models of V.32 modems in the market which
1. may not support any error control or data compression protocol (Hayes
Smartmodem 9600).
2. may support MNP 2-5 but not V.42/V.42bis.
3. may support proprietary data compression protocol (Microcom MNP-9).
4. may support V.42 but not V.42bis (Prometheus).


When a modem is said to offer a 38400 bps speed (or throughput), it may
mean that
1. it is a V.32 or V.32bis modem with V.42bis
2. it is a V.32 modem with proprietary data compression protocol (some
Microcom modems)
3. it is a high-speed modem with proprietary modulation protocol and
V.42bis (U.S. Robotics Courier HST)
4. it is a high-speed modem with proprietary modulation protocol and
proprietary data compression protocol (CompuCom Champ)

An ad that says "USR modem, 38400 bps throughput, V.42bis" does not tell
us anything except that the modem is made by U.S. Robotics. It could be
any one of the three Courier modems. It could even be a Sportster 9600.


When a modem is said to offer a 9600 bps speed (or throughput), it may
mean several things:
1. it is a V.32 modem
2. it is a high-speed modem using proprietary modulation protocol (Hayes
V-series Smartmodem 9600, Telebit 1000, etc).
3. it is a 2400 bps modem with V.42bis data compression.
4. it is a 2400 bps modem with 9600 bps fax
5. it is a 2400 bps modem both V.42bis and fax



Setting Up Software To Work With High-speed Modems

Getting a high-speed modem is only half the battle. You will need to get
it to work with your communications program. Most communications
programs still come with settings configured for standard 2400 bps
modems.

Since all 2400 bps modems are Hayes-compatible, it is relatively easy to
set up the software. You simply install the software as if you had a
Hayes modem. The software usually will work flawlessly. And you don't
really have to worry about things like the initialization string.

Getting a high-speed modem to work with your software is a different
story. There is no longer a Hayes standard that everyone follows. Here