Transmission Control Protocol-
Before you go through this article, make sure that you have gone through the previous article on TCP in Networking.
We have discussed-
- TCP continuously receives data from the application layer.
- It divides the data into chunks where each chunk is a collection of bytes.
- It then creates TCP segments by adding a TCP header to the data chunks.
TCP segment = TCP header + Data chunk |
Also Read- TCP Header
In this article, we will discuss about TCP Sequence Number.
TCP Sequence Number-
- Each TCP segment sent by the sender contains some bytes of data.
- TCP assigns a unique number to each data byte for its identification.
- This unique number is called as TCP Sequence Number.
Purpose-
Sequence number serves the following purposes-
- It helps to identify each data byte uniquely.
- It helps in the segmentation of data into TCP segments and reassemble them later.
- It helps to keep track of how much data has been transferred and received.
- It helps to put the data back into the correct order if it is received in the wrong order.
- It helps to request data when it has been lost in transit.
Maximum Number of Sequence Numbers-
- In TCP header, sequence number is a 32 bit field.
- So, maximum number of possible sequence numbers = 232.
- These sequence numbers lie in the range [0 , 232 – 1].
NOTE-
- Maximum number of possible sequence numbers = 232.
- This does not imply that only 232 bytes = 4 GB data can be sent using TCP.
- The concept of wrap around allows to send unlimited data using TCP.
Concept Of Wrap Around-
The concept of wrap around states-
After all the 232 sequence numbers are used up and more data is to be sent,
the sequence numbers can be wrapped around and used again from the starting. |
In general,
- If the initial sequence number chosen is X.
- Then sequence numbers are used from X to 232 – 1 and then from to 0 to X-1.
- Then, sequence numbers are wrapped around to send more data.
Example-
- Consider the initial sequence number used is 0.
- Then after sending 4 GB data, all the sequence numbers would get used up.
- To send more data, sequence numbers are reused from the starting.
- Wrapping around can be done again and again to send more and more data.
Wrap Around Time-
- Time taken to use up all the 232 sequence numbers is called as wrap around time.
- It depends on the bandwidth of the network i.e. the rate at which the bytes go out.
- More the bandwidth, lesser the wrap around time and vice versa.
Wrap Around Time ∝ 1 / Bandwidth |
Formula-
If bandwidth of the network = x bytes/sec, then-
Life Time Of TCP Segment-
In modern computers,
- Life time of a TCP segment is 180 seconds or 3 minutes.
- It means after sending a TCP segment, it might reach the receiver taking 3 minutes in the worst case.
How Wrap Around Is Possible?
It is possible to wrap around the sequence numbers because-
- The life time of a TCP segment is just 180 seconds.
- Wrap around time is much greater than life time of a TCP segment.
- So, by the time the sequence numbers wrap around, there is no probability of existing any segment having the same sequence number.
- Thus, even after wrapping around, the sequence number of all the bytes will be unique at any given time.
Reducing Wrap Around Time-
Wrap around time can be reduced to the life time of a TCP segment. |
This is because-
- After the life time of a segment completes, it is considered that the segment no longer exists.
- So, sequence numbers used by the segment frees up and can be reused.
To reduce the wrap around time to the life time of segment,
- There must exist as many sequence numbers as there are number of data bytes sent in time equal to life time of segment.
Formula-
Number of bits required in the sequence number field
so that wrap around time becomes equal to lifetime of TCP segment = log2 (lifetime of TCP segment x Bandwidth) |
- The number of bits will be greater than 32 bits.
- The extra bits are appended in the Options field of TCP header.
PRACTICE PROBLEMS BASED ON WRAP AROUND TIME IN TCP-
Problem-01:
Given the bandwidth of a network is 1 MB / sec. Calculate the wrap around time.
Solution-
We know,
- Wrap around time = Time taken to use all the 232 sequence numbers.
- TCP assigns 1 sequence number to each byte of data.
To calculate wrap around time, we just need to calculate how much time will be taken to send 232 bytes of data.
Now,
- Given bandwidth = 1 MB / sec = 106 bytes / sec.
- It means 106 bytes of data is sent in time = 1 sec.
- So, 232 bytes of data will be sent in time = ( 1 / 106 ) x 232 sec.
- On solving, we get 1.19 hours.
Thus,
- It will take 1.19 hours to consume all the 232 sequence numbers if bandwidth = 1 MB / sec.
- Wrap Around Time = 1.19 hours.
Alternatively,
Using the formula, we have-
Wrap Around Time
= 232 / 106 sec
= 1.19 hours
Problem-02:
If bandwidth of the network is 1 GBps, how many extra bits will have to be appended in the Options field so that wrap around time becomes equal to the life time of segment?
Solution-
For wrap around time to become equal to the life time of TCP segment,
Number of sequence numbers required = Number of bytes sent in life time of TCP segment
We know-
- Life time of TCP segment = 180 sec.
- Bandwidth of the network = 1 GBps (Given)
Now,
- Number of bytes transferred in 1 sec = 1 GB
- So, number of bytes transferred in 180 sec = 180 GB = 180 x 230 bytes
- So, number of sequence numbers required = 180 x 230
Suppose y number of bits in the sequence number field are required to represent the value 180 x 230.
So, we have-
2y = 180 x 230
ylog2 = log(180 x 230)
y = log2(180 x 230)
y = log2180 + log2230
y = 7.49 + 30
y ≅ 38
From here,
- Total number of bits required for sequence numbers = 38 bits.
- In TCP header, sequence number field is a 32 bit field.
- So, extra bits required to be appended in the Options field = 38 – 32 = 6 bits.
Alternatively,
Using the formula, we have-
Total bits required
= log2 (life time of TCP segment x bandwidth)
= log2 ( 180 x 230)
= log2180 + log2230
= 7.49 + 30
= 38
From here,
- Total number of bits required for sequence numbers = 38 bits.
- In TCP header, sequence number field is a 32 bit field.
- So, extra bits required to be appended in the Options field = 38 – 32 = 6 bits.
Problem-03:
In a network that has a maximum TPDU size of 128 bytes, a maximum TPDU lifetime of 30 sec and 8 bit sequence number, what is the maximum data rate per connection?
(TPDU is Transport layer protocol data unit which is the segment.)
Solution-
Given-
- Maximum segment size (MSS) = 128 bytes
- Segment lifetime = 30 sec
- Bits in sequence number = 8
Now,
- Maximum number of possible sequence numbers using 8 bits = 28 = 256.
- So, maximum number of bytes that can be uniquely identified = 256 bytes.
- Lifetime of a segment = 30 seconds.
- So, maximum amount of data that can be sent in 30 seconds = 256 bytes.
Thus,
Maximum data rate per connection
= 256 bytes / 30 seconds
≈ 68 bits/sec
Problem-04:
Suppose that the advertised window 1 MB long. If a sequence number is selected at random from the entire sequence number space, what is the probability that the sequence number falls inside the advertised window?
Solution-
We know,
- Number of bits in sequence number field = 32 bits.
- So, Maximum number of sequence numbers possible = 232.
- 232 bytes of data can be labeled uniquely with these sequence numbers.
- Advertised window size = 1 MB = 220 bytes which uses 220 sequence numbers.
Therefore,
Required probability
= 220 / 232
= 1 / 212
Next Article- Three Way Handshake
Get more notes and other study material of Computer Networks.
Watch video lectures by visiting our YouTube channel LearnVidFun.