![]() |
![]() |
![]() |
| Version | Currently 4 |
| Header length | in 22 bit words |
| Service type |
| Precedence | Normal prio to high (control) |
| Delay | |
| Throughput | Indications to routing algorithm |
| Reliability |
| Total length | in octets |
| Fragmentations control |
| Do not fragment | Error if not possible |
| More fragments | Allows reassembly |
| Fragment offset |
| Time to live | in seconds |
| Decremented | |
| Protocol | Refers to the data format |
| Checksum | Negation of the integer sum of 16-bit header segments Discovers up to 16 one-bit errors. (Or three five-bit, etc) |
| Copy | into each fragment of the datagram | |
| Class | normal; network control | 0 |
| Number |
| Loose source routing | Some hops |
| Strict source routing | Every intermediate |
| Record route | Included in routing |
| Time stamp | Class 2 |
| physical address |
| encapsulation into physical frames(s) |
routedatagram(datagram,routingtable)
extract destination IP address from datagram D
compute the network prefix N
if N matches adjacent network
then directly deliver
elseif RT contains host specific route for D
then send datagram to the next hop address
elseif RT contains a route for network N
then send datagram to the next hop address
elseif RT contains a default route
then send datagram to default router
else declare a routing error
![]() |
![]() |
![]() |
![]() |
Some of the diagrams copied from S. Carl-Mitchell & J.S. Quarterman, Practical Internetworking with TCP/IP and UNIX , Addison-Wesley 1993.