0

I studied that fragment offset has 13 bits. At transport layer segmentation is done considering the the MTU at lower layers (network layer, data link layer). Ethernet format says the maximum data range is 48-1500 bytes. If the data link layer uses ethernet protocol we don't need to scale the fragment offset since 1500 bytes can be 13 bits. By using which protocol in data link layer requires the fragment offset to be scaled by a factor of 8?

  • Did any answer help you? If so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you can provide and accept your own answer. – Ron Maupin Dec 15 '19 at 5:35
1

There are not "scaling factors." The fragment offset is 13 bits because three bits are used for flags. Because The total length of an IPv4 packet can be 65,535, and there are only 13 bits available for the fragment offset, each fragment payload (except the last fragment) must be a length that is a multiple of eight octets (64 bits). This would include any packets that are larger than the ethernet MTU when crossing an ethernet link. Routers fragment IPv4 packets (or not, if the DF bit is set) that are larger than the MTU of the next interface in the exact same way, regardless of the data-link protocol on the next interface.

Do not conflate the separate network layers. Remember that when IP and ethernet were both being developed, neither knew or cared about the other. It is simply that both eventually dominated the industry, but they were independently developed by completely different people, and are maintained by completely different groups today.

Ethernet neither knows nor cares what is in the payload. There is an Ether Type field to tell it to which process it should deliver its payload, but it knows nothing about the payload. It can carry ARP, IPv4, IPX, IPv6, AppleTalk, etc. and it simply doesn't care, so multiple network-layer protocols can simultaneously exist on an ethernet network.

IP (either IPv4 or IPv6) does not know or care which data-link protocol carries it. IP works on a large number of data-link protocols, such as HDLC, PPP, ethernet, ATM, frame relay, Wi-Fi, token ring, FDDI, etc., each with its own MTU.

IP was developed for IP, not for any particular data-link protocol. You refer to ethernet, but it has been dethroned by Wi-Fi as king of the LAN. There are more devices with Wi-Fi interfaces being shipped than with ethernet interfaces, and Wi-Fi has a different MTU than ethernet. The MTU is based on the requirements of the physical and data-link protocols, and simply doesn't care about any upper-layer protocols.


Also, you are referring to IPv4. IPv6 does not fragment at routers the way IPv4 does, and TCP segmentation is very different than IPv4 fragmentation. Many people confuse segmentation with fragmentation, but they are very different.


You can refer to _RFC 791, Internet Protocol for a complete explanation of IPv4 fragmentation:

Fragmentation

Fragmentation of an internet datagram is necessary when it originates in a local net that allows a large packet size and must traverse a local net that limits packets to a smaller size to reach its destination.

An internet datagram can be marked "don't fragment." Any internet datagram so marked is not to be internet fragmented under any circumstances. If internet datagram marked don't fragment cannot be delivered to its destination without fragmenting it, it is to be discarded instead.

Fragmentation, transmission and reassembly across a local network which is invisible to the internet protocol module is called intranet fragmentation and may be used [6].

The internet fragmentation and reassembly procedure needs to be able to break a datagram into an almost arbitrary number of pieces that can be later reassembled. The receiver of the fragments uses the identification field to ensure that fragments of different datagrams are not mixed. The fragment offset field tells the receiver the position of a fragment in the original datagram. The fragment offset and length determine the portion of the original datagram covered by this fragment. The more-fragments flag indicates (by being reset) the last fragment. These fields provide sufficient information to reassemble datagrams.

The identification field is used to distinguish the fragments of one datagram from those of another. The originating protocol module of an internet datagram sets the identification field to a value that must be unique for that source-destination pair and protocol for the time the datagram will be active in the internet system. The originating protocol module of a complete datagram sets the more-fragments flag to zero and the fragment offset to zero.

To fragment a long internet datagram, an internet protocol module (for example, in a gateway), creates two new internet datagrams and copies the contents of the internet header fields from the long datagram into both new internet headers. The data of the long datagram is divided into two portions on a 8 octet (64 bit) boundary (the second portion might not be an integral multiple of 8 octets, but the first must be). Call the number of 8 octet blocks in the first portion NFB (for Number of Fragment Blocks). The first portion of the data is placed in the first new internet datagram, and the total length field is set to the length of the first datagram. The more-fragments flag is set to one. The second portion of the data is placed in the second new internet datagram, and the total length field is set to the length of the second datagram. The more-fragments flag carries the same value as the long datagram. The fragment offset field of the second new internet datagram is set to the value of that field in the long datagram plus NFB.

This procedure can be generalized for an n-way split, rather than the two-way split described.

To assemble the fragments of an internet datagram, an internet protocol module (for example at a destination host) combines internet datagrams that all have the same value for the four fields: identification, source, destination, and protocol. The combination is done by placing the data portion of each fragment in the relative position indicated by the fragment offset in that fragment's internet header. The first fragment will have the fragment offset zero, and the last fragment will have the more-fragments flag reset to zero.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.