Let me try to give you a short (it will not be
very short) and simple introduction to TCP/IP. I will try to keep
it as simple as possible (it may to be too simple for some of
you, but if you need all the TCP/IP details, you need to go to
your local bookstore and buy on of these books with 1000+ pages
on TCP/IP). I will also not bother you with the history of TCP/IP
and the Internet, unless required for the understanding of the setup.
Each Ethernet board worldwide has a unique Ethernet-address, it
is a 48 bit number (the first 24 bits indicate the manufacturer,
the last 24 bits are a unique number for each Ethernet
board/controller-chip assigned by the manufacturer).
When systems on a local area network ("LAN") are
configured with NetBEUI or IPX/SPX protocol, they use these
hardware-addresses to identify each other, so there is no need to
define manually a network address.
But TCP/IP was designed as a Wide-area-network ("WAN"),
able to continue to function, even if part of the network was not
operating ( damaged or destroyed).
TCP/IP uses IP-addresses, which are 32-bit numbers. To make it
easier to memorize such IP-addresses, they are usually expressed
as 4 8-bit numbers (example: 192.168.10.1), where each of the 4
numbers is within the range of '0' to '255' (there are
restriction on using '0' and '255', avoid using them.).
When setting up a small private network, you are free to use ANY
IP-address, however, when you are connected to a company network,
you need to ask the Network-administrator to assign you an
IP-address. And if you are connected to the Internet, your ISP (Internet
Service Provider) will assign an IP-address to you.
Even if a network is NOT connected to the Internet, it has become
custom to use on private networks a range of IP-addresses, which
are reserved for private networks (that makes it later possible
to connect your private network to the Internet without having to
re-configure everything). The reserved IP-address is: 192.168.x.y,
where x=same number on all systems and y=different/unique number
on all systems.
A small network of 3 systems would use:
You configure this IP-address in the properties
of the TCP/IP-protocol:
(For now, simply enter as 'Subnet Mask"
255.255.255.0, it will be explained later in this document)
That's it, if you just like to connect systems on a small
network, the network should work and you can test the Connection using the
On a small network, you can still memorize the
IP-addresses used, but if your network grows to 50+ systems, it
becomes a serious management job. But TCP/IP offers some help by
allowing to configure it to:
"obtain an IP address automatically":
To be able to make this automatic assignment,
there needs to be now on the network a database, keeping track of
possible IP-addresses and to whom these addresses have been
DHCP (Dynamic Host
On bootup, the system sends out a call on the network to find a
DHCP-server, which assigns an IP-address to such a system. The
IP-addresses are usually assigned NOT permanently, but for a
specific time (could be days, weeks, months or on
Internet-connections just for the ONE connection). If the system
contacts the DHCP-server again during this time, the 'lease' on
the IP-address is extended. But if you come back from a long
vacation, your 'lease' of the IP-address may have expired, that
IP-address may have been assigned now to somebody else, and
you/your computer get now assigned a new IP-address.
Windows95 itself does NOT include any DHCP-server, you need to
connect to a Windows
NT (or similar class) server , which is configured as
Microsoft supplies now with Windows98/ME and with Windows
2000 a feature for
IP-Auto-Configuration without a DHCP-server on the network.
DHCP-server amy also be buildin to some other
products ( example : software Router for
Internet Connection Sharing ) .
If you are using/intend to use "obtain an IP
address automatically", please do NOT reply
on it without verifying, that you did get an IP-address assigned.
To check, use on the Start-menu
the RUN-command to execute "winipcfg" (on a Windows95/98/ME
system, on Windows NT4 and
Windows 2000, open a command-prompt window and type the command :
"ipconfig" ) :
||Select from the drop-down
your network adapter :
(often, the PPP-Adapter for the Internet connection via
modem is the first selection in the list).
Verify, that values are listed for
||If the IP-address and Subnet Mask are
"0.0.0.0", then there is NO IP-address assigned
(no DHCP-server on the network and/or the
IP-Auto-Configuration did not work )
and without an IP-address, TCP/IP networking
does NOT work !
Looks simple until now ? Actually there is already a lot more
The systems have IP-addresses, but Ethernet-boards ONLY know
their Ethernet-address, so as soon as a TCP/IP configured system
is switched on, it is advertising its presence onto the
network:" Hey, I am alive, my Ethernet address is
'08000b 0a0238' and my IP-address is '192.168.10.2' ".
, and each TCP/IP system on the network builds up a table with
all this information, which is usually checked/verified in
time-intervals of 15 min.
If your system needs now to communicate with a station, for which
it does NOT have an entry in its table
of IP/Ethernet-Addresses, it sends out a search-message to
everybody ("Broadcast-Message") like: " Hey,
I like to communicate with the IP-address '192.168.10.4', but I
do NOT know your Ethernet-Address. Please, identify yourself".
This causes the system with the requested IP-address to send out
its advertising again.
These processes are called ARP (Address Resolution
Protocol) and RARP (Reversed Address Resolution
This ARP/RARP works fine on a local-area-network (on an Ethernet
network), but will NOT work for Internet communications, because:
- the Database of Ethernet-to-IP-address would need to have 10+
- the Internet would only be busy with ARP/RARP.
To connect a TCP/IP local-area-network to another TCP/IP LAN
(which could be the complete Internet) or via a Wide-Area-Network (WAN), you need now a device called : Gateway
You need to tell Windows95 about the Gateway in the
Now, also the 'Subnet-Mask', which is usually '255.255.255.0', becomes important:
if you now like to connect to 184.108.40.206 (which is the Website
of Microsoft), TCP/IP checks your own IP-address and the
IP-address of the destination against the Subnet-mask. Lets do
that comparison on a binary level:
||11000000 10101000 00001010 00000001
||11001111 01000100 10001001 00110101
||11111111 11111111 11111111 00000000
TCP/IP compare now the part of the addresses,
defined by the '1's in the subnet-mask: if your system connects
to another system on the same network, that part of the address
(the first 24-bits in this example) are the same, so TCP/IP looks
up the Ethernet address in its ARP table and connects directly to
But if there is a difference in these 24-bits, then TCP/IP
connects to the Gateway (in this example: 192.168.10.20), and it
is now the job of the Gateway to establish somehow the connection
to the destination system (somewhere inside that Internet
'cloud'). The Gateway/Router keeps for that purpose special
tables and passed on the request to the next router, which itself
goes to the next, which itself goes to the next,....., until you
reach the destination.
( If you have on your network
multiple gateways/routers (maybe one for a
permanent Internet connection and
another for a company internal WAN), you need to program the
systems to select the proper gateway using the
Each Router/gateway on the network (which could be the Internet
or a Wide-Area-Network
passes on the message, until it reaches its destination, and the
reply comes back the same way
(for more details on Routing: Setup TCP/IP Routing ).
|The above assumes, that all systems
have an IP-address, which is valid on the Internet !
If you connect via adialup-connection to the Internet,
but like to use the connection on
multiple systems on a network, you need a Proxy.
You can check this yourself: open on Win95 a DOS-window and run
the 'tracert' command (which is installed as part of the TCP/IP
In my example, I traced the router
it is difficult to remember IP-addresses, it is much easier to
remember names (and having the computer lookup the name and find
the IP-address). That is the purpose of the 'HOSTS'-file
and 'LMHOSTS'-file: Windows95 TCP/IP
installs in C:\WINDOWS a file called 'hosts.sam' and 'lmhosts.sam',
rename/copy it to 'hosts'/'lmhosts' and then use it to define the
The formatting of 'hosts'
and 'lmhosts' is the same:
IP-address, some spaces, computername
When to use HOSTS and when to use LMHOSTS ?
That is a confusing subject: having 2 files with a very similar
HOSTS is read by basic TCP/IP
software (ping, ftp, ......)
LMHOSTS is used by the Microsoft Networking/Client/Workgroup
management. If systems are on the same cable segment, the system
broadcast their presence and find each other automatically, no
need to enter anything in LMHOSTS.
However, such broadcast-packets to NOT get routed. Adding then
the IP-address manually in LMHOSTS
makes the system aware about a system on different segments.
originates from "Lan
name from the history of Microsoft networks.
An example for using LMHOSTS : Connection via a Router to a NT Domain Server
Too much work to typ these IP-addresses ?
Looks like another item for automation, and exactly that is DNS
: Domain Name Service:
it allows to use names instead of IP-addresses, but you need to
configure it as part of the TCP/IP-properties:
If you now define an address ( like: www.microsoft.com or someserver.com in the
picture below) TCP/IP will make:
1: a call out to a DNS-server, asking for the IP of someserver.com
2: the DNS server will reply with the IP-address (in this example
3: TCP/IP makes now the connection to the requested server someserver.com,
using the IP-address 220.127.116.11.
TCP/IP is a complex protocol, offering multiple services
(especially on the Internet), like:
- HTTP (=Web-Browsing)
- file sharing
For each of these services, a port is used for the specific type of communication
It is possible to have Multiple IP-addresses on a
That's it for a basic course on TCP/IP.
For more info , see : FTP : File Transfer Protocol
(Yes, I know, I did not touch here on 'telnet, and the other
TCP/IP goodies, maybe later on another page....).