TCP and IP are two seperate protocols. IP (Internet Protocol) is a network layer protocol, while TCP (Transmission Control Protocol) is a transport layer protocol.
A D V E R T I S E M E N T
Every computer and network device attached to the Internet has at least one IP address. For example, the IP address of this web server is 66.37.153.81.
Every computer and network device attached to the Internet has at least one IP address. For example, the IP address of this web server is 66.37.153.81.
Then, within each of those IP addresses, each computer and network device will have a number of TCP ports. For example, the web server software on this web server responds on TCP port 80 and the mail server software on the same computer responds on TCP port 25.
Ports
The TCP layer requires what is called a port number to be assigned to
each message. This way it can determine the type of service being
provided. Please be aware here, that when we are talking about "ports"
we are not talking about ports that are used for serial and parallel
devices, or ports used for computer hardware control. These ports are
merely reference numbers used to define a service. For instance, port 23
is used for telnet services, and HTTP uses port 80 for providing web
browsing service. There is a group called the IANA (Internet Assigned
Numbers Authority) that controls the assigning of ports for specific
services. There are some ports that are assigned, some reserved and many
unassigned which may be utilized by application programs. Port numbers
are straight unsigned integer values which range up to a value of 65535.
Addresses
Addresses are used to locate computers. It works almost like a house
address. There is a numbering system to help the mailman locate the
proper house to deliver customer's mail to. Without an IP numbering
system, it would not be possible to determine where network data packets
should go.
IPv4, which means internet protocol version 4, is described here.
Each IP address is denoted by what is called dotted decimal notation.
This means there are four numbers, each separated by a dot. Each number
represents a one byte value with a possible mathematical range of 0-255.
Briefly, the first one or two bytes, depending on the class of network,
generally will indicate the number of the network, the third byte
indicates the number of the subnet, and the fourth number indicates the
host number. This numbering scheme will vary depending on the network
and the numbering method used such as Classless Inter-Domain Routing (CIDR)
which is described later. The host number cannot be 0 or 255. None of
the numbers can be 255 and the first number cannot be 0. This is because
broadcasting is done with all bits set in some bytes. Broadcasting is a
form of communication that all hosts on a network can read, and is
normally used for performing various network queries. An address of all
0's is not used, because when a machine is booted that does not have a
hardware address assigned, it provides 0.0.0.0 as its address until it
receives its assignment. This would occur for machines that are remote
booted or those that boot using the dynamic host configuration protocol
(DHCP). The part of the IP address that defines the network is referred
to as the network ID, and the latter part of the IP address that defines
the host address is referred to as the host ID. |
IPv6 is an enhancement to the IPv4 standard due to the shortage of internet
addresses. The dotted notation values are increased to 12 bit values rather than
byte (8 bit) values. This increases the effective range of each possible decimal
value to 4095. Of course the values of 0 and 4095 (all bits set) are generally
reserved the same as with the IPv4 standard.
An Example Network
In the diagram below, the earlier hardware wiring example is modified to show
the network without the hubs. It also shows IP addresses assigned to each
interface card. As you can see there are two networks which are 192.168.1.x and
192.168.2.x. Machines A through F are on network 192.168.1.x. The machines X and
Z are on network 192.168.2.x, and machine G has access to both networks.
NIC |
A |
B |
C |
D |
E |
F |
G |
X |
Z |
eth0 |
192.168.1.7 |
192.168.1.6 |
192.168.1.5 |
192.168.1.4 |
192.168.1.3 |
192.168.1.2 |
192.168.1.1 |
192.168.2.2 |
192.168.2.3 |
eth1 |
- |
- |
- |
- |
- |
- |
192.168.2.1 |
- |
- |
Using this port and addressing scheme, the networking system can pass data,
addressing information, and type of service information through the hardware,
from one computer to another. The reason, there is an address for the hardware
card (ethernet address, also called MAC address), and another assigned address
for that same card (IP address), is to keep the parts of the network system that
deal with the hardware and the software, independent of each other. This is
required in order to be able to configure the IP addressing dynamically.
Otherwise, all computers would have a static address and this would be very
difficult to manage. Also, if a modification needs to be made to the hardware
addressing scheme for any reason, in ethernet, it will be transparent to the
rest of the system. Conversely if a change is made to the software addressing
scheme in the IP part of the system, the ethernet and TCP protocols will be
unaffected.
In the example above, machine F will send a telnet data packet to machine A.
Roughly, the following steps occur.
- The Telnet program in machine F prepares the data packet. This occurs in
the application (Telnet), presentation, and session layers of the OSI
network model.
- The TCP software adds a header with the port number, 23, to the packet.
This occurs in the transport (TCP) layer.
- The IP software adds a header with the sender's and recipient's IP
address, 192.168.1.2 to the packet. This occurs in the network (IP) layer.
- The ethernet header is added to the packet with the hardware address of
the network card and the packet is transmitted. This occurs in the link
(Ethernet) layer.
- Machine A's network card detects it's address in the packet, retrieves
the data, and strips its header data and sends it to the IP layer.
- The IP layer looks at the IP header, and determines if the sender's IP
address is acceptable to provide service to (hosts.allow, hosts.deny, etc),
and if so, strips the IP header and sends it to the TCP layer.
- The TCP Layer reads the port number in it's header, determines if
service is provided for that port, and what application program is servicing
that port. It strips the TCP header and passes the remainder of the data to
the telnet program on machine A.
Please note, that the network layers mentioned here are described in the next
section. Also there are many types of support at each of the four TCP/IP network
system layers, but that issue is addressed in the next section.