The Internet Link protocol or IL is a connection-based transport-layer protocol designed at Bell Labs originally as part of the Plan 9 operating system and is used to carry 9P. It is assigned the Internet Protocol number of 40. It is similar to TCP but much simpler.
Communication protocol | |
Abbreviation | IL |
---|---|
Developer(s) | Bell Labs |
OSI layer | Transport layer (4) |
Its main features are:
- Reliable datagram service
- In-sequence delivery
- Internetworking using IP
- Low complexity, high performance
- Adaptive timeouts
As of the Fourth Edition of Plan 9, 2003, IL is deprecated in favor of TCP/IP because it doesn't handle long-distance connections well.[1]
Header
editOffset | Octet | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ||||||||||||||||
0 | 0 | Version and header length | Type of service | Packet length | |||||||||||||||||||||||||||||||||||||||||||||
4 | 32 | Identification | Fragment information | ||||||||||||||||||||||||||||||||||||||||||||||
8 | 64 | Time to live | Protocol | Header checksum | |||||||||||||||||||||||||||||||||||||||||||||
12 | 96 | IP source | |||||||||||||||||||||||||||||||||||||||||||||||
16 | 128 | IP destination | |||||||||||||||||||||||||||||||||||||||||||||||
20 | 160 | Checksum including header | Packet length | ||||||||||||||||||||||||||||||||||||||||||||||
24 | 192 | Packet type | Special | Src port | |||||||||||||||||||||||||||||||||||||||||||||
28 | 224 | Dst port | Sequence id↴ | ||||||||||||||||||||||||||||||||||||||||||||||
34 | 272 | ↪Acked sequence |
struct IPIL
{
byte vihl; /* Version and header length */
byte tos; /* Type of service */
byte length[2]; /* packet length */
byte id[2]; /* Identification */
byte frag[2]; /* Fragment information */
byte ttl; /* Time to live */
byte proto; /* Protocol */
byte cksum[2]; /* Header checksum */
byte src[4]; /* Ip source */
byte dst[4]; /* Ip destination */
byte ilsum[2]; /* Checksum including header */
byte illen[2]; /* Packet length */
byte iltype; /* Packet type */
byte ilspec; /* Special */
byte ilsrc[2]; /* Src port */
byte ildst[2]; /* Dst port */
byte ilid[4]; /* Sequence id */
byte ilack[4]; /* Acked sequence */
};
See also
editReferences
edit- ^ "Plan 9 — Fourth Edition Release Notes". Lucent Technologies. June 2003. Retrieved August 3, 2018.
We are phasing out the IL protocol since it doesn't handle long-distance connections well (and long-distance networks don't handle it well, either). IL is still used by fs(4) but TCP has become the standard protocol for all other services.
Further reading
edit- Dave Presotto; Phil Winterbottom. "The IL protocol".—The original paper describing IL