Total length in IPv4 header - networking

I am trying to learn about IPV4 headers and used Wireshark to take a look at some packets.
The total length (header length + data length) is 76 bytes. The header length is 20 bytes and the data length is 24 bytes. Were is the other 32 bytes in the total length field coming from?

I think you're missing the TCP header. The data payload is indeed 24 bytes, IPv4 header is 20 bytes, TCP header must be (76 - 24 - 20) = 32 b.

Related

Calculate number of bytes sent in TCP session

I currently learn about TCP protocol and about 3 way-handshake. I cannot figure out how I can calculate the number of bytes transmited in this TCP session. I understand that in the first 3 and in the last 4 it's connection establishment and closing connection but between 4-11 I don't know to count the bytes
TCP session
Looking at frames 4 to 6 of your attachment:
172.20.1.21.1303 > 172.20.0.81.23: P 1:22(21) ack 1 win 65535
172.20.0.81.23 > 172.20.1.21.1303: P 1:13(12) ack 22 win 61299
172.20.1.21.1303 > 172.20.0.81.23: P 22:25(3) ack 13 win 65523
Frame 4 is from host A to B. The first number (1) after the 'P' flag is the (relative) sequence number of the first data byte of this segment, and the number in brackets (21) is the length of that segment in bytes.
Frame 5 is response from host B to A. The value after 'ack' (22) is host B telling host A that B has received bytes 1 to 21, and that it expects sequence number 22 next.
Frame 6 is the next segment from A to B. Sure enough, the sequence number is 22, which matches what B is expecting, and this time the length is 3 bytes.
If you then look at the final frames of the sequence, we can see in frame 12 that Host B has a sequence number of 1052, meaning it has sent 1052 bytes over the course of the connection (and the ack in frame 13 confirms this). Similarly, frame 14 shows that Host A sent 107 bytes (and the ack in frame 15 confirms this).

How does 192,168,1,2,7,138 convert to port 1930 on IP address 192.168.1.2

How do i deduce the port and ip from a number that FTP throws?
For example 192,168,1,2,7,138 converts to 1930 on IP address 192.168.1.2?
What is the logic behind?
The first four numbers indicate client IP, the second two numbers indicate the client port number. It's a hex to dec conversion.
16^2 * 7 + 138 = 1930
The first number stands for 3-rd and 4-th bit of a hex number (port number), the second is for 1-st and 2-nd bit of a hex number.
So we have
7 = 07 in hex
and
138 = 8A in hex
Altogether we have
078A in hex which is 1930
or you can just skip that and convert only the first number to dec which is for 3-d and 4-th bit because of that "shift". The second number is already converted.

Calculating total transmission time of a packet

I'm having some difficulty calculating the total time it takes a packet to get from A to B, the question is:
"We have 200 bytes of data to send from A to B, with a distance of 200km between them. Calculate the total transmission time, assuming the speed of the signal is 200,000 km/s and that the data rate is 1Mbps and that a header of 40 bytes has to be added to the data before it is sent."
My understanding is that at some point you need to factor in propagation and the speed of light (??) but I'm unsure if it's needed in this case. Is there a formula which can be used to work these types of question out?
So we have a total of 200 bytes of payload + 40 bytes of header = 240 bytes. The data can be put on the wire at a rate of 1 Mbps which equals 1,000,000 bits per second (unless the question actually means Mibps which is 1,048,576 bits per second; we'll work on the assumption that Mbps is correct and it's 1,000,000).
240 bytes is equal to 1920 bits (240 * 8), so it takes
1920 bits / 1,000,000 bits per second = 0.00192 seconds
to get the data on the wire.
Now, for the data to be transmitted, it has to travel 200 km at a rate of 200,000 km/s.
200km / 200,000(km/s) = 0.001 seconds.
Now, to take the data from the wire and read into computer in location B takes the same amount of time as putting the data on the wire = 0.00192 seconds.
So the total amount of time is equal to
0.00192 + 0.001 + 0.00192 = 0.00484 seconds = 4.84 milliseconds.

How do I calculate IP-header length?

I want to calculate IP-header length with following statement:
Header Length is a four-bit field that tells, as the name implies, the
length of the IP header in 32-bit words
Now I'm getting difficulties in calculating IP header length (minimum and maximum), with four-bit field.
The minimum length of an IPv4 header of a valid datagram is 20 bytes, when the value reads 5 and there are no options
Since the field is 4 bits wide, the maximum value it can store is 15, thus the maximum length of the header is 60 bytes.
Internet Header Length is the length of the internet header in 32
bit words, and thus points to the beginning of the data. Note that
the minimum value for a correct header is 5.
Which means whatever value is stored in the IHL, it should be multiplied with 32 to get the total number of bits, or with 4 to get the total number of bytes.
minimum value of header length is 20 Bytes but we don't have sufficient bits to represent 20 so we use scaling technique, i.e. 0101 (5) will represent 4 X 5 = 20 Bytes, here scaling factor is 4.
maximum value possible with 4 bits is 15.
So maximum header length possible is 4 X 15 = 60 Bytes.
Header Length | Header Length Field
20 -----> 5
24 -----> 6
28 -----> 7
.
.
.
60 -----> 15
if header length is 22 Bytes then we use padding to make it a multiple of 4 i.e. 24 Bytes
#Amit>Value in the HL filed is = the number of 4 bytes in the total IP header length.Means if the header length field is say 40,then calculate how many 4 bytes in 40?its 40/4= 10.So value in the HL field is 10
MINIMUM HL value
Minimum HL is 20 byte .ie no of 4bytes in 20 = 20/4=5.So minimum value in HL field is 5.
MAXIMUM HL value
HL is a 4 bit field.so the maximum vale that can be accomadated in that field is 15(1111) or you can calculate using the formulae 2^4-1=15.So max no: of 4 bytes can be 15.Hence the Max header length=15*4=60bytes.
Hope now things are clear.
The Internet Header Length (IHL) field is the number of 32-bit words(=4 bytes)
in the IPv4 header, including any options. Because this is also a
4-bit field, the IPv4 header is limited to a maximum of fifteen 32-bit
words(=60 bytes)
So if the value of IHL is 0101(5), then the IP-header's length is 5*4(bytes) = 20(bytes)

Hexadecimal calculation for a checksum

I'm not understanding how this result can be zero. This was presented to me has an example to validate a checksum of a message.
ED(12+01+ED=0)
How can this result be zero?
"1201 is the message" ED is the checksum, my question is more on, how can I determine the checksum?
Thank you for any help.
Best regards,
FR
How can this result be zero?
The checksum is presumably represented by a byte.
A byte can store 256 different values, so the calculation is probably done module 256.
Since 0x12 + 0x01 + 0xED = 256, the result becomes 0.
how can I determine the checksum?
The checksum is the specific byte value B that makes the sum of the bytes in the message + B = 0 (modulo 256).
So, as #LanceH says in the comment, to figure out the checksum B, you...
add up the values of the bytes in the message (say it adds up to M)
compute M' = M % 256
Now, the checksum B is computed as 256 - M'.
I'm not sure about your checksum details but in base-16 arithmetic (and in base-10):
base-16 base-10
-----------------------
12 18
01 1
+ ED 237
------------------------
100 256
If your checksum is modulo-256 (16^2), you only keep the last 2 base-16 digits, so you have 00
Well, obviously, when you add up 12 + 01 + ED the result overflows 1 byte, and it's actually the hex number 100. So, if you only take the final byte of 0x0100. you get 0.

Resources