TCP/IP Ports and Addresses
Each machine in the network shown below, has one or more network cards. The part of the network that does the job of transporting and managing the data across the network is called TCP/IP which stands for Transmission Control Protocol (TCP) and Internet Protocol (IP). There are other alternative mechanisms for managing network traffic, but most, such as IPX/SPX for Netware, will not be described here in much detail. The IP layer requires a 4 (IPv4) or 6 (IPv6) byte address to be assigned to each network interface card on each computer. This can be done automatically using network software such as dynamic host configuration protocol (DHCP) or by manually entering static addresses into the computer.
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 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.
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.