26
Traceroute Assignment

Traceroute Assignment

  • Upload
    dacian

  • View
    29

  • Download
    1

Embed Size (px)

DESCRIPTION

Traceroute Assignment. Base64 Encoding The SMTP protocol only allows 7 bit ASCII data, so how can you send me a picture of Avril Lavigne, which is an 8 bit binary JPEG file? Encode it. But back to Base64 encoding…. - PowerPoint PPT Presentation

Citation preview

Page 1: Traceroute Assignment

Traceroute Assignment

Page 2: Traceroute Assignment
Page 4: Traceroute Assignment
Page 5: Traceroute Assignment
Page 6: Traceroute Assignment
Page 7: Traceroute Assignment
Page 8: Traceroute Assignment

But back to Base64 encoding…

Page 9: Traceroute Assignment

The encoding method used is simple and elegant. Each group of 3 bytes is encoded as 4 bytes, each containing only 6 bits of data. These are sent as 7-bit ASCII.

Why is it called BASE64? Because 6 bits gives us decimal numbers in the range 0-63, by assigning a character to each decimal value (64 of them), we can encode any number in the range 0-63 by just one single character. Base 64 requires 64 symbols, just as decimal (base 10) requires 10 symbols and hexadecimal (base 16), requires 16 symbols.

Page 10: Traceroute Assignment

The Base64 Alphabet: (values given in decimal)

0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v 14 O 31 f 48 w (pad) = 15 P 32 g 49 x 16 Q 33 h 50 y

Page 11: Traceroute Assignment

We take 3 bytes and encode to 4 bytes:

 3 bytes to encode: 10101111 11001010 11101010

 

24 bit stream: 101011111100101011101010

 Four 6-bit values: 101011 111100 101011 101010

decimal value 43 60 43 42

Base64 character r 8 r q

 

We then use the table to send the ASCII codes for each BASE64 character.

Page 12: Traceroute Assignment

The Base64 Alphabet: (values given in decimal)

0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v 14 O 31 f 48 w (pad) = 15 P 32 g 49 x 16 Q 33 h 50 y

Page 13: Traceroute Assignment

There is a slight problem when the bit stream to be encoded is not an exact multiple of 3.

In this case, zeros are added to make the last group of bytes (ie 1 or 2 bytes) up to a multiple of 6 bits.

One or two padding characters (=) are added to make the encoded data a multiple of 4 bytes.

Page 14: Traceroute Assignment

For example: 

4 bytes to encode: 10101111 11001010 11101010 00100011

 

32 bit stream: 10101111110010101110101000100011

 Six 6-bit values: 101011 111100 101011 101010 001000 110000

decimal value 43 60 43 42 08 48

Base64 characters r 8 r q I w

Add padding r 8 r q I w = =

 

In this case four zeros are added, then two padding characters.

Page 15: Traceroute Assignment

The Base64 Alphabet: (values given in decimal)

0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v 14 O 31 f 48 w (pad) = 15 P 32 g 49 x 16 Q 33 h 50 y

Page 16: Traceroute Assignment

Example Email Message with GIF attachment - BASE64 encoded  MIME-Version: 1.0Content-Type: Multipart/mixed; BOUNDARY="Part10510241718.A"--Part10510241718.AContent-Type: Text/Plain; charset="us-ascii"

This email contains an attachment - a small GIF file. Jim---------------------- --Part10510241718.AContent-Type: Image/gif; name="pin.gif"Content-Transfer-Encoding: base64Content-Disposition: attachment; filename="pin.gif" R0lGODlhDgARAPIAAAAAAL8AAICAgP8AAP///wAAAAAAAAAAACH5BAEAAAQALAAAAAAOABEAAAM/SArRoRAy5yIBMwwynqTb1kjMtHHeFWRal2JUTAZCPJJAXTdYhOWrX8/3w1mOgqFCwGwyLU4nNPqcRo9LqSUBADs= --Part10510241718.A

Page 17: Traceroute Assignment

CRC –Cyclic Redundancy Check 

Errors happen!

One simple method of error checking is to do a checksum. All the bytes in the message are added up and the result is transmitted with the message. The receiver does the sum again and compares the result with the transmitted checksum. This can detect lots of errors, but it is easy to see that one bit changed in one byte could be cancelled out by one bit changed in another byte. This is not a very secure method of error checking.

 

The CRC is extensively used for error checking in many network protocols.

Page 18: Traceroute Assignment

It is based on some very complex mathematics, concerned with polynomial arithmetic. If you wish to investigate the theory behind CRC, this is a good starting point: http://www.ross.net/crc/links.html

 

Why polynomial arithmetic? In any number system, numbers can be considered as polynomials, in our familiar decimal system, the number 3807 can be expressed as:

3*103+8*102+0*101+7*100

Things are actually simplified if we are working in binary, as the coefficients can only be 0 or 1. So if we consider the binary number 101101. This is:

  1*25+0*24+1*23+1*22+0*21+1*20 or x5+x3+x2+1

Page 19: Traceroute Assignment

The CRC works by division, rather than addition. The data (the transmitted message) is considered to be a big binary number, which could be represented as a polynomial. This polynomial is divided by another, carefully chosen, polynomial to give a result which is used to check the data, in the same way as a checksum. 

By using a division algorithm, this method of error checking can detect many more errors than a simple checksum.

Page 20: Traceroute Assignment

Rather than using a straightforward binary division, the CRC uses modulo-2 arithmetic. This means effectively doing a normal long division, but with a few strange rules. In modulo-2 arithmetic, subtraction and addition are identical, since there are no “carries”. The logical function is actually XOR.  

Deciding if the divisor “goes into” the current part of the dividend simply depends if the MSB is the same(1). So 1111 would “go into” 1000.

Page 21: Traceroute Assignment

Example from the book:

Data to be checked: 101110

Generator polynomial: 1001 (x3+1)

 

The data is first multiplied by 23, since the generator polynomial is of order 3, done by adding 3 zeros: 101110000

 

Next this value is divided by the generator polynomial (1001), by long division, using modulo-2 arithmetic, where subtraction becomes the XOR function:

 

Page 22: Traceroute Assignment

  101011 ---------------

1001 | 101110000 1001

---- 101 000 ---- 1010 1001 ---- 110 000 ---- 1100 1001 ---- 1010 1001 ---- 011 Remainder 

Page 23: Traceroute Assignment

The value actually transmitted is the data plus the remainder ie, in this case: 101110011

When the CRC is calculated at the receiver the value should be zero, as the remainder value has been added to the original data.

Page 24: Traceroute Assignment

  101011 ---------------

1001 | 101110000 1001

---- 101 000 ---- 1000 1001 ---- 110 000 ---- 1100 1001 ---- 1010 1001 ---- 011 Remainder 

Page 25: Traceroute Assignment

International standards have been established for various different CRC generators of different bit lengths. For example, this is the CRC-32-IEEE 802.3 polynomial, used for Ethernet:

x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 (V.42)

 

The CRC can always detect burst errors of fewer than r+1 bits (where r is the order of the generator polynomial). There is also a good probability of longer burst errors being detected. The CRC can also detect any odd number of bit errors.

 

The CRC is easy to implement in software and is often implemented in hardware (using shift registers and xor gates).

Page 26: Traceroute Assignment

The End