Post

[๐ŸŒCN] Internet Protocol(3) - IP Header & Forwarding

[๐ŸŒCN] Internet Protocol(3) - IP Header & Forwarding

๐ŸŒ Internet Protocol ์ „๊ณต ์ˆ˜์—… ์ •๋ฆฌ

IP๋Š” ์ธํ„ฐ๋„ท์˜ ํ—ˆ๋ฆฌ(waist of the hourglass)๋ผ ๋ถˆ๋ฆฐ๋‹ค. ๋ชจ๋“  ์ƒ์œ„ ๋ ˆ์ด์–ด ํ”„๋กœํ† ์ฝœ๊ณผ ํ•˜์œ„ ๋ ˆ์ด์–ด ๊ธฐ์ˆ ๋“ค์ด IP๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. IP์˜ ๊ตฌ์กฐ, ํ—ค๋” ํ•„๋“œ, ๊ทธ๋ฆฌ๊ณ  ํฌ์›Œ๋”ฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊นŠ์ด ์žˆ๊ฒŒ ์‚ดํŽด๋ณด์ž.


IP์˜ ์—ญํ• ๊ณผ ์œ„์น˜

The Waist of the Hourglass

๐Ÿ“šIP (Internet Protocol): Network Layer์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ๋กœ, ๋‹ค์–‘ํ•œ ๋งํฌ ๊ณ„์ธต ๊ธฐ์ˆ ๋“ค๊ณผ ์ƒ์œ„ ์ „์†ก ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” ํ•ต์‹ฌ ํ”„๋กœํ† ์ฝœ

๋ชจ๋ž˜์‹œ๊ณ„ ๋ชจ๋ธ:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                    Application Layer
                 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                 โ”‚ HTTP  SMTP  RTP ...  โ”‚  โ† ๋‹ค์–‘ํ•œ ์ƒ์œ„ ํ”„๋กœํ† ์ฝœ
                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                 โ”‚   TCP      UDP       โ”‚
                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                      โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”
                      โ”‚    IP     โ”‚        โ† ํ—ˆ๋ฆฌ (Waist)!
                      โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜
                 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                 โ”‚ Ethernet  WiFi  PPP  โ”‚  โ† ๋‹ค์–‘ํ•œ ํ•˜์œ„ ๊ธฐ์ˆ 
                 โ”‚ FDDI  ATM  Bluetooth โ”‚
                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                    Physical Layer

ํ•ต์‹ฌ ํŠน์ง•:

  • โœ… One network layer protocol: ๋ชจ๋“  ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์žฅ์น˜์— ๊ตฌํ˜„๋˜์–ด์•ผ ํ•จ
  • โœ… ํ˜ธํ™˜์„ฑ ํ•ด๊ฒฐ: ์„œ๋กœ ๋‹ค๋ฅธ ๋งํฌ ๊ณ„์ธต ๊ธฐ์ˆ ๋“ค ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ
  • โœ… IP Forwarding: ํŒจํ‚ท์„ ๋ชฉ์ ์ง€๊นŒ์ง€ ์ „๋‹ฌํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ

IP๊ฐ€ ๊ตฌํ˜„๋˜๋Š” ์œ„์น˜

1
2
3
4
5
6
7
8
9
10
Host A           Router 1         Router 2         Host B
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   App    โ”‚    โ”‚          โ”‚    โ”‚          โ”‚    โ”‚   App    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   TCP    โ”‚    โ”‚          โ”‚    โ”‚          โ”‚    โ”‚   TCP    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    IP    โ”‚โ—„โ”€โ”€โ–บโ”‚    IP    โ”‚โ—„โ”€โ”€โ–บโ”‚    IP    โ”‚โ—„โ”€โ”€โ–บโ”‚    IP    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”œโ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”ค    โ”œโ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”ค    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Data Linkโ”‚    โ”‚DLโ”‚ DL โ”‚DLโ”‚    โ”‚DLโ”‚ DL โ”‚DLโ”‚    โ”‚Data Link โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”˜    โ””โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

์ค‘์š” ํฌ์ธํŠธ:

  • IP๋Š” ๋ผ์šฐํ„ฐ์™€ ํ˜ธ์ŠคํŠธ ๋ชจ๋‘์—์„œ ๊ตฌํ˜„๋˜๋Š” ์ตœ์ƒ์œ„ ํ”„๋กœํ† ์ฝœ
  • Application๊ณผ TCP๋Š” End-to-End (ํ˜ธ์ŠคํŠธ์—์„œ๋งŒ)
  • IP๋Š” hop-by-hop (๋ชจ๋“  ๋ผ์šฐํ„ฐ์—์„œ ์ฒ˜๋ฆฌ)

IP Service ํŠน์„ฑ

IP์˜ 3๊ฐ€์ง€ ํ•ต์‹ฌ ํŠน์„ฑ

1๏ธโƒฃ Connectionless (๋น„์—ฐ๊ฒฐ์„ฑ)

  • ๐Ÿ“Œ ๋ฌผ๋ฆฌ์ ์ธ ์—ฐ๊ฒฐ์ด ์—†๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹˜ โ†’ ๊ด€๋ฆฌ ์—†์Œ
  • ๊ฐ ํŒจํ‚ท์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋จ
  • ์ˆœ์ฐจ์  ์ „๋‹ฌ ๋ณด์žฅ ์—†์Œ (No sequential delivery)

2๏ธโƒฃ Unreliable (๋น„์‹ ๋ขฐ์„ฑ)

  • ํŒจํ‚ท ์†์‹ค ๊ฐ€๋Šฅ (Lost packets)
  • ์ค‘๋ณต ํŒจํ‚ท ๋ฐœ์ƒ ๊ฐ€๋Šฅ
  • ์ˆœ์„œ ๋’ค๋ฐ”๋€œ ๊ฐ€๋Šฅ (Out-of-sequence delivery)

3๏ธโƒฃ Best Effort (์ตœ์„  ๋…ธ๋ ฅ)

  • Throughput ๋ณด์žฅ ์—†์Œ
  • Delay ๋ณด์žฅ ์—†์Œ
  • QoS ๋ณด์žฅ ์—†์Œ

๊ฒฐ๊ณผ:

1
2
3
4
5
6
Consequences:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ โŒ ํŒจํ‚ท์ด ์ˆœ์„œ๋Œ€๋กœ ๋„์ฐฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ             โ”‚
โ”‚ โŒ ํŒจํ‚ท์ด ์†์‹ค๋˜๊ฑฐ๋‚˜ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ์Œ                 โ”‚
โ”‚ โœ… ์ƒ์œ„ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ(TCP)์ด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•จ       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Why Best Effort?: ๋‹จ์ˆœ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด ๋ณต์žกํ•œ ๋ณด์žฅ ๊ธฐ๋Šฅ์€ ์ƒ์œ„ ๊ณ„์ธต(TCP)์— ์œ„์ž„

IP๊ฐ€ ์ง€์›ํ•˜๋Š” ํ†ต์‹  ๋ฐฉ์‹

๐Ÿ“šIP Multicast: ํ•˜๋‚˜์˜ ํŒจํ‚ท์„ ์—ฌ๋Ÿฌ ์ˆ˜์‹ ์ž์—๊ฒŒ ์ „์†กํ•˜๋Š” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ• (IGMP, multicast routing ํ”„๋กœํ† ์ฝœ ํ•„์š”)

3๊ฐ€์ง€ ํ†ต์‹  ๋ฐฉ์‹:

1
2
3
1. Unicast (1:1)          2. Broadcast (1:all)       3. Multicast (1:some)
     โ—  โ†’  โ—                    โ—  โ†’  โ—โ—โ—                  โ—  โ†’  โ—โ—
                                      โ—โ—โ—                        โ—
๋ฐฉ์‹์„ค๋ช…์˜ˆ์‹œ
Unicast1:1 ํ†ต์‹ ์ผ๋ฐ˜ ์›น ๋ธŒ๋ผ์šฐ์ง•
Broadcast1:๋ชจ๋‘ ํ†ต์‹ ARP request
Multicast1:๊ทธ๋ฃน ํ†ต์‹  (์„ ํƒ์ )IPTV, ํ™”์ƒํšŒ์˜

IP Header ๊ตฌ์กฐ

IP Header ์ „์ฒด ๊ตฌ์กฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bit # 0       7 8      15 16     23 24                            31
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚versionโ”‚headerโ”‚   DS   โ”‚   ECN   โ”‚    total length (in bytes)   โ”‚
โ”‚  (4) โ”‚lengthโ”‚   (6)  โ”‚   (2)   โ”‚           (16 bits)          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”ผโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚       Identification          โ”‚0 โ”‚DF โ”‚MF โ”‚  Fragment offset    โ”‚
โ”‚          (16 bits)            โ”‚  โ”‚ (1)โ”‚(1)โ”‚    (13 bits)        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”ดโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚time-to-live   โ”‚   protocol    โ”‚    header checksum              โ”‚
โ”‚   (TTL)       โ”‚    (8 bits)   โ”‚      (16 bits)                  โ”‚
โ”‚  (8 bits)     โ”‚               โ”‚                                 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                  source IP address (32 bits)                    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                destination IP address (32 bits)                 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                  options (0 to 40 bytes)                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                       payload                                   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                        4 bytes

ํฌ๊ธฐ:

  • ์ตœ์†Œ ํ—ค๋” ํฌ๊ธฐ: 20 bytes (์˜ต์…˜ ์—†์„ ๋•Œ)
  • ์ตœ๋Œ€ ํ—ค๋” ํฌ๊ธฐ: 60 bytes (์˜ต์…˜ 40 bytes ํฌํ•จ)
  • ์ตœ๋Œ€ Total Length: 2^16 bytes = 65,536 bytes

IP Header ํ•„๋“œ ์ƒ์„ธ

Version (4 bits)

์—ญํ• : IP ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ ์‹๋ณ„

  • IPv4: ๊ฐ’ = 4 (๋Œ€๋ถ€๋ถ„)
  • IPv6: ๊ฐ’ = 6

Header Length (4 bits)

๐Ÿ“šHeader Length (IHL): IP ํ—ค๋”์˜ ๊ธธ์ด๋ฅผ 4-byte ๋‹จ์œ„๋กœ ํ‘œํ˜„

๊ณ„์‚ฐ ๋ฐฉ๋ฒ•:

1
2
3
4
5
ํ—ค๋” ๊ธธ์ด = Header Length ร— 4 bytes

์˜ˆ์‹œ:
  Header Length = 5 โ†’ 5 ร— 4 = 20 bytes (์˜ต์…˜ ์—†์Œ)
  Header Length = 15 โ†’ 15 ร— 4 = 60 bytes (์ตœ๋Œ€)

DS/ECN Field (1 byte = 8 bits)

๊ณผ๊ฑฐ: Type of Service (TOS) ํ•„๋“œ ํ˜„์žฌ: DS (6 bits) + ECN (2 bits)

Differentiated Service (DS) - 6 bits:

  • ์„œ๋น„์Šค ๋ ˆ๋ฒจ ์ง€์ • (ํ˜„์žฌ ์ธํ„ฐ๋„ท์—์„œ๋Š” ๋ฏธ์ง€์›)
  • QoS ์ฐจ๋ณ„ํ™” ์šฉ๋„

Explicit Congestion Notification (ECN) - 2 bits:

  • TCP์˜ ํ˜ผ์žก ์ œ์–ด๋ฅผ ์œ„ํ•œ ํ”ผ๋“œ๋ฐฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜
  • ๋ผ์šฐํ„ฐ๊ฐ€ ํ˜ผ์žก ์ƒํƒœ๋ฅผ ํŒจํ‚ท์— ํ‘œ์‹œ

Total Length (16 bits)

์—ญํ• : ์ „์ฒด ํŒจํ‚ท ํฌ๊ธฐ (ํ—ค๋” + ํŽ˜์ด๋กœ๋“œ)

1
2
3
4
5
Total Length = IP Header + IP Payload
์ตœ์†Œ: 20 bytes (ํ—ค๋”๋งŒ)
์ตœ๋Œ€: 65,535 bytes (2^16 - 1)

โš ๏ธ ์ฃผ์˜: ํ•˜์œ„ ๋งํฌ ๊ณ„์ธต์˜ MTU๊ฐ€ ์ด๋ณด๋‹ค ์ž‘์„ ์ˆ˜ ์žˆ์Œ!

Fragmentation ๊ด€๋ จ ํ•„๋“œ

MTU (Maximum Transmission Unit)

๐Ÿ“šMTU: ๋ฐ์ดํ„ฐ ๋งํฌ ํ”„๋กœํ† ์ฝœ์ด ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ IP ํŒจํ‚ท ํฌ๊ธฐ

์ฃผ์š” MTU ๊ฐ’:

๋งํฌ ํƒ€์ž…MTU (bytes)
Ethernet1,500
802.31,492
802.54,464
FDDI4,352
ATM AAL59,180
PPPnegotiated

๋ฌธ์ œ ์ƒํ™ฉ:

1
2
3
4
5
6
7
Host A                 Router              Host B
  โ”‚                      โ”‚                    โ”‚
  โ”‚  4,000 byte packet   โ”‚                    โ”‚
  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ                    โ”‚
         FDDI MTU=4352   โ”‚  Ethernet MTU=1500 โ”‚
                         โ”‚                    โ”‚
                    Fragmentation ํ•„์š”!

Fragmentation (๋‹จํŽธํ™”)

Fragmentation์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ:

  • IP datagram ํฌ๊ธฐ > ๋งํฌ์˜ MTU
  • ๋ผ์šฐํ„ฐ๊ฐ€ ํŒจํ‚ท์„ ์—ฌ๋Ÿฌ ์กฐ๊ฐ(fragment)์œผ๋กœ ๋ถ„ํ• 

Fragmentation ์žฅ์†Œ:

  • Sender (์†ก์‹ ์ž)
  • Intermediate routers (์ค‘๊ฐ„ ๋ผ์šฐํ„ฐ)
  • ๋™์ผํ•œ datagram์ด ์—ฌ๋Ÿฌ ๋ฒˆ fragmentation๋  ์ˆ˜ ์žˆ์Œ

Reassembly (์žฌ์กฐ๋ฆฝ)

์–ด๋””์„œ ์žฌ์กฐ๋ฆฝํ•˜๋Š”๊ฐ€?

โŒ Option 1: ์ค‘๊ฐ„ ๋ผ์šฐํ„ฐ์—์„œ ์žฌ์กฐ๋ฆฝ?

1
2
Host A  โ†’  R1  โ†’  R2  โ†’  Host B
       Fragment  Reassemble?
  • ๋ฌธ์ œ: Fragment๋“ค์ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Œ!

โœ… Option 2: ์ตœ์ข… ๋ชฉ์ ์ง€(End-host)์—์„œ ์žฌ์กฐ๋ฆฝ

1
2
3
Host A  โ†’  R1  โ”ฌโ†’  R3  โ”
              Fragment  โ””โ†’  Host B (Reassemble!)
           R2  โ”˜
  • ์ •๋‹ต: ๋ชจ๋“  fragment๋Š” ์ตœ์ข… ์ˆ˜์‹ ์ž(Destination host)์—์„œ ์žฌ์กฐ๋ฆฝ
  • Fragments๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ๊ฑฐ์น  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ!

Fragmentation ๊ด€๋ จ ํ•„๋“œ

Identification (16 bits):

  • ๋™์ผํ•œ datagram์˜ ๋ชจ๋“  fragment๋Š” ๋™์ผํ•œ ID
  • ์†ก์‹ ์ž๊ฐ€ datagram ์ „์†ก ์‹œ๋งˆ๋‹ค ์ฆ๊ฐ€์‹œํ‚ด

Flags (3 bits):

๋น„ํŠธ์ด๋ฆ„์˜๋ฏธ
0-ํ•ญ์ƒ 0 (์˜ˆ์•ฝ)
DFDonโ€™t Fragment1์ด๋ฉด ๋‹จํŽธํ™” ๊ธˆ์ง€, ํŒจํ‚ท drop ํ›„ ICMP ์ „์†ก
MFMore Fragments1์ด๋ฉด ๋’ค์— fragment๊ฐ€ ๋” ์žˆ์Œ

Fragment Offset (13 bits):

  • ํ˜„์žฌ fragment์˜ ํŽ˜์ด๋กœ๋“œ๊ฐ€ ์›๋ณธ datagram์—์„œ ์ฐจ์ง€ํ•˜๋Š” ์œ„์น˜
  • 8-byte ๋‹จ์œ„๋กœ ํ‘œํ˜„ (์‹ค์ œ offset = ๊ฐ’ ร— 8)

Fragmentation ์˜ˆ์‹œ

Original Packet: 4,000 bytes

1
2
3
4
5
6
7
8
Version: 4          Header Length: 5        Type of Service: 0
Total Length: 4000
Identification: 56273                    R/D/M: 0/0/0
Fragment Offset: 0
TTL: 127            Protocol: 6 (TCP)     Checksum: 44019
Source: 1.2.3.4
Destination: 3.4.5.6
(3980 bytes payload)

MTU = 1,500 bytes์ผ ๋•Œ Fragmentation:

1
2
3
4
5
6
7
8
9
10
11
์›๋ณธ:
โ”Œโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 20 โ”‚           3980 bytes                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
     4000 bytes

๋ถ„ํ•  ํ›„:
โ”Œโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 20 โ”‚  1480 bytes   โ”‚  โ”‚ 20 โ”‚ 1200     โ”‚  โ”‚ 20 โ”‚ 1300     โ”‚
โ””โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
     1500 bytes              1220 bytes         1320 bytes

Fragment 1:

1
2
3
4
Total Length: 1500
Identification: 56273
R/D/MF: 0/0/1  โ† MF=1 (๋” ์žˆ์Œ!)
Fragment Offset: 0  (0 ร— 8 = 0)

Fragment 2:

1
2
3
4
Total Length: 1220
Identification: 56273
R/D/MF: 0/0/1  โ† MF=1 (๋” ์žˆ์Œ!)
Fragment Offset: 185  (185 ร— 8 = 1480)

Fragment 3 (๋งˆ์ง€๋ง‰):

1
2
3
4
Total Length: 1320
Identification: 56273
R/D/MF: 0/0/0  โ† MF=0 (๋งˆ์ง€๋ง‰!)
Fragment Offset: 335  (335 ร— 8 = 2680)

TTL (Time-to-Live)

TTL์˜ ์—ญํ• 

๐Ÿ“šTTL (Time-to-Live): ํŒจํ‚ท์ด ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๋„๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ™‰ ์นด์šดํ„ฐ

๋ฌธ์ œ ์ƒํ™ฉ: Forwarding Loop

1
2
3
4
5
     R1 โ‡„ R2
      โ†“   โ†‘
      R3

ํŒจํ‚ท์ด ๋ฌดํ•œ์ • ์ˆœํ™˜! โ†’ ๋ชจ๋“  ๋Œ€์—ญํญ ์†Œ๋ชจ!

TTL ๋™์ž‘ ๋ฐฉ์‹:

  1. Sender: TTL ๊ฐ’ ์„ค์ • (์˜ˆ: 64)
  2. ๊ฐ ๋ผ์šฐํ„ฐ: TTL ๊ฐ’์„ 1์”ฉ ๊ฐ์†Œ
  3. TTL = 0: Datagram drop + โ€œTime Exceededโ€ ICMP ๋ฉ”์‹œ์ง€ ์†ก์‹ 

Ping ์ถœ๋ ฅ ์˜ˆ์‹œ:

1
2
3
4
5
C:\Users\์‚ฌ์šฉ์ž>ping www.unipi.it

131.114.21.42์˜ ์‘๋‹ต: ๋ฐ”์ดํŠธ=32 ์‹œ๊ฐ„=308ms TTL=39
131.114.21.42์˜ ์‘๋‹ต: ๋ฐ”์ดํŠธ=32 ์‹œ๊ฐ„=307ms TTL=39
131.114.21.42์˜ ์‘๋‹ต: ๋ฐ”์ดํŠธ=32 ์‹œ๊ฐ„=306ms TTL=39

TTL ๊ฐ’์˜ ์˜๋ฏธ:

  • ์ดˆ๊ธฐ๊ฐ’ 64๋กœ ์‹œ์ž‘ํ–ˆ๋‹ค๋ฉด โ†’ 25 hops (64 - 39 = 25)
  • traceroute์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜!

Protocol Field

Protocol (8 bits)

๐Ÿ“šProtocol Field: ์ƒ์œ„ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์„ ์‹๋ณ„ํ•˜์—ฌ ์ˆ˜์‹  ํ˜ธ์ŠคํŠธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์—ญ๋‹ค์ค‘ํ™”(demultiplexing)ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

์ฃผ์š” Protocol ๋ฒˆํ˜ธ:

๋ฒˆํ˜ธํ”„๋กœํ† ์ฝœ์„ค๋ช…
1ICMPInternet Control Message
2IGMPInternet Group Management
4IP-in-IPIP encapsulation
6TCPTransmission Control
17UDPUser Datagram

Demultiplexing ์˜ˆ์‹œ:

1
2
3
4
5
6
์ˆ˜์‹  ํŒจํ‚ท:
  Protocol = 6 (TCP)
     โ†“
  IP ๊ณ„์ธต์ด TCP ๋ชจ๋“ˆ๋กœ ์ „๋‹ฌ
     โ†“
  TCP ํ—ค๋” ํŒŒ์‹ฑ ์‹œ์ž‘

Header Checksum

Checksum (16 bits)

๐Ÿ“šHeader Checksum: IP ํ—ค๋”์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ์ฒดํฌ์„ฌ (payload๋Š” ๊ฒ€์‚ฌ ์•ˆ ํ•จ!)

๊ณ„์‚ฐ ๋ฐฉ๋ฒ•: Oneโ€™s Complement Sum

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Step 1: 16-bit words๋กœ ๋ถ„ํ• 
  1011 0000 0101 1111  +
  1110 1100 0101 1100  =
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
 1 1001 1100 1011 1011  โ† Carry ๋ฐœ์ƒ

Step 2: Carry๋ฅผ ๋‹ค์‹œ ๋”ํ•จ
  1001 1100 1011 1011  +
  0000 0000 0000 0001  =
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  1001 1100 1011 1100

Step 3: One's Complement (๋น„ํŠธ ๋ฐ˜์ „)
  0110 0011 0100 0011  โ† Checksum!

๋งค ๋ผ์šฐํ„ฐ์—์„œ ์žฌ๊ณ„์‚ฐ:

  • TTL์ด ๋ณ€๊ฒฝ๋˜๋ฏ€๋กœ checksum๋„ ๋งค๋ฒˆ ์žฌ๊ณ„์‚ฐ ํ•„์š”
  • Checksum ๋ถˆ์ผ์น˜ โ†’ ํŒจํ‚ท ํ๊ธฐ

Checksum Offloading:

  • ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด NIC (Network Interface Card)์—์„œ ๊ณ„์‚ฐ
  • OS ๋ถ€๋‹ด ๊ฐ์†Œ

IP Options

Options (0~40 bytes)

๐Ÿ“šIP Options: ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ™•์žฅ ๊ธฐ๋Šฅ (TLV ํ˜•์‹)

TLV (Type-Length-Value) ๊ตฌ์กฐ:

1
2
3
4
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Type โ”‚ Length โ”‚     Value      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  1 byte  1 byte   Variable

์ฃผ์š” Option๋“ค:

Type์ด๋ฆ„์„ค๋ช…์‚ฌ์šฉ ๋นˆ๋„
0End of List์˜ต์…˜ ๋ชฉ๋ก ๋If required
1No OperationPadding ์šฉ๋„If required
7Record Route๊ฐ ๋ผ์šฐํ„ฐ๊ฐ€ ์ž์‹ ์˜ IP๋ฅผ ํ—ค๋”์— ์ถ”๊ฐ€Rare
68Timestamp๊ฐ ๋ผ์šฐํ„ฐ๊ฐ€ IP + ์‹œ๊ฐ„ ์ถ”๊ฐ€Rare
131Loose Source Routing๋ฐ˜๋“œ์‹œ ๊ฑฐ์ณ์•ผ ํ•  ๋ผ์šฐํ„ฐ ๋ชฉ๋ก (์ค‘๊ฐ„์— ๋‹ค๋ฅธ ๋ผ์šฐํ„ฐ ๊ฐ€๋Šฅ)Rare, filtered
137Strict Source Routing์˜ค์ง ๋ช…์‹œ๋œ ๋ผ์šฐํ„ฐ๋“ค๋งŒ ๊ฑฐ์ณ์•ผ ํ•จRare, filtered
148Router Alert๋ผ์šฐํ„ฐ๊ฐ€ ํŒจํ‚ท ๋‚ด์šฉ์„ ๊ฒ€์‚ฌํ•ด์•ผ ํ•จOccasional

Router Alert Option

ํŠน์ง•:

  • ๋ณดํ†ต ๋ผ์šฐํ„ฐ๋Š” ํŒจํ‚ท์„ ํฌ์›Œ๋”ฉ๋งŒ ํ•จ
  • Router Alert: ๋ผ์šฐํ„ฐ๊ฐ€ ํŒจํ‚ท ๋‚ด์šฉ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ํŠน๋ณ„ํ•œ ์ฒ˜๋ฆฌ ์ˆ˜ํ–‰

์‚ฌ์šฉ ์˜ˆ์‹œ: IGMP (Internet Group Management Protocol)

1
2
3
4
5
6
7
8
9
10
11
12
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Options: (4 bytes), Router Alert               โ”‚
โ”‚   Router Alert (4 bytes): Router shall examine  โ”‚
โ”‚     Type: 148                                   โ”‚
โ”‚     Length: 4                                   โ”‚
โ”‚     Router Alert (20)                           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Internet Group Management Protocol              โ”‚
โ”‚   [IGMP Version: 2]                             โ”‚
โ”‚   Type: Membership Query (0x11)                 โ”‚
โ”‚   Max Response Time: 10.0 sec (0x64)            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๋ผ์šฐํ„ฐ์—๊ฒŒ ์ƒํƒœ ์ •๋ณด(state)๊ฐ€ ๊ธฐ๋ก๋˜์–ด์•ผ ํ•  ๋•Œ RA ์˜ต์…˜ ์‚ฌ์šฉ โ†’ ์•…์˜์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ (๊ณต๊ฒฉ ๋ฒกํ„ฐ)

Source Routing

Loose Source Routing (Type 131):

1
2
3
4
5
6
Wireshark ์˜ˆ์‹œ:
Source Route: 151.101.229.67 <- (next)
Destination: 151.101.229.67

Time to live: 1
Current Route: 163.152.1.1
  • ํŒจํ‚ท์ด ํŠน์ • ๋ผ์šฐํ„ฐ๋“ค์„ ๋ฐ˜๋“œ์‹œ ๊ฑฐ์ณ์•ผ ํ•จ
  • ์ค‘๊ฐ„์— ๋‹ค๋ฅธ ๋ผ์šฐํ„ฐ๋„ ๊ฑฐ์น  ์ˆ˜ ์žˆ์Œ

๋ณด์•ˆ ์ด์Šˆ:

  • ๋Œ€๋ถ€๋ถ„์˜ ๋ผ์šฐํ„ฐ๋Š” source routing ์˜ต์…˜์„ dropํ•จ
  • ํ•ดํ‚น์— ์•…์šฉ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ

Padding

์—ญํ• : IP ํ—ค๋”๊ฐ€ 4-byte ๊ฒฝ๊ณ„์—์„œ ๋๋‚˜๋„๋ก ๋ณด์žฅ

1
2
3
Options: 11 bytes
Padding: 1 byte ์ถ”๊ฐ€
Total Header: 20 + 12 = 32 bytes (4์˜ ๋ฐฐ์ˆ˜ โœ…)

IP ๊ณต๊ฒฉ ์œ ํ˜•

Attacks Involving IP

1. IP ํ—ค๋” ํ•„๋“œ ์กฐ์ž‘:

  • Bad header length
  • Wrong version number
  • ๋ชฉํ‘œ: ๋ผ์šฐํ„ฐ ํฌ๋ž˜์‹œ ๋˜๋Š” ์„ฑ๋Šฅ ์ €ํ•˜

2. Option ์•…์šฉ:

  • Specialized code (fragment reassembly) ๋ฒ„๊ทธ ์ต์Šคํ”Œ๋กœ์ž‡
  • Router Alert ๋‚จ์šฉ

3. IP Spoofing:

๐Ÿ“šIP Spoofing: ์†ก์‹ ์ž๊ฐ€ Source IP ์ฃผ์†Œ๋ฅผ ์œ„์กฐํ•˜์—ฌ ๊ณต๊ฒฉ

๋ฐฉ์–ด: Ingress Filtering

1
2
3
4
5
6
ISP ๊ฒฝ๊ณ„ ๋ผ์šฐํ„ฐ์—์„œ:
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ If (source IP prefix !=    โ”‚
  โ”‚     expected prefix)       โ”‚
  โ”‚   โ†’ DROP packet!           โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  • ๋ผ์šฐํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท์˜ Source IP prefix ๊ฒ€์ฆ
  • ์˜ˆ์ƒ๋˜๋Š” prefix๊ฐ€ ์•„๋‹ˆ๋ฉด ํ๊ธฐ

Forwarding (ํฌ์›Œ๋”ฉ)

Forwarding์˜ ๊ฐœ๋…

๐Ÿ“šForwarding: ๋ผ์šฐํ„ฐ๊ฐ€ ์ˆ˜์‹ ํ•œ ํŒจํ‚ท์„ ์ ์ ˆํ•œ ์ถœ๋ ฅ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •

๋ผ์šฐํ„ฐ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ:

  1. Routing: ๊ฒฝ๋กœ ๊ฒฐ์ • (Routing Table ์ƒ์„ฑ)
  2. Forwarding: ์‹ค์ œ ํŒจํ‚ท ์ „๋‹ฌ (Forwarding Table ์‚ฌ์šฉ)

Routing Table ๊ตฌ์กฐ

IPv4 Routing Table:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ํ™œ์„ฑ ๊ฒฝ๋กœ:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚๋„คํŠธ์›Œํฌ ๋Œ€์ƒ โ”‚๋„คํŠธ์›Œํฌ๋งˆ์Šคํฌโ”‚ ๊ฒŒ์ดํŠธ์›จ์ด  โ”‚ ์ธํ„ฐํŽ˜์ด์Šค   โ”‚๋ฉ”ํŠธ๋ฆญ  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  0.0.0.0     โ”‚  0.0.0.0     โ”‚ 192.168.0.1 โ”‚ 192.168.0.33 โ”‚   50   โ”‚
โ”‚ 127.0.0.0    โ”‚ 255.0.0.0    โ”‚  ์—ฐ๊ฒฐ๋จ     โ”‚ 127.0.0.1    โ”‚  331   โ”‚
โ”‚ 127.0.0.1    โ”‚255.255.255.255โ”‚ ์—ฐ๊ฒฐ๋จ     โ”‚ 127.0.0.1    โ”‚  331   โ”‚
โ”‚127.255.255.255โ”‚255.255.255.255โ”‚์—ฐ๊ฒฐ๋จ     โ”‚ 127.0.0.1    โ”‚  331   โ”‚
โ”‚ 192.168.0.0  โ”‚255.255.255.0 โ”‚  ์—ฐ๊ฒฐ๋จ     โ”‚192.168.0.33  โ”‚  306   โ”‚
โ”‚192.168.0.33  โ”‚255.255.255.255โ”‚ ์—ฐ๊ฒฐ๋จ     โ”‚192.168.0.33  โ”‚  306   โ”‚
โ”‚192.168.0.255 โ”‚255.255.255.255โ”‚ ์—ฐ๊ฒฐ๋จ     โ”‚192.168.0.33  โ”‚  306   โ”‚
โ”‚ 224.0.0.0    โ”‚ 240.0.0.0    โ”‚  ์—ฐ๊ฒฐ๋จ     โ”‚ 127.0.0.1    โ”‚  331   โ”‚
โ”‚ 224.0.0.0    โ”‚ 240.0.0.0    โ”‚  ์—ฐ๊ฒฐ๋จ     โ”‚192.168.0.33  โ”‚  306   โ”‚
โ”‚255.255.255.255โ”‚255.255.255.255โ”‚์—ฐ๊ฒฐ๋จ     โ”‚ 127.0.0.1    โ”‚  331   โ”‚
โ”‚255.255.255.255โ”‚255.255.255.255โ”‚์—ฐ๊ฒฐ๋จ     โ”‚192.168.0.33  โ”‚  306   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๊ตฌ์„ฑ ์š”์†Œ:

  1. Destination network prefix (๋„คํŠธ์›Œํฌ ๋Œ€์ƒ)
  2. Network mask (๋„คํŠธ์›Œํฌ ๋งˆ์Šคํฌ)
  3. Gateway (๊ฒŒ์ดํŠธ์›จ์ด): ๋‹ค์Œ ํ™‰ ๋ผ์šฐํ„ฐ์˜ IP ์ฃผ์†Œ (๋˜๋Š” โ€œ์—ฐ๊ฒฐ๋จโ€)
  4. Interface (์ธํ„ฐํŽ˜์ด์Šค): ํŒจํ‚ท์„ ๋‚ด๋ณด๋‚ด๋Š” IF
  5. Metric (๋ฉ”ํŠธ๋ฆญ): ์—”ํŠธ๋ฆฌ ์šฐ์„ ์ˆœ์œ„ (๋‚ฎ์„์ˆ˜๋ก ์šฐ์„ )

Default Router vs Core Router

Default Router (Edge Router):

1
2
3
4
5
6
7
8
9
10
11
12
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Default Entry ์žˆ์Œ        โ”‚
โ”‚  0.0.0.0/0 โ†’ Gateway       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚
   ๋งค์นญ ์•ˆ๋˜๋ฉด?
       โ”‚
   โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”
   โ”‚Internetโ”‚
   โ”‚๋‚ด๋ถ€๋กœ  โ”‚
   โ”‚forward โ”‚
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  • Default entry (0.0.0.0/0) ์กด์žฌ
  • ์•Œ์ง€ ๋ชปํ•˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ์ธํ„ฐ๋„ท์œผ๋กœ ์ „๋‹ฌ

Core Router (Backbone Router):

1
2
3
4
5
6
7
8
9
10
11
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  No Default Entry!         โ”‚
โ”‚  ์™„์ „ํ•œ Routing Table      โ”‚
โ”‚  (~800,000 entries)        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚
   ๋งค์นญ ์•ˆ๋˜๋ฉด?
       โ”‚
   โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”
   โ”‚ DROP! โ”‚
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  • Default entry ์—†์Œ
  • ์ „ ์„ธ๊ณ„ ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์ •๋ณด ๋ณด์œ  (~80๋งŒ ๊ฐœ ์—”ํŠธ๋ฆฌ)
  • ๋งค์นญ ์•ˆ ๋˜๋ฉด โ†’ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ฃผ์†Œ!

ARP Cache

ARP Cache์˜ ์—ญํ• :

  • IP ์ฃผ์†Œ โ†’ MAC ์ฃผ์†Œ ๋งคํ•‘ ์ •๋ณด ์ €์žฅ
  • Forwarding ์‹œ Next-hop์˜ MAC ์ฃผ์†Œ ์กฐํšŒ
1
2
3
4
5
6
7
8
9
10
11
C:\Users\์‚ฌ์šฉ์ž>arp -a

์ธํ„ฐํŽ˜์ด์Šค: 172.30.1.59 --- 0x14
  ์ธํ„ฐ๋„ท ์ฃผ์†Œ       ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ           ์œ ํ˜•
  172.30.1.37     44-cb-8b-e4-01-64     ๋™์ 
  172.30.1.43     48-e2-44-27-c7-21     ๋™์ 
  172.30.1.128    90-f8-91-89-ba-6a     ๋™์ 
  172.30.1.254    00-07-89-82-0d-aa     ๋™์ 
  172.30.1.255    ff-ff-ff-ff-ff-ff     ์ •์ 
  224.0.0.2       01-00-5e-00-00-02     ์ •์ 
  ...

Routing Table Update

๋ผ์šฐํŒ… ํ…Œ์ด๋ธ” ๊ฐฑ์‹  ๋ฐฉ๋ฒ•:

  1. Routing Protocol (์ž๋™):
    • RIP, OSPF, BGP ๋“ฑ
    • ๋™์ ์œผ๋กœ ๊ฒฝ๋กœ ํ•™์Šต
  2. OS (์ž๋™):
    • ์ธํ„ฐํŽ˜์ด์Šค up/down ๊ฐ์ง€
    • ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ๋„คํŠธ์›Œํฌ ์ถ”๊ฐ€/์‚ญ์ œ
  3. Admin (์ˆ˜๋™):
    • Static route ์ถ”๊ฐ€
    • ๊ด€๋ฆฌ์ž๊ฐ€ ์ง์ ‘ ์„ค์ •

Forwarding ์˜ˆ์‹œ

๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
                   166.140.21.23/24 (Ethernet)
                        โ”‚
       166.140.21.49/28โ”€โ”ผโ”€166.140.21.3/28
                        โ”‚
          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
          โ”‚        Router              โ”‚
          โ”‚                            โ”‚
          โ””โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”˜
            โ”‚ PPP                  โ”‚ Ethernet
   166.140.21.50/28                โ”‚
            โ”‚                      โ”‚
   166.140.21.67/28        166.140.21.0/28
            โ”‚                      โ”‚
        โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”              โ”Œโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”
        โ”‚Routerโ”‚              โ”‚ Hosts   โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
   166.140.21.77/28

Routing Table:

DestinationNext hopNetmaskInterface
166.140.21.0ย ย eth0
127.0.0.0127.0.0.1255.0.0.0lo0
166.140.21.50ย ย ppp0
ย ย ย ppp1
0.0.0.0166.140.21.1ย eth1

ํฌ์›Œ๋”ฉ ๊ฒฐ์ •:

1
2
3
4
5
6
7
8
9
10
11
ํŒจํ‚ท ๋„์ฐฉ: Destination = 166.140.21.5

Step 1: Routing Table ์กฐํšŒ
  - 166.140.21.0 ๋งค์น˜! (eth0)

Step 2: ARP Cache ์กฐํšŒ
  - 166.140.21.5์˜ MAC ์ฃผ์†Œ?

Step 3: ํŒจํ‚ท ์ „์†ก
  - Ethernet frame์œผ๋กœ ์บก์Аํ™”
  - eth0 ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์†ก์ถœ

์ •๋ฆฌ

IP์˜ ํ•ต์‹ฌ ํŠน์ง• ์š”์•ฝ

ํŠน์ง•์„ค๋ช…
ConnectionlessํŒจํ‚ท๋งˆ๋‹ค ๋…๋ฆฝ์  ์ฒ˜๋ฆฌ
Unreliable์†์‹ค, ์ค‘๋ณต, ์ˆœ์„œ ๋’ค๋ฐ”๋€œ ๊ฐ€๋Šฅ
Best EffortQoS ๋ณด์žฅ ์—†์Œ
Hourglass๋ชจ๋“  ๋„คํŠธ์›Œํฌ ๊ธฐ์ˆ ์˜ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค

IP Header์˜ ์ค‘์š” ํ•„๋“œ

ํ•„๋“œ์—ญํ• ํฌ๊ธฐ
VersionIPv4 vs IPv64 bits
Total LengthํŒจํ‚ท ์ „์ฒด ํฌ๊ธฐ16 bits
IdentificationFragment ์‹๋ณ„16 bits
Flags & OffsetFragmentation ์ œ์–ด16 bits
TTL๋ฌดํ•œ ๋ฃจํ”„ ๋ฐฉ์ง€8 bits
Protocol์ƒ์œ„ ํ”„๋กœํ† ์ฝœ ์‹๋ณ„ (TCP/UDP)8 bits
Checksumํ—ค๋” ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ16 bits
Source/Dest IP์†ก์ˆ˜์‹ ์ž ์ฃผ์†Œ32 bits

Forwarding์˜ ํ•ต์‹ฌ: Routing Table์˜ Longest Prefix Matching์œผ๋กœ Next-hop ๊ฒฐ์ •!

This post is licensed under CC BY 4.0 by the author.