TCP/IP stack is the family of protocols that rule the current internet. While other protocols are also used in computer networks, TCP/IP is by far the most common of them.
TCP/IP can be compared to the OSI model as a simpler and more efficient implementation of the conceptual seven-layer model of OSI. TCP/IP deals with four layers of communications, and data packets are passed topdown for transmission. TCP/IP doesn t specify the Network Access Layer, so it is quite common to mix the OSI model and the TCP/IP model and talk about Physical Layer and Data Link layer instead of the Network Access layer
Here we can see an example of the data flow in a remote shell session (rlogin) using TCP/IP. Each layer adds headers and creates a new data structure encapsulating the one handled by the layer that is over it. We can see how data is encapsulated in the second figure. On reception each layer strips the headers added by its counterpart in the sending device, performs the operations assigned to it and passes the resulting data structure to the layer over it. Data structures have different names in the different communication levels
If the connection has to pass through several network devices, they use the same mechanism, but only up to the level in which they work A Level 3 device (router), that is able to connect different networks, goes up to Internet layer (called network layer in the OSI model). A Level 2 device (switch,) works inside a local network and only goes up to OSI layer 2 that is equivalent to Network Access Layer in the TCP/IP model. The hosts applications use all layers to communicate
IETF, created in 1992, is responsible for Internet technical standards. It uses a method called Request for Comments (RFC), that is a consensual standard setting process, and the standards created are named with RFC and a four digit code that is in the 7 thousands for the last standards (RFC 0001 dates from April 1969) All TCP/IP protocols are defined in the public RFCs. RFCs are constantly updated
The Internet addresses, that we also saw in the first course of the ISC series, are defined in the TCP/IP protocol stack. Internet addresses are used to locate the destination computer, in order to send the packets there through the internet. In some sense it s like the postal address of a computer. Every device on the Internet is assigned an IP address. In the late sixties, when internet started, IP addresses with 4 bytes (that are 32 bits as a byte has 8 bits) were used, as the number of possible different addresses 2^32 (4.3 billion) was considered a huge number that was more than enough. With the rapid growth of the Internet after commercialisation in the 1990s, it became evident that the address space available with IPv4 was not enough to connect all new devices in the future. By 1998, the Internet Engineering Task Force (IETF) had formalised the successor protocol, IPv6, that uses a 128-bit address, allowing 2^128, or approximately 3.4 10^38 addresses, or more than 7.9 10^28 times as many as IPv4, So now we have two types of IP addresses, IPv4 and IPv6. IPv4: That uses 32-bit (four-byte) addresses. Its first version was deployed for production in the ARPANET in 1983. It still routes most Internet traffic today, but there are nearly no reserves of new IP addresses in the world IPv6: are represented as eight groups of four hexadecimal digits. The two protocols are not designed to be interoperable, complicating the transition to IPv6. However, several IPv6 transition mechanisms have been devised to permit communication between IPv4 and IPv6 hosts. All the major Operating systems can handle IPv6 addresses but most of Internet traffic is carried with IPv4. In July 2015 the percentage of users reaching Google Services with IPv6 reached 8% for the first time.
Transport layer addresses allow users to connect to a specific application in a computer host. There are 2 protocols in the TCP/IP stack transport layer, TCP (for Transmission Control Protocol) that is connection oriented, that is, that transmits data as a byte stream, provides flow control and guarantees that the data transferred remains intact and arrives in the same order in which it was sent, and UDP (for User Datagram Protocol) that is connectionless, transmits the packets individually and gives no guarantees at all, but is faster as it is lightweight. In the TCP/IP family, transport layer addresses are known as sockets or ports: a socket is a combination of an IP address (the IP address of the host) with a number that identifies the specific application or service, separated by a colon. Specific port numbers are often used to identify specific services. Of the thousands of enumerated ports, 1024 well-known port numbers are reserved by convention to identify specific service types on a host. We don t usually see the port number because every application is programmed to use a specific port, so, when we type an IP address in an web browser, it understands that the request will go to port 80 by default, but we could have 2 web servers running in the same host and direct our request to the second using a different socket(for example 158.42.4.23:8080)
TCP/IP protocol suite encloses far more protocols than the basic ones we have commented. Computer networks can be really complicated!