netwhat / NetPractice




1. Basic Concept

1) Protocol μ΄λž€?

μ •ν™•νžˆ 3가지λ₯Ό κΈ°μ–΅ν•˜λ©΄ λœλ‹€.
λ§Žμ€ λΈ”λ‘œκ·Έμ—μ„œλŠ” Protocolμ΄λž€ Sender, Receiver의 μƒν˜Έ κ°„μ˜ κ·œμ•½ (톡신을 효율적으둜 ν˜Ήμ€ νŠΉμ • λͺ©μ μ„ λ‹¬μ„±ν•˜κΈ° μœ„ν•œ) 이라고 λͺ…μ‹œλ₯Ό ν•΄λ‘”λ‹€. κ·Έλ ‡λ‹€λ©΄ κ·Έ κ·œμ•½μ΄ 무엇을 μ •μ˜ν•˜κ³  μžˆλŠ”μ§€κ°€ μ€‘μš”ν• ν…λ°, 그것이 μœ„μ˜ 3가지 ν‚€μ›Œλ“œμ΄λ‹€.
톡신에 μžˆμ–΄μ„œ λ©”μ„Έμ§€μ˜ ν˜•μ‹μ΄ μ–΄λ– ν•œμ§€
λ„€νŠΈμ›Œν¬ 개체 간에 ν•΄λ‹Ή 메세지λ₯Ό μ–΄λ–€ μˆœμ„œλ‘œ 받을 것인지
μžμ‹ μ΄ ν•΄λ‹Ή 메세지λ₯Ό λ°›κ±°λ‚˜ μ „λ‹¬ν–ˆμ„ λ•Œ μ–΄λ–€ 행동을 μˆ˜ν–‰ν•  것인지
λ₯Ό λͺ…μ‹œν•œ 것이 Protocol이닀.
메세지에 λŒ€ν•΄μ„œλŠ” μ •ν™•ν•œ ν˜•μ‹μ„ 지킀지 μ•ŠμœΌλ©΄ 해석 μžμ²΄κ°€ λΆˆκ°€λŠ₯ν•˜λ©°
λ©”μ„Έμ§€μ˜ ν˜•μ‹μ΄ μ˜¬λ°”λ₯΄λ”라도 주어진 μˆœμ„œλ₯Ό 지킀지 μ•ŠμœΌλ©΄ Protocol에 λŒ€ν•œ 행동 μˆ˜ν–‰μ΄ λΆˆκ°€λŠ₯ν•˜κ³ 
메세지 행동이 λͺ…ν™•ν•˜μ§€ μ•ŠμœΌλ©΄ ν˜•μ‹κ³Ό μˆœμ„œλ₯Ό μ§€μΌœλ„ μ–΄λ–€ 행동을 할지 μ•Œ 수 μ—†κ²Œ λ˜μ–΄ λ¬΄μš©μ§€λ¬Όμ΄ λœλ‹€λŠ” 것이닀.

2) Protocol Layering μ΄λž€?

νŠΉμ • Protocol둜 μ‚¬μš©μžμ™€ 톡신을 ν•˜λŠ” κ³Όμ •μ—μ„œ λ©”μ„Έμ§€μ˜ Deliveryκ°€ λ°œμƒν–ˆλ‹€κ³  ν•˜λ©΄, Deliveryμ™Έμ˜ μž‘λ‹€ν•œ 일을 ν•œ μž₯μΉ˜μ—μ„œ λͺ¨λ‘ μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ”λ‹€. 이 λ•Œ Protocol이 μˆ˜ν–‰ν•˜λŠ” νŠΉμ • ν–‰μœ„ μ™Έμ˜ λͺ¨λ“  것듀을 ν•˜μœ„ κ³„μΈ΅μ˜ Protocolμ—κ²Œ 맑긴닀.
ꡬ쑰λ₯Ό μ‚΄νŽ΄λ³΄λ©΄, ν•˜μœ„ κ³„μΈ΅μ˜ Protocol λ‹€μ‹œ ν•˜μœ„ κ³„μΈ΅μ˜ Protocolμ—κ²Œ μœ„μž„ν•˜λŠ” Recursive Relationship이 λ°œμƒν•˜λŠ”λ°, 이 λ•Œμ˜ 논리 ꡬ쑰λ₯Ό Protocol Stack이라고 λΆ€λ₯Έλ‹€. (측측이 λ‘”λ‹€λŠ” Layering의 μ˜λ―Έμ™€ 동일)
Layering이 ν•„μš”ν•œ μ΄μœ μ— λŒ€ν•΄μ„œ Single Layer ꡬ쑰와 Triple Layer ꡬ쑰λ₯Ό 톡해 μ‚΄νŽ΄λ³΄μž.

Single Layer Protocol (λŒ€λ©΄μ˜ 경우)

이 λ•Œμ˜ μš”κ΅¬ 쑰건은 μ„œλ‘œκ°€ λ§Œλ‚¬μ„ λ•Œ 인사λ₯Ό ν•΄μ•Όν•˜λ©°, μ„œλ‘œμ˜ 관계에 λ”°λ₯Έ ν•  말을 κ³¨λΌμ•Όν•˜λ©°, μƒλŒ€κ°€ 말할 λ•ŒλŠ” 침묡을 ν•΄μ•Ό ν•˜κ³ , μ„œλ‘œκ°€ ν—€μ–΄μ§ˆ λ•ŒλŠ” μž˜κ°€λΌλŠ” 인사λ₯Ό ν•΄μ€˜μ•Ό ν•œλ‹€.

Triple Layer Protocol (λΉ„λŒ€λ©΄μ˜ 경우)

이 λ•Œμ˜ μš”κ΅¬ 쑰건은 λ§Œλ‚˜μ§€ μ•Šμ•„λ„ (윑체적으둜 멀어도) μ†Œν†΅μ΄ κ°€λŠ₯ν•˜κ³ , μ„œλ‘œκ°€ ν•˜κ³  싢은 말이 μžˆλ‹€λ©΄ λ™μ‹œμ— μ†Œν†΅μ„ 해도 되며, μ•”ν˜Έν™” 덕에 λ‘˜ 외에 λ‹€λ₯Έ μ‚¬λžŒλ“€μ€ μ†Œν†΅μ— μ°Έμ—¬λ₯Ό ν•  μˆ˜κ°€ μ—†μœΌλ©°, λ‚΄κ°€ μ“°κ³  싢은 말을 μ“°κΈ°λ§Œ ν•˜λ©΄ 직접 μ „λ‹¬ν•˜μ§€ μ•Šμ•„λ„ 전달이 보μž₯λœλ‹€.
즉, Layering을 ν•˜κ²Œ 되면 ν•œ μΈ΅μ—μ„œ Protocol이 μˆ˜ν–‰ν•΄μ•Όν•˜λŠ” 행동 λ²”μœ„κ°€ 많이 μ€„μ–΄λ“€λ©΄μ„œ 각자 μžμ‹ μ˜ μž„λ¬΄λ§Œ λͺ…ν™•νžˆ μˆ˜ν–‰ν•˜κ²Œ 될 수 μžˆλŠ” μž₯점이 생긴닀. λ”°λΌμ„œ Protocol Layeringμ΄λΌλŠ” 것은 λ³΅μž‘ν•œ 업무λ₯Ό μž‘μ€ 일의 λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ κ°„λ‹¨ν•œ 업무λ₯Ό λΆ€λ‹΄ν•˜κ²Œ ν•˜λŠ” κ²ƒμœΌλ‘œ λ³Ό 수 μžˆλ‹€.
비둝 κ°„λ‹¨ν•œ 업무가 λ³΅μž‘ν•΄μ§ˆ μˆ˜λŠ” μžˆλ”λΌλ„ Protocol Layering을 ν–ˆμ„ λ•Œ λ‹€μŒκ³Ό 같은 κΈ°λŒ€ 효과λ₯Ό 얻을 수 μžˆλ‹€.
Protoco 간에 μƒν˜Έ 독립적인 κΈ°λŠ₯μ„±λ§Œ λ‘˜ 수 μžˆλ‹€. (각 Protocol의 독립적인 μˆ˜μ •μ΄ κ°€λŠ₯)
각 Protocol의 λ‚΄λΆ€λ₯Ό μΌμ’…μ˜ λΈ”λž™λ°•μŠ€λΌκ³  μ—¬κΈΈ 수 μžˆλ‹€. (λ‚΄λΆ€ λ™μž‘ 원리에 λŒ€ν•΄μ„œ μ „ν˜€ 지식이 없더라도 Input을 λ„£μ—ˆμ„ λ•Œ Output을 λ³Ό 수 μžˆλ‹€.)

Protocol Layering의 원칙

Bidirectional (μ–‘λ°©ν–₯μ„±)
톡신을 ν•΄μ•Όν•˜λŠ” κ²½μš°μ— 각 LayerλŠ” 솑신과 μˆ˜μ‹  두 가지에 λŒ€ν•΄μ„œ μˆ˜ν–‰ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. (Sender, Receiverλ₯Ό μˆ˜ν–‰ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” 것)
두 객체 μ•„λž˜μ˜ Layer듀은 λ™μΌν•˜κ²Œ μŒ“μ—¬ μžˆμ–΄μ•Ό ν•œλ‹€.

3) OSI 7 Layer (Open System Interconnection)

OSI 7 계측은 맀우 잘 μ •μ˜ (Well-Defined)된 κ°œλ…μ  ꡬ쑰라고 보면 λœλ‹€. 각 Protocol의 보편적인 역할을 μ„€λͺ…ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€. OSI 7 κ³„μΈ΅λŠ” ISO (International Organization for Standardization)μ—μ„œ λ§Œλ“€μ—ˆμœΌλ©°, 이름 κ·ΈλŒ€λ‘œ 7개의 계측을 이룬닀. 각 계측별 역할은 λ‹€μŒκ³Ό κ°™λ‹€.
κ°„ν˜Ή 편의λ₯Ό μœ„ν•΄ μ•„λž˜ 계측듀을 4개의 Layer둜 보기도 ν•˜λŠ”λ°, 1계측과 2계측을 묢은 Link Layer, Network Layer, Transport Layer, 5계측과 6계측 그리고 7계측을 묢은 Application Layer둜 ν‘œν˜„ν•˜κΈ°λ„ ν•œλ‹€.

[1]Physical (Physical Communication / LAN or NIC Hardware)

맀채λ₯Ό 톡해 λΉ„νŠΈ 데이터λ₯Ό Stream의 ν˜•νƒœλ‘œ μ „μ†‘ν•˜κ³  λ°›λŠ” 역할을 μˆ˜ν–‰ν•˜μ—¬ 기계적 전기적인 νŠΉμ„±μ„ μ œκ³΅ν•˜λŠ” Layer이닀.
Data Link Layerλ‘œλΆ€ν„° 받은 Frame을 μ‹€μ œ λΉ„νŠΈλ‘œ 해석할 수 μžˆλ„λ‘ λΉ„νŠΈ 슀트림으둜 λ§Œλ“€μ–΄μ„œ 역할을 μˆ˜ν–‰ν•œλ‹€.
역할을 μˆ˜ν–‰ν•  λ•ŒλŠ” λΉ„νŠΈλ₯Ό Electrical Signal, Light Signal, Radio Signal λ“±μœΌλ‘œ 처리λ₯Ό ν•œλ‹€. 이 λ•Œ 처리의 λ‹¨μœ„κ°€ λΉ„νŠΈκ°€ μ•„λ‹Œ Signal인 μ΄μœ λŠ” μ—¬λŸ¬ λΉ„νŠΈλ₯Ό ν•œ Signal에 λ„£μ–΄μ„œ μ΄μš©ν•˜κ³  이λ₯Ό 톡해 처리 횟수λ₯Ό 쀄일 수 있기 λ•Œλ¬Έμ΄λ‹€.
Signal, μ‹œκ·Έλ„μ΄λž€? Signal은 λ§κ·ΈλŒ€λ‘œ μ „κΈ° μ‹ ν˜Έ, 즉, μ‹œκ°„μ— 따라 μ „κΈ°μ˜ 흐름을 ν‘œκΈ°ν•˜λŠ” 것이닀. κ³Όν•™ μ‹œκ°„μ— μ „κΈ°κ°€ ν†΅ν• λ•ŒλŠ” 1, μ•ˆν†΅ν•  λ•ŒλŠ” 0으둜 ν‘œν˜„ν•˜λŠ” μ‹œκ°„ κ·Έλž˜ν”„λ₯Ό λ³Έ 적이 ν•œλ²ˆμ”© μžˆμ„ 것이닀. ν˜Ήμ€ AC, DC κ·Έλž˜ν”„ 및 λ¬Όκ²°λͺ¨μ–‘μœΌλ‘œ 생긴 파μž₯ κ·Έλž˜ν”„λ“€λ„ μ΄λŸ¬ν•œ Signal이라고 μƒκ°ν•˜λ©΄ λœλ‹€. Physical Layerμ—μ„œλŠ” λΉ„νŠΈλ“€μ„ μ΄λŸ¬ν•œ Signal에 λ„£μ–΄μ„œ 물리적으둜 톡신을 μ§„ν–‰ν•œλ‹€!

[2]Data Link (Hop to Hop / NIC Driver)

λΉ„νŠΈ 데이터 ν˜Ήμ€ Packet을 Frameν™” ν•˜μ—¬ κΈ°κΈ° κ°„ Hop-to-Hop μ „λ‹¬ν•˜λŠ” 역할을 ν•˜λŠ” Layer이닀.
Packet, νŒ¨ν‚·μ΄λž€? μ»΄ν“¨ν„°μ—μ„œ 데이터λ₯Ό 주고받을 λ•Œ μ •ν•΄λ‘” 데이터 ν˜•μ‹μ΄λ‹€. Packκ³Ό Bucket을 ν•©μΉœ 말이닀. μš°μ²΄κ΅­μ—μ„œ 큰 화물을 μ λ‹Ήν•œ 크기둜 λ‚˜λˆ„μ–΄ 행선지 λ“± 정보λ₯Ό ν‘œμ‹œν•˜λŠ” μš΄μ†‘μž₯을 λΆ™μ΄λŠ”λ°, μ΄λŸ¬ν•œ 방식을 톡신에도 μ ‘λͺ©μ‹œν‚¨ 것이닀. 즉, 정보λ₯Ό 보낼 λ•Œ νŠΉμ •ν•œ ν˜•νƒœμ— λ§žμΆ”μ–΄ λ³΄λ‚Έλ‹€λŠ” 것이닀. 컴퓨터간 데이터λ₯Ό 주고받을 λ•Œ, λ„€νŠΈμ›Œν¬λ₯Ό ν†΅ν•΄μ„œ μ „μ†‘λ˜λŠ” 데이터 쑰각이라고 μƒκ°ν•˜λ©΄ νŽΈν•˜λ‹€!
Hop-to-Hop으둜 μ „λ‹¬ν•œλ‹€λŠ” μ˜λ―ΈλŠ” μ„œλ‘œ μ†ν•œ λ„€νŠΈμ›Œν¬κ°€ κ°™μœΌλ©΄μ„œ μΈμ ‘ν•œ κΈ°κΈ° (Adjacent Node)μ—κ²Œ 데이터λ₯Ό μ „λ‹¬ν•œλ‹€λŠ” 것이닀. 이 λ•Œ κΈ°κΈ°κ°€ 가진 μ‹€μ œ μ£Όμ†Œ(MAC μ£Όμ†Œ)λ₯Ό μ΄μš©ν•œλ‹€.
MAC Address, λ§₯ μ£Όμ†Œλž€? Media Access Control의 μ•½μžλ‘œ 각 기기의 λ„€νŠΈμ›Œν¬ μΉ΄λ“œ(ν•˜λ“œμ›¨μ–΄)에 λΆ€μ—¬λœ κ³ μœ ν•œ 물리적 μ£Όμ†Œμ΄λ‹€! 즉, λͺ¨λ“  λ„€νŠΈμ›Œν¬ μž₯λΉ„λŠ” μžμ‹ λ§Œμ˜ κ³ μœ ν•œ MAC μ£Όμ†Œλ₯Ό 가지고 μžˆλ‹€. 48λΉ„νŠΈλ‘œ κ΅¬μ„±λ˜μ–΄ 있으며 16μ§„μˆ˜λ‘œ ν‘œμ‹œλœλ‹€ μœˆλ„μš°μ—μ„œλŠ” 터미널 β†’ ipconfig λͺ…λ Ήμ–΄ Macμ—μ„œλŠ” 터미널 β†’ ifconfig λͺ…λ Ήμ–΄ 둜 확인할 수 μžˆλ‹€.
Data Link LayerλŠ” Network Layer의 μΈν„°νŽ˜μ΄μŠ€λ‘œ μž‘μš©λœλ‹€. (즉, μ„±κ³΅μ μœΌλ‘œ 데이터λ₯Ό 보내기 μœ„ν•΄μ„  Network LayerλŠ” λͺ©μ μ§€μ— λŒ€ν•œ λͺ…ν™•ν•œ Data Link Layer의 μ£Όμ†Œλ₯Ό λͺ…μ‹œν•  수 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” 것이닀.)
λ˜ν•œ Hop-to-Hop으둜 μΈμ ‘ν•œ 기기에 μ „μ†‘λœ 데이터듀은 Errorκ°€ 없도둝 μ „λ‹¬λœλ‹€. 즉, μˆ˜μ‹  μΈ‘ κΈ°κΈ°μ—μ„œλŠ” 이미 μ˜¬λ°”λ₯Έ 데이터듀을 무쑰건 λ°›κ²Œλ˜μ–΄ μžˆλ‹€λŠ” 것이닀. 이 덕에 μˆ˜μ‹  μΈ‘μ—μ„œλŠ” μˆ˜μ‹ ν•œ 데이터λ₯Ό μƒμœ„ Layer둜 올릴 λ•Œ Error Freeλ₯Ό κ°€μ •ν•  수 μžˆλ‹€.
(이미 μ˜¬λ°”λ₯Έ 데이터듀을 λ°›μ•„ 놓은 μƒνƒœμ΄λ―€λ‘œ Error Detection만 κ°€λŠ₯ν•˜λ‹€λ©΄ Error Correction의 여지가 μΆ©λΆ„ν•˜λ―€λ‘œ Error Free라고 ν•  수 μžˆλ‹€.)
Transport Layer와 같이 Flow Control, Error Detection, Error Correction이 κ°€λŠ₯ν•˜λ‹€. ν•˜μ§€λ§Œ μ΄λŠ” Transport Layer의 κ²ƒκ³ΌλŠ” μ‘°κΈˆμ€ λ‹€λ₯΄λ‹€. Tranposrt LayerλŠ” 인터넷 μƒμ—μ„œ Logical Connection μƒνƒœμ—μ„œμ˜ Layer κ°„ μ „λ‹¬μ—μ„œ μΌμ–΄λ‚˜λŠ” 것이고, Data Link Layerμ—μ„œλŠ” λ„€νŠΈμ›Œν¬ λ‚΄μ˜ κΈ°κΈ°κ°„ μ „λ‹¬μ—μ„œ μΌμ–΄λ‚˜λŠ” 것이닀.

[3]Network (Host to Host / Kernel Space of OS)

μƒν˜Έ κ°„μ˜ λ„€νŠΈμ›Œν‚Ήμ„ μœ„ν•΄ Packet의 ν˜•νƒœλ‘œ Sourceμ—μ„œ Destination으둜 μš΄μ†‘ν•˜λŠ” 역할을 μˆ˜ν–‰ν•˜λŠ” Layer이닀.
λ‹¨μˆœνžˆ DestinationκΉŒμ§€μ˜ μš΄μ†‘ μ—­ν• λ§Œ μˆ˜ν–‰ν•˜λŠ” 것이 μ•„λ‹ˆλΌ μ •ν™•νžˆ λ”°μ§€μžλ©΄, Network LayerλŠ” Routingκ³Ό 관련이 μžˆλ‹€.
Routing, λΌμš°νŒ…μ΄λž€? μƒν˜Έ μž‘μš©μ΄ κ°€λŠ₯ν•œ λ„€νŠΈμ›Œν¬λ“€μ„ κ΅¬μ„±ν•˜κΈ° μœ„ν•΄ λ…λ¦½μ μœΌλ‘œ μš΄μ˜λ˜λŠ” λ„€νŠΈμ›Œν¬λ₯Ό 묢게 되면, Sourceμ—μ„œ DestinationκΉŒμ§€ λ„λ‹¬ν•˜κΈ° μœ„ν•œ μ—¬λŸ¬ 경둜(Multiple Routes)듀이 생긴닀. 이 λ•Œ, Sourceμ—μ„œ DestinationκΉŒμ§€ 데이터λ₯Ό λ³΄λ‚΄λŠ”λ° μžˆμ–΄μ„œ κ°€μž₯ 쒋은 경둜λ₯Ό κ²°μ •ν•˜κ²Œ λœλ‹€. μ΄λ ‡κ²Œ μ°Ύμ•„λ‚΄λŠ” κΈ°λŠ₯ 자체λ₯Ό Routing이라고 보면 λœλ‹€.
Internetworking μ΄λž€? μœ„μ—μ„œ μ–ΈκΈ‰λœ Internetworkingμ΄λž€ μΌμ’…μ˜ μΈν„°νŽ˜μ΄μŠ€κ°„μ˜ Packet μ†‘μˆ˜μ‹ μ„ λ§ν•œλ‹€. 즉, Endpoint κ°„μ˜ Packet μ†‘μˆ˜μ‹ μ΄ μ•„λ‹ˆλ”λΌλ„ λ‹€λ₯Έ λ„€νŠΈμ›Œν¬μ˜ Gateway ν˜Ήμ€ Router κ°„μ˜ Packet μ†‘μˆ˜μ‹ λ„ 이에 ν•΄λ‹Ήν•œλ‹€. κ°„λ‹¨ν•˜κ²Œ μ΅œμ’… DestinationκΉŒμ§€μ˜ 톡신 뿐만 μ•„λ‹ˆλΌ 쀑간 κ°œμ²΄λ“€ κΉŒμ§€μ˜ μ†‘μˆ˜μ‹ λ„ ν¬ν•¨ν•˜λŠ” 것이닀!
IP에 ν•΄λ‹Ήν•˜λŠ” 것듀이 Network Layer에 ν•΄λ‹Ήν•˜λŠ”λ°, 이 λ•Œ IPλŠ” Connectionless이며 λ‹¨μˆœνžˆ Destination을 μ°Ύμ•„κ°€κΈ° μœ„ν•œ μš©λ„μ˜ Internetworking μ„œλΉ„μŠ€λΌκ³  보면 λœλ‹€.
IPλŠ” 기본적으둜 End-to-End의 Reliable Deliveryλ₯Ό 보μž₯해주진 μ•ŠλŠ”λ‹€. κ·Έλ ‡λ‹€κ³  μ΅œμ„ μ„ λ‹€ν•˜μ§€ μ•ŠλŠ” 것은 μ•„λ‹Œλ°, 이λ₯Ό Best Effort Delivery라고 ν•œλ‹€.
Network Layerμ—μ„œ μ‚¬μš©ν•˜λŠ” μ£Όμ†ŒλŠ” IP μ£Όμ†Œλ‘œ μΌμ’…μ˜ Logical Address이닀. (말 κ·ΈλŒ€λ‘œ 기기에 λŒ€ν•œ μ‹€μ§ˆμ μΈ μ£Όμ†ŒλŠ” μ•„λ‹ˆλ‹€.) Public IP와 같이 μ‚¬μš©λ˜λŠ” IP μ£Όμ†ŒλŠ” μ‚¬μš©μžμ— λŒ€ν•΄μ„œ Uniquely, Universally Distinguishableν•˜κ²Œ ν•΄μ€€λ‹€.

[4]Transport (Process to Process / Kernel Space of OS)

μ‹ λ’°μ„± 보μž₯ 등을 μœ„ν•΄ 정해진 μˆœμ„œλŒ€λ‘œ 메세지λ₯Ό κ΅¬μ„±ν•˜μ—¬ λ„˜κ²¨μ£Όμ–΄ Error Detection ν˜Ήμ€ Error Correction등을 μˆ˜ν–‰ν•  수 μžˆλŠ” Layer이닀.
Transport Layer의 κ°€μž₯ 기본적인 κΈ°λŠ₯은 Unreliable Data Delivery이닀. (신뒰성을 보μž₯해주지 μ•Šμ€μ±„λ‘œ μ „λ‹¬ν•˜λŠ” 것이 κ°€μž₯ 기본적인 κΈ°λŠ₯이닀.) 즉, Connection-Oriented Protocol (TCP, SCTP, RTP λ“±)κ³Ό Connectionless Protocol (UDP) μ€‘μ—μ„œ ν›„μžκ°€ Transport Layer의 κ°€μž₯ 기본적인 κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” Protocol이라고 보면 λœλ‹€.
λ‹€μŒμ€ Connectionless Protocolκ³Ό 달리 Connection-Oriented Protocol의 주된 5가지 κΈ°λŠ₯이닀.
Connection Management (TCP의 경우 3 Hand-Shaking)
Connection Multiplexing (Portλ₯Ό μ΄μš©ν•œ)
Segmentation (SCTP의 Chuck)
Reliable Delivery
Flow Control(μˆ˜μ‹  μΈ‘μ—μ„œ μˆ˜ν–‰), Congestion Control (솑신 μΈ‘μ—μ„œ μˆ˜ν–‰)

[5]Session (Peer to Peer / User Space of OS)

Session λŒ€ν•œ 생성, 관리, μ’…λ£Œλ₯Ό λ‹΄λ‹Ήν•˜λŠ” Layer이닀.
Sessionμ΄λž€? Session이라 함은 인간이 μΌν•˜λŠ” λ‹¨μœ„λ₯Ό λ§ν•œλ‹€. Session은 Connection을 λ‹΄κ³  있기 λ•Œλ¬Έμ—, μ „λ°˜μ μΈ Connection을 κ΄€λ¦¬ν•œλ‹€.
Endpointλ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬μš©μž κ°„μ˜ Application Processλ“€ 사이에 Session을 μ—΄κ³  λ‹«κ³  κ΄€λ¦¬ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μ„ μˆ˜ν–‰ν•œλ‹€. λ”°λΌμ„œ 두 Host 사이에 첫 Connection을 열기도 ν•˜κ³ , μ΄λ ‡κ²Œ μ—΄λ¦° Session을 ν†΅ν•΄μ„œ 정해진 μ‹œκ°„λ™μ•ˆ 데이터 솑신과 μˆ˜μ‹ μ„ κ°€λŠ₯ν•˜κ²Œ ν•΄μ€€λ‹€.
예λ₯Ό λ“€λ©΄, VoIP(Voice over IP)μ—μ„œ μ‚¬μš©λ˜λŠ” SIP (Session Initiate Protocol)κ°€ 이에 ν•΄λ‹Ήν•œλ‹€.
μ΄λŸ¬ν•œ Session Layerκ°€ μ€‘μš”ν•œ μ΄μœ λŠ”, Endpointκ°„ 메세지 솑신 μˆ˜μ‹ μ„ μ§„ν–‰ν•˜λ©΄μ„œ Dialog Control (Endpoint의 Token을 μ΄μš©ν•˜μ—¬ λˆ„κ°€ 전솑할 차둀인지에 λŒ€ν•œ μˆœμ„œ μ‘°μ • 및 관리)κ³Ό Synchronization (Stream으둜 λ“€μ–΄μ˜€λŠ” 데이터에 λŒ€ν•΄μ„œ 동기화 지점을 기둝)이 κ°€λŠ₯ν•˜λ„λ‘ λ§Œλ“€μ–΄μ£ΌκΈ° λ•Œλ¬Έμ΄λ‹€.
Session Layerμ—λŠ” μ—¬λŸ¬ κ²½μš°λ“€μ΄ μžˆλŠ”λ°.
One to Many의 경우 κ°€μž₯ 일반적인 경우라고 보면 λœλ‹€.

[6]Presentation (Peer to Peer / User Space of OS)

데이터에 λŒ€ν•œ Translate, Encrypt (Decrypt), Compress (Decompress) 등을 μˆ˜ν–‰ν•˜λŠ” Layer이닀. (참고둜 λ„€νŠΈμ›Œν¬μ—μ„œλŠ” Big Endian을 μ‚¬μš©ν•œλ‹€.)
데이터λ₯Ό Network Formatμ—μ„œ Application Format으둜 λ°”κΎΈκ±°λ‚˜, Application Formatμ—μ„œ Network Format으둜 λ°”κΎΈλŠ” 역할을 ν•œλ‹€.
예λ₯Ό λ“€μ–΄μ„œ 솑신 μ‹œμ— Encoding, Compressing을 μž‘μ—… ν–ˆλ‹€λ©΄, μˆ˜μ‹  μΈ‘μ—μ„œλŠ” Decoding, Decompressing μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€.

[7]Application (Peer to Peer / User Space of OS)

λ„€νŠΈμ›Œν¬ μžμ›μ— μ ‘κ·Όν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” Layer이닀. λ„€νŠΈμ›Œν¬ μžμ›μ— μ ‘κ·Όν•  수 있기 λ•Œλ¬Έμ—, 솑신과 μˆ˜μ‹ μ„ μœ„ν•œ 데이터λ₯Ό λ„€νŠΈμ›Œν¬μ— μ œκ³΅ν•˜λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€.
7개의 Layer μ€‘μ—μ„œ κ°€μž₯ μœ„μ— μžˆλŠ” Layer둜써, μ‚¬μš©μžμ™€ 직접 μƒν˜Έμž‘μš©μ„ ν•˜λ©° λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— μ‚¬μš©μžμ—κ²Œ λ³΄μ΄λŠ” 뢀뢄이닀.
예λ₯Ό λ“€λ©΄ Internet Explorer ν˜Ήμ€ Google Chromeκ³Ό 같은 Browserκ°€ μžˆμ„ 수 있고, Gmailκ³Ό 같은 Email Clientκ°€ μžˆλ‹€.
솑, μˆ˜μ‹  μ‹œμ— 솑신 μΈ‘μ—μ„œλŠ” 7 ~ 1 계측을 거쳐 μˆ˜μ‹  츑의 1 ~ 7 계측을 μ§€λ‚˜μ„œ 메세지가 μ „λ‹¬λœλ‹€. 이 λ•Œμ˜ μ£Όκ³  λ°›λŠ” λ©”μ„Έμ§€μ˜ 데이터 ν˜•μ‹μ€ μ•„λž˜μ™€ κ°™λ‹€.

OSI 7 Layer 이용의 μž₯점

ν•œ κ³„μΈ΅μ—μ„œμ˜ μˆ˜μ •μ΄ λ‹€λ₯Έ 계측에 λŒ€ν•œ μˆ˜μ •μ„ μ•ΌκΈ°ν•˜λŠ” 것을 방지할 수 μžˆλ‹€.
μ‚°μ—…μ μœΌλ‘œ ν‘œμ€€ν™”λ₯Ό μ΄λŒμ–΄ λ‚Ό 수 μžˆλ‹€.
λ„€νŠΈμ›Œν¬ 톡신 과정을 μ—¬λŸ¬ μž‘μ€ μš”μ†Œλ‘œ μͺΌκ°¬μœΌλ‘œμ¨ 개발, λ””μžμΈ, 문제 ν•΄κ²° 등을 μš©μ΄ν•˜κ²Œ ν•œλ‹€.
λ„€νŠΈμ›Œν¬ ꡬ성 μš”μ†Œμ˜ ν‘œμ€€ν™”λ₯Ό 톡해 λ„€νŠΈμ›Œν¬μ— λŒ€ν•œ μ—¬λŸ¬ 곡급 업체λ₯Ό κ°œλ°œν•  수 μžˆλ‹€.
λ„€νŠΈμ›Œν¬ κ΄€λ¦¬μžμ—κ²Œ λ„€νŠΈμ›Œν¬ 관리λ₯Ό μš©μ΄ν•˜κ²Œ ν•  수 μžˆλ‹€. (λ¬Έμ œκ°€ 생겼을 λ•Œ 전체λ₯Ό νƒμƒ‰ν•˜λŠ” 것이 μ•„λ‹ˆλΌ ν•΄λ‹Ή Layer만 μ°Ύμ•„λ³΄λŠ” μ‹μœΌλ‘œ λΉ λ₯΄κ³  효율적으둜 λŒ€μ²˜λ₯Ό ν•  수 μžˆλ‹€.)

4) Internet Architecture의 λͺ©ν‘œ

μ£Ό λͺ©ν‘œλŠ” μ‘΄μž¬ν•˜λŠ” μ„œλ‘œ μ—°κ²°λœ λ„€νŠΈμ›Œν¬λ“€μ˜ Multiplexed Utilization (닀쀑 ν™œμš©)을 μœ„ν•΄ 효율적인 기법을 λ§Œλ“€μ–΄ λ‚΄κ³ μž ν•˜λŠ” 것이닀.
뢀가적인 λͺ©ν‘œλ‘œλŠ” λ‹€μŒκ³Ό 같은 것듀이 μžˆλ‹€.
ν•œ μͺ½μ˜ λ„€νŠΈμ›Œν¬ ν˜Ήμ€ Gateway의 손싀이 μžˆλ”λΌλ„ 톡신 μžμ²΄λŠ” κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€λŠ” 것
톡신 쀑간에 μžˆλŠ” μž₯치(Gateway)λ“€μ—λŠ” 미리 μ„€μ •λ˜μ–΄ μžˆλŠ” Stateκ°€ μ—†λ‹€. 이 말은 Endpoint 간에 μ„œλ‘œμ— λŒ€ν•œ State듀을 κ°–κ³  μžˆλŠ” ν˜•νƒœκ°€ λ˜λŠ” 것을 μ˜λ―Έν•˜λŠ”λ°, μ΄λ ‡κ²Œ ν†΅μ‹ ν•˜κ³  μžˆλŠ” Endpoint에 Stateλ₯Ό λ‘λŠ” 것을 Fate Sharing이라고 ν•œλ‹€. Endpoint에 Stateλ₯Ό λͺ°μ•„μ„œ 둬야 ν•˜λ―€λ‘œ Endpoint에 μ‚¬μš©λ˜λŠ” 기기의 λ°œμ „μ΄ μ—†λ‹€λ©΄ μ œμ•½μ΄ λ§Žμ€ ν˜•νƒœμ˜€μœΌλ‚˜, 과거에 λ―Έκ΅­λ°©μ„±μ—μ„œ ꡭ방을 μœ„ν•΄ μ–΄λ§ˆμ–΄λ§ˆν•œ λˆμ„ λ“€μ—¬κ°€λ©΄μ„œ λ°œμ „ν•˜κ²Œ λ˜μ—ˆλ‹€. κ²°κ³Όμ μœΌλ‘œλŠ” 쀑간 κ±°μ λ§ˆλ‹€ Stateλ₯Ό 두지 μ•ŠλŠ” 것이 큰 μž₯점으둜 λ‹€κ°€μ˜¬ 수 있게 λ˜μ—ˆλ‹€.
β†’ GatewayλŠ” Stateless, EndpointλŠ” Stateful
μ—¬λŸ¬ νƒ€μž…μ˜ 톡신 μ„œλΉ„μŠ€λ₯Ό μ§€μ›ν•˜κ³ μž ν•˜λŠ” 것
TCP, UDP와 같은 μ—¬λŸ¬ 톡신 Protocol을 μ§€μ›ν•˜λŠ” 것이 κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€. λ‹€λ§Œ, μƒν˜Έ κ°„ 톡신을 ν•  λ•ŒλŠ” μ„œλ‘œ λ™μΌν•œ Protocol을 μ΄μš©ν•΄μ•Ό κ°€λŠ₯ν•˜λ‹€.
λ‹€μ–‘ν•œ λ„€νŠΈμ›Œν¬λ₯Ό μˆ˜μš©ν•˜λŠ” 것
LAN, μœ„μ„±λ§, νŒ¨ν‚·λ§ λ“±κ³Όμ˜ μƒν˜Έ 연결을 ν•  수 μžˆλ‹€. 즉, 기쑴에 μ‘΄μž¬ν•˜λŠ” λ§Žμ€ 망듀과 μ„œλ‘œ 연결이 κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€. 이 λ•Œ, 망 간에 μ„œλ‘œ λ‹€λ₯Έ κΈ°μˆ λ“€μ„ μ‚¬μš©ν•  μˆ˜λ„ μžˆλŠ” 상황이기 λ•Œλ¬Έμ— μ„œλ‘œ 연결이 κ°€λŠ₯ν•˜λ„λ‘ ν•˜κΈ° μœ„ν•΄μ„  μžμ‹  μ•„λž˜μ— μ‘΄μž¬ν•˜λŠ” 기술(ν˜Ήμ€ Protocol)은 크게 μ‹ κ²½ 쓰지 μ•ŠλŠ”λ‹€. μžμ‹  μ•„λž˜μ— μ‘΄μž¬ν•˜λŠ” κΈ°μˆ μ„ 크게 μ‹ κ²½ 쓰지 μ•ŠλŠ” λ‹€λ₯Έ μ΄μœ λ‘œλŠ” μ• μ΄ˆμ— ν•˜λ‚˜μ˜ κΈ°λŠ₯을 지 λ•Œ 일일이 λ‹€λ₯Έ κΈ°λŠ₯듀을 κ³ λ €ν•˜λ©° μ§œλŠ” 것이 어렡기도 ν•˜κ³ , 자기 κΈ°λŠ₯만 μ‹ κ²½ μ“°λ©΄ λ‹€λ₯Έ κΈ°λŠ₯λ“€κ³Ό Independentν•˜λ―€λ‘œ μˆ˜μ •μ—λ„ μš©μ΄ν•˜μ—¬ μ–΄λ–€ κΈ°μˆ μ—λ„ Mapping을 ν•˜μ—¬ μ΄μš©ν•  수 μžˆλ‹€λŠ” μž₯점을 두기 μœ„ν•΄μ„œλ‹€.
λ„€νŠΈμ›Œν¬μ— μ‘΄μž¬ν•˜λŠ” μžμ›μ„ λΆ„λ°° κ΄€λ¦¬ν•˜λŠ” 것
μžμ›λ“€μ€ 독립적인 AS (Autonomous System)에 μ˜ν•΄μ„œ 관리 λœλ‹€. 이런 AS듀은 BGP(Border Gateway Protocol)에 μ˜ν•΄μ„œ μ„œλ‘œ μ—°κ²°λœλ‹€. BGPλ₯Ό μ΄μš©ν•¨μœΌλ‘œμ¨ Routing의 쀑앙 μ§‘κΆŒμ„ 막을 수 μžˆλ‹€. μ΄λŸ¬ν•œ 관리가 μ€‘μš”ν•œ μ΄μœ λŠ” 18,000개의 Constituent Networkκ°€ μ‘΄μž¬ν•˜κ³  1M μ΄μƒμ˜ μ—”νŠΈλ¦¬λ₯Ό 가진 λ§Žμ€ Routing Tableλ“€λ‘œ μΈν•˜μ—¬, λ§Žμ€ μ§€μΆœμ΄ λ™λ°˜λ˜κΈ° λ•Œλ¬Έμ΄λ‹€. 그리고 ASκ°„μ˜ μ•„μ£Ό μž‘μ€ 였λ₯˜λ‘œ κ΅­κ°€ κ°„μ˜ 인터넷 접근에 ꡉμž₯히 큰 μž₯μ• λ₯Ό λ§Œλ“€ μˆ˜λ„ 있기 λ•Œλ¬Έμ΄λ‹€.
Cost-Effective ν•˜λ„λ‘ λ§Œλ“œλŠ” 것
Packet Switched Networkλ₯Ό ν†΅ν•΄μ„œ 쑰금 더 λΉ„μš©μ„ μ ˆκ°ν•  수 μžˆλŠ” ν˜•νƒœκ°€ λ˜μ—ˆλ‹€. λͺ¨λ“  Packet듀은 곡용 인터넷을 톡해 μ „λ‹¬λ˜λŠ”λ°, 이 λ•Œλ¬Έμ— Packet 전솑 μ‹œ ν•„μš”ν•œ 정보듀이 Overheadκ°€ λ˜λŠ” 단점은 μ‘΄μž¬ν•œλ‹€. (μΆ”κ°€λ‘œ 뢙은 정보듀에 λŒ€ν•œ Encapsulation, Decapsulation이 Overhead둜 μž‘μš©ν•˜κ²Œ λœλ‹€.)
적은 λ…Έλ ₯으둜 μƒˆλ‘œμš΄ Hostκ°€ λ„€νŠΈμ›Œν¬μ— 뢙을 수 μžˆλ„λ‘ ν•˜λŠ” 것
IPλŠ” ꡉμž₯히 νŽΈλ¦¬ν•˜κ²Œ Plug & Playκ°€ κ°€λŠ₯ν•˜λ‹€. IP Stack을 μ΄μš©ν•˜λŠ” λͺ¨λ“  것듀은 인터넷에 μ—°κ²° 될 수 μžˆλ‹€. ν•˜μ§€λ§Œ 이 뢀뢄에 λŒ€ν•΄μ„  Endpoint λ‹¨λ§μ˜ λ¬Έμ œλ³΄λ‹€λŠ” ν”„λ‘œκ·Έλž˜λ¨Έμ˜ 역할이 μ€‘μš”ν•˜λ‹€. Endpointλ₯Ό μ΄μš©ν•˜λŠ” μ‚¬μš©μžλ“€μ€ μ‰½κ²Œ μ‚¬μš©ν•˜μ§€λ§Œ, μ΄λ ‡κ²Œ μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ§Œλ“œλŠ” 역할은 λ³΅μž‘ν•œ κΈ°λŠ₯듀을 감당할 수 μžˆλŠ” μ‹œμŠ€ν…œμ„ ν†΅ν•΄μ„œ ν•˜κ²Œ λœλ‹€. 그리고 이런 μ‹œμŠ€ν…œμ— λŒ€ν•œ 뢀담은 ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 지기 λ•Œλ¬Έμ΄λ‹€.
Internet Architectureμ—μ„œ μ‚¬μš©λ˜λŠ” λ„€νŠΈμ›Œν¬ μžμ›μ„ λͺ¨λ‹ˆν„°λ§ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것
μ΄λŠ” 결ꡭ에 Billingκ³Ό μ§κ²°λœλ‹€. 기기에 λŒ€ν•œ κ³ μž₯은 μžˆμ„ 수 μžˆμ–΄λ„, Billing에 λ¬Έμ œκ°€ 있으면 μ ˆλŒ€ μ•ˆ λœλ‹€.

5) End-to-End 원칙

톡신은 Endpoint와 Endpoint 간에 μΌμ–΄λ‚˜λŠ” 것이고, 톡신에 μžˆμ–΄μ„œ ν•„μš”ν•œ λ³΅μž‘ν•œ κΈ°λŠ₯듀은 Endpoint에 μœ„μΉ˜ν•˜κ³  μžˆμ–΄μ•Ό ν•œλ‹€.
즉, Transport Layer와 Application LayerλŠ” (5, 6, 7 계측을 보톡 크게 λ¬Άμ–΄μ„œ Application Layer라고 ν•˜κΈ°λ„ 함) Host의 μ»΄ν“¨ν„°μ—λ§Œ μ‘΄μž¬ν•˜λ©°, RouterλŠ” Network Layer, Data Link Layer, Physical Layer의 κΈ°λŠ₯만 μˆ˜ν–‰ν•˜κ²Œ λœλ‹€. (SwitchλŠ” Data Link Layer 및 Physical Layer에 λŒ€ν•œ κΈ°λŠ₯을 μ§€μ›ν•œλ‹€.)
End-to-End 원칙을 κ³ μˆ˜ν•˜λŠ” μ΄μœ λŠ” μ—¬λŸ¬ κΈ°μˆ μ„ μ‰½κ²Œ μˆ˜μš©ν•  수 μžˆλ„λ‘ ν•˜μ—¬ ν™•μž₯성을 높이기 μœ„ν•¨μ΄λ‹€. 이런 이유 λ•Œλ¬Έμ— End-to-End 원칙은 λ„€νŠΈμ›Œν¬ 계측 섀계에 ν•΅μ‹¬μ μœΌλ‘œ μž‘μš©ν•˜μ§€λ§Œ, μ‹€μ œλ‘œλŠ” μ˜λ„μ μœΌλ‘œ λ¬΄μ‹œν•˜λŠ” κ²½μš°λ“€μ΄ μ‘΄μž¬ν•œλ‹€.
μ‚¬μš©μžλ“€μ΄ κ΄‘κ³ λ₯Ό λ³΄λŠ” 쑰건으둜 무료 WiFiλ₯Ό 제곡 λ°›λŠ” 상황이라고 ν•  λ•Œ, κ΄‘κ³ λ₯Ό λΌμ›Œλ„£κΈ° μœ„ν•΄μ„œλŠ” Endpoint κ°„μ˜ ν†΅μ‹ μ—μ„œ 무선 κ³΅μœ κΈ°κ°€ 끼어듀 수 μžˆμ–΄μ•Ό ν•œλ‹€. λ˜ν•œ κ²Œμž„ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•  λ•Œ λ‘œλ“œλ°ΈλŸ°μ„œλ₯Ό μ΄μš©ν•œλ‹€λ©΄, ClientλΌλŠ” Endpoint와 ServerλΌλŠ” Endpoint 쀑간에 λ‘œλ“œλ°ΈλŸ°μ„œλΌλŠ” μž₯λΉ„λ₯Ό λ„£λŠ” 것도 μΌμ’…μ˜ End-to-End 원칙을 μ˜λ„μ μœΌλ‘œ κΉ¬ 것이라고 λ³Ό 수 μžˆλ‹€. (λ³΄μ•ˆ μž₯λΉ„ ν˜Ήμ€ ν† λ ŒνŠΈμ˜ νŠΈλž˜ν”½μ„ λ³„λ„λ‘œ μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ QoS μž₯비듀도 이에 ν•΄λ‹Ήν•  수 μžˆλ‹€.)

6) Curse of the Narrow Waist

"IPμœ„μ˜ λͺ¨λ“  것, λͺ¨λ“  것 μœ„μ˜ IP" (IP over anything, anything over IP)λΌλŠ” 말이 μžˆμ„ μ •λ„λ‘œ IP μœ„ μ•„λž˜λ‘œμ˜ 기술 λ°œμ „μ΄ 많이 μžˆμ—ˆλ‹€. λ•Œλ¬Έμ— IP에 λŒ€ν•œ μˆ˜μ •μ€ ꡉμž₯ν•œ 어렀움이 λ”°λ₯Έλ‹€.
Internet Architecture λͺ©ν‘œλ“€ 쀑 λ‹€μ–‘ν•œ λ„€νŠΈμ›Œν¬ μˆ˜μš©μ„ μœ„ν•œ λŒ€λΆ€λΆ„μ˜ Independentν•œ κΈ°μˆ λ“€μ΄(아무리 Independentν•˜κ²Œ 짜렀고 해도), IPλ₯Ό 기반으둜 κ°œλ°œμ„ 진행해왔기 λ•Œλ¬Έμ΄λ‹€. 이둜 μΈν•œ λ¬Έμ œλŠ” μˆ˜μ • μ–΄λ ΅λ‹€λŠ” 것이고, 이 뿐 μ•„λ‹ˆλΌ κ·Όκ°„μ΄λ˜λŠ” μ΅œν•˜μœ„ λ ˆλ²¨μ—μ„œλŠ” ꡉμž₯히 μ†ŒλŸ‰μ˜ μ •λ³΄λ“€λ§Œ μ΄μš©ν•  수 밖에 μ—†λ‹€λŠ” 어렀움도 μžˆλ‹€. (무선과 같이 말이닀.)

7) Internet의 3가지 μš”μ†Œ

(톡신 μ„œλΉ„μŠ€μ˜ ꢁ극적인 μ†ŒλΉ„μžμ΄λ‹€.)
Packet Network
(Internet Protocol μ΄μš©ν•˜λŠ” Hostμ»΄ν“¨ν„°μ˜ 톡신을 지원해쀀닀.)
IP Router (같은 망 내에 μžˆμ„ λ•ŒλŠ” Router, λ‹€λ₯Έ Domain의 경우 Gateway)
(μƒν˜Έ μ—°κ²°λœ λ„€νŠΈμ›Œν¬μ—μ„œ Packet-Switching을 μ΄μš©ν•˜λŠ” 컴퓨터λ₯Ό Gateway ν˜Ήμ€ IP Router라고 λΆ€λ₯Έλ‹€.)

8) Internet의 Architectural Assumption

인터넷은 λ„€νŠΈμ›Œν¬μ˜ λ„€νŠΈμ›Œν¬μ΄λ‹€.
(Fate Sharingμ—μ„œ μ–ΈκΈ‰ λ˜μ—ˆ 듯이) GatewayλŠ” Connection Stateλ₯Ό λ‹΄κ³  μžˆμ§€ μ•Šλ‹€.
Routing Complexity에 λŒ€ν•œ μ •λ³΄λŠ” Gateway에 μžˆμ–΄μ•Ό ν•œλ‹€. (메세지 전솑을 μœ„ν•œ Pathλ₯Ό μ°ΎλŠ”λ° μ‚¬μš©λœλ‹€. 이 λ•Œ HostλŠ” Routing에 κ΄€μ—¬ ν•˜μ§€ μ•ŠλŠ”λ‹€.)
인터넷 μ‹œμŠ€ν…œμ€ 넓은 λ²”μœ„μ˜ λ‹€μ–‘ν•œ λ„€νŠΈμ›Œν¬μ— λŒ€ν•΄μ„œ 감당할 수 μžˆμ–΄μ•Ό ν•œλ‹€. (즉, λ„€νŠΈμ›Œν¬μ—μ„œ μ‚¬μš©ν•˜λŠ” 기술이 λ°”λ€Œμ–΄λ„, μ—¬μ „νžˆ 톡신은 κ°€λŠ₯ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.)

9) NAI (Network Access Identifier)

Identityλž€ λ¬΄μ—‡μΌκΉŒ? λ°”λ‘œ λ‚΄κ°€ λˆ„κ΅¬μΈμ§€ (Identifier), λ‚΄κ°€ 어디에 μžˆλŠ”μ§€(Locator)λ₯Ό λ°νžˆλŠ” 것이라고 λ³Ό 수 μžˆλ‹€. μ΄λŸ¬ν•œ IdentityλŠ” 톡신 μ‹œ μš”κ΅¬λ˜λŠ” κΈ°λ³Έ 사항이닀.
ν†΅μ‹ μ—μ„œ Identityλ₯Ό μš”κ΅¬ν•˜κΈ° λ•Œλ¬Έμ— μœ μ„ , 무선에 λŒ€ν•΄μ„œλ„ 각각 ν‘œμ€€μ΄ μ‘΄μž¬ν•˜λ©°, λ‹Ήμ—°ν•˜κ²Œλ„ λ„€νŠΈμ›Œν¬ ν†΅μ‹ μ—μ„œλ„ 이런 κ°œλ…μ΄ μ‘΄μž¬ν•œλ‹€.
λ„€νŠΈμ›Œν¬μ—μ„œμ˜ IdentityλŠ” NAI라고 ν•˜λ©° μ΄λŠ” RFC2486 (Obsoleted by RFC4282) β†’ RFC4282 (Obsoleted by RFC7542) β†’ RFC7542 순으둜 λ°œμ „ν•΄μ™”λ‹€.
RFC(Request For Comment)λž€? 인터넷과 TCP/IP에 λŒ€ν•œ μ œμ•ˆ, 아이디어, 기술, λ‰΄μŠ€, ν‘œμ€€ λ“± 쒅합적인 Note이닀. λͺ¨λ“  인터넷 ν‘œμ€€μ€ 항상 RFC둜 λ¬Έμ„œν™”λ˜κ³  μžˆλ‹€. IETFμ—μ„œ 이λ₯Ό μž‘μ„±ν•˜κ³  있으며 RFCλŠ” λˆ„κ΅¬λ‚˜ μž…μˆ˜κ°€ κ°€λŠ₯ν•˜λ‹€.
RFC7542λŠ” Domainκ°„ 둜밍(인증) μ„œλΉ„μŠ€λ₯Ό μ§€μ›ν•˜κΈ° μœ„ν•΄ μ‚¬μš©μžλ₯Ό ꡬ뢄할 수 μžˆλŠ” ν‘œμ€€μ΄ ν•„μš”ν•˜λ‹€λŠ” κ·œμ •μ΄λ‹€. RFC4282에 NAI에 λŒ€ν•΄ μ•„λž˜μ™€ 같은 μ˜ˆμ œκ°€ λ“±λ‘λ˜μ–΄ μžˆλ‹€.
μ΄λŸ¬ν•œ NAI에 λŒ€ν•œ RFC7542μ—μ„œ λ‚˜νƒ€λ‚˜λŠ” IdentifierλŠ” RFC5322 + RFC6532λ₯Ό λ”°λ₯΄λ©° Application Layerμ—μ„œ 일반적으둜 μ‚¬μš©λœλ‹€.
RFC5322λŠ” Internet Message Format을 기반으둜 ν•œ μ‚¬μš©μžμ— λŒ€ν•œ λΆ€λΆ„(User Portion / username)이고, RFC6532λŠ” μœ„μΉ˜μ— λŒ€ν•œ λΆ€λΆ„(Local Portion / realm)으둜써 Internationalized Email Header의 μ—°μž₯선인 이메일 ν˜•μ‹μœΌλ‘œ λ‚˜νƒ€λ‚œλ‹€.
μ΄λ ‡κ²Œ μ •μ˜λœ IdentifierλŠ” λŒ€μ²΄λ‘œ utf8을 기반으둜 μž‘μ„±λ˜λŠ”λ°, 이런 utf8으둜 μž‘μ„±λœ realm 뢀뢄에 λŒ€ν•΄μ„œλŠ” Internationalized Domain Names (IDNs)에 λ§žλŠ” ν˜Έν™˜μ„±μ„ κ°–λŠ” μ‹μœΌλ‘œ μ˜λ„λ˜μ–΄ μžˆλ‹€. λ”°λΌμ„œ RFC5890을 λ”°λ₯Έλ‹€.
RFC5890은 Internationalized Domain Names에 λŒ€ν•œ Syntax μ •μ˜ κ·œμ•½μ΄λΌκ³  λ³Ό 수 μžˆλ‹€. κΈ°λ³Έμ μœΌλ‘œλŠ” RFC1034(LDH라고 ν•˜μ—¬ Letters, Digits, Hyphenλ₯Ό μ‚¬μš©ν•˜λŠ” Syntax)λ₯Ό μ„ ν˜Έν•˜κ³  λ”°λ₯΄λŠ” λΆ„μœ„κΈ°μ΄μ§€λ§Œ, Symmetry Constraint만 지킨닀면 A-label (ASCII), U-label (UNICODE)에 λŒ€ν•œ 이용이 κ°€λŠ₯ν•˜λ‹€.
Application Layerμ—μ„œ NAIλ₯Ό ν†΅ν•΄μ„œ μ‚¬μš©μžλ“€κ³Ό Domain에 λŒ€ν•œ ꡬ뢄을 μ§€μ—ˆλ“―μ΄, λ‹€λ₯Έ κ³„μΈ΅μ—μ„œλ„ 각자만의 Identifier둜 ꡬ뢄을 μ§“λŠ”λ‹€.
Data Link Layerμ—μ„œλŠ” Interface & Device & Node에 λŒ€ν•œ ꡬ뢄을 μœ„ν•΄ Interface Identifier (MAC)λ₯Ό μ΄μš©ν•œλ‹€.
Network Layerμ—μ„œλŠ” Host & Gateway에 λŒ€ν•œ ꡬ뢄을 μœ„ν•΄ Host Identifier (IP)λ₯Ό μ΄μš©ν•œλ‹€.
Tranport Layerμ—μ„œλŠ” Process 및 Program에 λŒ€ν•œ ꡬ뢄을 μœ„ν•΄ Endpoint (Port)λ₯Ό μ΄μš©ν•œλ‹€.

10) μ•žμœΌλ‘œ μ•Œμ•„λ‚˜κ°€μ•Ό ν•  것듀?

Internet Protocol Stack에 λŒ€ν•΄μ„œ λͺ…ν™•νžˆ μ•Œμ•„μ•Ό ν•œλ‹€.
메세지가 인터넷 μƒμ—μ„œ μ–΄λ–»κ²Œ 전달 λ˜λŠ”μ§€
각 Protocol의 Layer의 λͺ©μ μ€ 무엇인지
1κ³Ό 2λ₯Ό 만쑱 ν•˜λ©΄μ„œ 각 Protocol이 μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€
적어도 이 세가지λ₯Ό λ¬΄λ‚œν•˜κ³  μ •ν™•ν•˜κ²Œ λ‹΅ν•  수 μžˆλ‹€λ©΄, 컴퓨터 λ„€νŠΈμ›Œν¬μ— λŒ€ν•œ κΈ°λ³Έ 지식은 κΉ”λ €μžˆλ‹€κ³  보면 λ˜κ² λ‹€.

2. IPv4 Address

1) IPv4 λ“€μ–΄κ°€κΈ° μ•žμ„œ

RFC791 (IP ν‘œμ€€μ— λŒ€ν•œ κ·œμ•½)을 λ”°λ₯Έλ‹€.
ν›„μ—λŠ” CIDR이라고 ν•΄μ„œ Classless Inter-Domain Routing으둜 μ£Όμ†Œλ₯Ό ν• λ‹Ήν•˜κ³  집계 μ „λž΅μ„ νŽΌμ³€λ‹€. (RFC1519)
Private Internet에 λŒ€ν•œ μ£Όμ†Œ ν• λ‹Ή κ·œμ•½μ΄ μžˆλ‹€. (RFC1918) Address Maskλ₯Ό μ΄μš©ν•œ Internet Standard Subnetting Procedure (RFC950)κ°€ μ‘΄μž¬ν•œλ‹€. IP Multicasting을 μœ„ν•œ Host Extension (RFC1112)이 μ‘΄μž¬ν•œλ‹€.

2) IPv4 Address νŠΉμ„±

IPv4 μ£Όμ†ŒλŠ” Uniqueν•˜κ³  Universalν•˜μ—¬ Internet Protocol을 μ΄μš©ν•˜λŠ” λ„€νŠΈμ›Œν¬μ—μ„œ νŠΉμ • λͺ©μ μ§€μ— λŒ€ν•΄μ„œ 인지할 수 μžˆλ‹€. (Public에 ν•œν•˜μ—¬)
IPv4 μ£Όμ†Œμ˜ κΈΈμ΄λŠ” 32 λΉ„νŠΈμ΄λ‹€. 32 λΉ„νŠΈλŠ” 4개의 Octet (8개의 λΉ„νŠΈ)으둜 λ‚˜λ‰œλ‹€. ν‘œν˜„λ²•μ€ 2μ§„μˆ˜λ‘œ λ‚˜νƒ€λ‚΄λŠ” ν‘œν˜„κ³Ό, 점으둜 κ΅¬λΆ„λœ 10μ§„μˆ˜λ‘œ λ‚˜νƒ€λ‚΄λŠ” ν‘œν˜„ 2κ°€μ§€λ‘œ λ‚˜λ‰œλ‹€.
2μ§„μˆ˜ β†’ 00000000 00000000 00000000 00000000 10μ§„μˆ˜ β†’
32λΉ„νŠΈμ˜ 각 4개의 Octetμ—μ„œ ν‘œν˜„μ΄ κ°€λŠ₯ν•œ λ²”μœ„λŠ” (각 ChunkλŠ” 8λΉ„νŠΈλ―€λ‘œ) 0~255κΉŒμ§€μ΄λ‹€.
λ”°λΌμ„œ 10μ§„μˆ˜λ‘œ ν‘œν˜„κ°€λŠ₯ν•œ IPμ£Όμ†Œμ˜ λ²”μœ„λŠ” ~
IPv4 μ£Όμ†ŒλŠ” Network Part (NAIμ—μ„œμ˜ Local Portion을 의미), Host Part (NAIμ—μ„œ User Portion을 의미)둜 κ΅¬μ„±λœλ‹€. μ—¬κΈ°μ„œ μ‚¬μš©λ˜λŠ” Network Part와 Host Part에 λŒ€ν•œ (μ–Όλ§ŒνΌμ˜ 길이둜) ꡬ뢄은 IP Class에 따라 λ‚˜λ‰œλ‹€. β†’ 더 λ‚˜μ•„κ°€ Subnetting의 κ°œλ…κΉŒμ§€ λ“€μ–΄κ°€λ©΄ μ•„λž˜μ˜ 그림처럼 쑰금 더 Flexibleν•˜κ²Œ Host Partλ₯Ό μ΄μš©ν•˜λ©΄μ„œ Hierarchical(계측적) Routing이 κ°€λŠ₯해진닀.
μœ„μ™€ 같은 ν˜•νƒœμ˜ IPv4 μ£Όμ†Œλ₯Ό Hierarchical IPv4 Address라고 ν•˜λŠ”λ°, 이λ₯Ό 톡해 Hierarchical Routing이 κ°€λŠ₯해진닀면 λͺ©μ μ§€ λŒ€μƒμ΄ λ˜λŠ” λ„€νŠΈμ›Œν¬λ₯Ό μ‰½κ²Œ 인식할 수 μžˆμ–΄ IP Routing에 도움이 λœλ‹€. (Routing에도 도움이 λ˜μ§€λ§Œ, 이런 계측 κ΅¬μ‘°λŠ” IP μ£Όμ†Œμ˜ 관리 μΈ‘λ©΄μ—μ„œλ„ ꡉμž₯히 μœ μš©ν•˜λ‹€.)
IPv4 μ£Όμ†ŒλŠ” Classfulμ΄μ—ˆλ‹€κ°€ Classless κ°œλ…μœΌλ‘œ λ°”λ€Œμ–΄ λ‚˜κ°”λ‹€. μ΄λŸ¬ν•œ λ³€ν™”λ‘œ 4번과 같이 쑰금 더 Hierarchicalν•œ ꡬ쑰λ₯Ό λ„κ²Œ λ˜μ—ˆλ‹€.

3) Classful IPv4

Class A
1번째 Octet은 Network Part, λ‚˜λ¨Έμ§€ 3개의 Octet은 Subnet / Host둜 ν™œμš©
Class B
1, 2번째 Octet은 Network Part, λ‚˜λ¨Έμ§€ 2개의 Octet은 Subnet / Host둜 ν™œμš©
Class C
1, 2, 3번째 Octet은 Network Part, λ‚˜λ¨Έμ§€ 1개의 Octet은 Subnet / Host둜 ν™œμš©
Class D
Multicasting을 μœ„ν•œ IP μ£Όμ†Œ
Class E
νŠΉμ •ν•˜κ²Œ λͺ©μ μ΄ μ •ν•΄μ Έ μžˆλŠ” ν™œλ™μ„ μœ„ν•œ IP μ£Όμ†Œ
IPv4 μ£Όμ†Œμ˜ ν˜•νƒœλŠ”
{<Network>, <Host>}
{<Network>, <Subnet>, <Host>}
와 같은 ν˜•νƒœμΈλ°, Subnet을 μ΄μš©ν•˜λŠ” 경우의 Mask μ£Όμ†Œ ν˜•νƒœλŠ”
{-1, -1, 0}
κ°€ λœλ‹€. Masking λΉ„νŠΈλ“€μ€ 1둜 μ±„μ›Œμ Έμ„œ & 연산을 톡해 Hostλ₯Ό 뢄별해낼 수 μžˆλ‹€.
(이 λ•Œ μ±„μ›Œμ§„ λͺ¨λ“  1 값듀은 λΉ„νŠΈκ°€ 꽉 μ°¨μžˆλŠ” ν˜•νƒœλ―€λ‘œ -1둜 ν‘œν˜„ν•˜λŠ” 것이닀.
λΆ€ν˜Έκ°€ μžˆλŠ” 2μ§„μˆ˜ ν‘œν˜„λ²•

4) IPv4 Packet Forwarding Method

[1] Unicast: MAC μ£Όμ†Œλ₯Ό 기반으둜 μƒλŒ€μΈ‘ IPμ£Όμ†Œλ₯Ό λͺ©μ μ§€λ‘œν•˜λŠ” 1:1 톡신

ν˜„μž¬ λ„€νŠΈμ›Œν¬μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” 방식이닀. Unicast 방식은 ν•˜λ‚˜μ˜ μ†‘μ‹ μžκ°€ λ‹€λ₯Έ ν•˜λ‚˜μ˜ μˆ˜μ‹ μžλ‘œ 데이터λ₯Ό μ „μ†‘ν•˜λŠ” λ°©μ‹μœΌλ‘œ 일반적인 인터넷 μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ λͺ¨λ‘ Unicast 방식을 μ‚¬μš©ν•œλ‹€. Unicast 톡신은 λͺ©μ μ§€λ₯Ό μ œμ™Έν•œ λ‹€λ₯Έ λ„€νŠΈμ›Œν¬μƒμ˜ PCλ“€μ˜ CPUμ„±λŠ₯을 μ €ν•˜μ‹œν‚€μ§€ μ•ŠλŠ”λ‹€! κ·Έ μ΄μœ λŠ” μžμ‹ μ—κ²Œ 온 Packet이 μ•„λ‹ˆλΌκ³  νŒλ‹¨λ˜λ©΄ ν•΄λ‹Ή Frame을 버리기 λ•Œλ¬Έμ΄λ‹€!
λ§Œμ•½ λ™μΌν•œ 데이터λ₯Ό μ—¬λŸ¬ μˆ˜μ‹ μžμ—κ²Œ 보내고 μ‹Άλ‹€λ©΄, Unicast 톡신을 μ‚¬μš©ν•˜λ©΄ 데이터λ₯Ό μ—¬λŸ¬λ²ˆ 전솑해야 ν•˜λ©° λ™μΌν•œ Packet의 쀑볡 μ „μ†‘μœΌλ‘œ 인해 λ„€νŠΈμ›Œν¬ 효율이 μ €ν•˜λœλ‹€!

[2] Broadcast: Local 상에 λΆ™μ–΄μžˆλŠ” λͺ¨λ“  λ„€νŠΈμ›Œν¬ μž₯λΉ„λ“€μ—κ²Œ λ³΄λ‚΄λŠ” 1: N(all) 톡신

μ—¬κΈ°μ„œ Localμ΄λž€ Router에 μ˜ν•΄μ„œ κ΅¬λΆ„λ˜μ–΄μ§„ 곡간, 즉 Broadcast Domain이라고 ν•˜λŠ” 곡간을 λœ»ν•œλ‹€. Broadcast μ£Όμ†Œλ‘œ Packet이 였면 μžμ‹ μ˜ MAC μ£Όμ†Œμ™€ 같지 μ•Šμ•„λ„ 무쑰건 μ½μ–΄μ„œ CPU둜 μ „λ‹¬ν•œλ‹€.
λ°˜λ“œμ‹œ ν•„μš”ν•œ 톡신 λ°©μ‹μ΄μ§€λ§Œ, 데이터 μˆ˜μ‹ μ΄ ν•„μš”μ—†λŠ” Hostλ“€μ—κ²Œλ„ 데이터가 μ „μ†‘λ˜κΈ° λ•Œλ¬Έμ— λΆˆν•„μš”ν•œ μΈν„°λŸ½νŠΈκ°€ λ°œμƒλœλ‹€. λ˜ν•œ μžμ‹ μ΄ μ†ν•œ λ„€νŠΈμ›Œν¬μ—λ§Œ ν•œμ •λœκ³ , Routerλ₯Ό κ²½μœ ν•˜μ§€ λͺ»ν•œλ‹€λŠ” 단점이 μžˆλ‹€.
Broadcastλ₯Ό μ‚¬μš©ν•˜λŠ” μ˜ˆμ‹œ!
ARP(Address Resolution Protocol)
처음 두 PC간에 톡신을 ν•˜λŠ” κ²½μš°μ—, μƒλŒ€ IP μ£Όμ†ŒλŠ” μ•Œ 수 μžˆλ”λΌλ„ MAC μ£Όμ†ŒλŠ” μ•Œ μˆ˜κ°€ μ—†λ‹€!
이 λ•Œ, μƒλŒ€νŽΈμ˜ MAC μ£Όμ†Œλ₯Ό μ•ŒκΈ° μœ„ν•΄μ„œ ν•˜λŠ” Protocol이 λ°”λ‘œ ARP이닀!
Router끼리 정보λ₯Ό κ΅ν™˜ν•˜κ±°λ‚˜ λ‹€λ₯Έ Routerλ₯Ό μ°Ύκ³  싢은 경우
Serverκ°€ μžμ‹ μ΄ μ–΄λ–€ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•œλ‹€λŠ” 것을 λͺ¨λ“  Clientλ“€μ—κ²Œ μ•Œλ¦΄ λ•Œ
DHCPλ₯Ό ν†΅ν•΄μ„œ μžμ‹ μ˜ IPv4 μ£Όμ†Œ 섀정을 진행할 λ•Œ

[3] Multicast: ν•˜λ‚˜ μ΄μƒμ˜ μ†‘μ‹ μžλ“€μ΄ νŠΉμ •ν•œ ν•˜λ‚˜ μ΄μƒμ˜ μˆ˜μ‹ μžλ“€μ—κ²Œ 데이터λ₯Ό λ³΄λ‚΄λŠ” 톡신

Multicast의 경우 μžμ‹ μ΄ 데이터λ₯Ό λ°›κΈ° μ›ν•˜λŠ” νŠΉμ • Hostλ“€μ—κ²Œλ§Œ λ³΄λ‚΄λŠ” 것이 κ°€λŠ₯ν•˜μ§€λ§Œ, Switchλ‚˜ Routerκ°€ 이 κΈ°λŠ₯을 지원해주어야 ν•œλ‹€! Multicast 전솑을 μœ„ν•œ κ·Έλ£Ή μ£Όμ†ŒλŠ” D Class IP μ£Όμ†Œ ( ~둜 μ‹€μ œ Hostλ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ£Όμ†Œκ°€ μ•„λ‹ˆλ©° κ·Έλ£Ή μ£Όμ†Œλ₯Ό μ΄μš©ν•œλ‹€.
예λ₯Ό λ“€μ–΄, λ„€νŠΈμ›Œν¬ 상에 200λͺ…μ˜ μ‚¬μš©μžκ°€ μžˆμ„ λ•Œ, 150λͺ…μ—κ²Œλ§Œ 정보λ₯Ό 보내고 싢을 λ•Œ μ‚¬μš©ν•˜λŠ” 톡신이닀. Broadcastλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•΄λ‹Ή 데이터가 ν•„μš”ν•˜μ§€ μ•Šμ€ 50λͺ…μ˜ PCμ„±λŠ₯이 μ €ν•˜λœλ‹€, Unicastλ₯Ό μ‚¬μš©ν•˜λ©΄ 같은 Packet을 150번 전솑해야 ν•΄μ„œ λΉ„νš¨μœ¨μ μ΄λ‹€. 즉 μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 톡신 방법인 것이닀.
MulticastλŠ” λ„€νŠΈμ›Œν¬ μƒμ—μ„œ One-to-Many 톡신을 μœ„ν•œ 기법이닀. MulticastλŠ” (λ§Žμ€ μˆ˜μ‹ μžλ₯Ό λͺ©ν‘œλ‘œ ν•˜λ”λΌλ„) Packet이 ν•œ 번만 전솑될 수 μžˆλ„λ‘ μžμ›μ„ λŒμ–΄λͺ¨μœΌλŠ” μ‹μœΌλ‘œ λ„€νŠΈμ›Œν¬ 인프라λ₯Ό 효율적으둜 μ‚¬μš©ν•œλ‹€. 즉, Unicastλ₯Ό 기반으둜 ν•œλ‹€.

5) IPv4 Special Address

[1-1] ({0, 0}

[1-2] {0, <Host>}

IPv4 Packet을 μ „μ†‘ν•˜λ €λŠ” μ»΄ν“¨ν„°μ—μ„œ Source IP μ£Όμ†Œλ₯Ό λͺ¨λ₯΄λŠ” κ²½μš°μ— μžμ‹ μ˜ IPv4 μ£Όμ†Œλ‘œ이 μ΄μš©λœλ‹€.
예λ₯Ό λ“€λ©΄, DHCPDISCOVER와 같은 μž‘μ—…μ— μ΄μš©λ˜λŠ”λ° μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 IPv4 Packet을 날리면 DHCP Server둜 λΆ€ν„° 닡을 받을 수 μžˆλ‹€.

[2-1] ({-1, -1}

[2-2] {<Network>, -1}

[2-3] {<Network>, <Subnet>, -1}

[2-4] {<Network>, -1, -1})

λͺ¨λ“  λΉ„νŠΈκ°€ 1인 IPv4 μ£Όμ†ŒλŠ” Broadcast에 μ΄μš©λœλ‹€. λ˜ν•œ νŠΉμ • λ„€νŠΈμ›Œν¬ 전체에 λ³΄λ‚΄λŠ” Broadcastκ°€ μ•„λ‹Œ μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 νŠΉμ • Subnetμ—λ§Œ λ³΄λ‚΄λŠ” Broadcast의 경우, 정해진 전체 λ„€νŠΈμ›Œν¬μ— Broadcast Packet을 λΏŒλ¦¬λŠ” 것이 μ•„λ‹ˆλΌ νŠΉμ • Subnet에 Broadcast Packet을 λΏŒλ¦¬λŠ” 것도 κ°€λŠ₯ν•˜λ‹€. 이λ₯Ό IP Directed Broadcast라고 ν•œλ‹€.
이와 같이 IP Directed Broadcast둜 Packet을 λ‚ λ¦¬κ²Œ λ˜μ–΄μ„œ Target Subnet을 ν–₯ν•΄ 경둜 타고 κ°€λ©΄, λ„€νŠΈμ›Œν¬λŠ” 이 Packet을 Unicast Packet을 전솑할 λ•Œμ™€ λ™μΌν•œ λ°©λ²•μœΌλ‘œ Forwarding ν•œλ‹€. (즉, Unicast Packetκ³Ό λ™μΌν•œ 취급을 ν•œλ‹€.) μ΄λ ‡κ²Œ Target Subnet에 μ—°κ²°λœ SwitchκΉŒμ§€ Unicast처럼 μ „μ†‘λœ Packet은 ν•΄λ‹Ή Switch에 λ„μ°©ν•˜λ©΄, Switchκ°€ μ•Œμ•„μ„œ Subnet에 ν•΄λ‹Ήν•œ λͺ¨λ“  Endpoint λ‹¨λ§μ—κ²Œ Packet을 Broadcastν•΄μ€€λ‹€.


[3-2]({127, <Any>}

자기 μžμ‹ (Local Host)을 λ‚˜νƒ€λ‚΄λŠ” Loopback μ£Όμ†Œμ΄λ‹€.
Loopback μ£Όμ†Œλž€? νŠΉμ • μ£Όμ†Œλ‘œ μ ‘μ†ν–ˆμ„ λ•Œ μžμ‹ μ˜ 컴퓨터에 접속할 수 μžˆλŠ” μ£Όμ†Œμ΄λ‹€. λ„€νŠΈμ›Œν¬ κ΄€λ ¨ ν”„λ‘œκ·Έλž¨μ΄λ‚˜ ν™˜κ²½μ˜ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ λͺ©μ μœΌλ‘œ μ‚¬μš©ν•œλ‹€.

[4]Private IPv4 Address

사섀망과 톡신할 λ•Œ μ‚¬μš©λ˜λŠ” μ£Όμ†Œμ΄λ‹€. (κΈ°κ΄€ λ“±μ—μ„œ μ „ν™” νšŒμ„  μ—°μž₯을 μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 것과 λΉ„μŠ·ν•˜λ‹€.)

6) Scaling Issues in Routing & CIDR (RFC4632)

IPv4 Address 곡간에 λŒ€ν•œ λΉ„νš¨μœ¨μ μΈ 이용

클래슀 Cμ—μ„œμ˜ 2개의 Host β†’ (2 / 254 = 0.78% Efficient) (28βˆ’2=254)2^8 - 2 = 254)
클래슀 Bμ—μ„œμ˜ 256개의 Host β†’ (256 / 65536 = 0.39% Efficient) (28βˆ—28βˆ’2=65534)2^8 * 2^8 - 2 = 65534)
IPv4 μ£Όμ†Œκ°€ μ°¨μ§€ν•˜λŠ” κ³΅κ°„μ˜ μˆ˜κ°€ ꡉμž₯히 λΉ λ₯΄κ²Œ μ†Œλͺ¨λ˜λŠ” 것을 λ³Ό 수 μžˆλ‹€.

λ„ˆλ¬΄λ‚˜λ„ λ§Žμ€ λ„€νŠΈμ›Œν¬λ“€

Routing Table은 ν™•μž₯λ˜μ§€ μ•ŠλŠ”λ‹€.
Routing Propagation Protocol μ—­μ‹œ ν™•μž₯ λ˜μ§€ μ•ŠλŠ”λ‹€.
Forwarding을 μœ„ν•œ 큰 Routing Table을 Routerκ°€ μŠ€μΊ”ν•  λ•Œ ꡉμž₯히 λŠλ €μ§„λ‹€.


κ·Έλž˜μ„œ..? ν΄λž˜μŠ€μ— λŒ€ν•΄μ„œλ§Œ μΈμ‹ν•˜λ˜ 인터넷에 λŒ€ν•΄ 클래슀 κ°œλ…μ„ μ—†μ• λ³΄λŠ” μͺ½μœΌλ‘œ 2006λ…„ 08월에 CIDR (Classless Inter-Domain Routing (RFC4632))이 μ œμ‹œλ˜μ—ˆλ‹€. (IPv4 μ£Όμ†Œμ— λŒ€ν•œ μžμœ λ„κ°€ 올라감)
CIDR은 클래슀 A, B, C의 Network Part κ°œλ…μ„ Classlessν•œ Prefix둜 λ°”κΎΌ 것을 λ§ν•œλ‹€. (κΈ°μ‘΄ 클래슀 A, B, C에 λŒ€ν•΄μ„œ Classλ₯Ό μ—†μ• λ©΄ μ–΄λ”” λΆ€λΆ„κΉŒμ§€κ°€ Network Part이고, μ–΄λ”” λΆ€λΆ„κΉŒμ§€κ°€ Host Part인지 ꡬ뢄이 λΆˆκ°€λŠ₯ν•˜λ―€λ‘œ Subnet Mask에 λŒ€ν•œ ν•„μš”μ„±μ΄ λ“±μž₯ν•˜κ²Œ λœλ‹€.) 이 λ•Œ, Network PartλŠ” νŠΉμ • λ²”μ£Ό λ‚΄μ—μ„œ μ‚¬μš©λ˜λŠ” Endpoint λ‹¨λ§μ˜ Network Partλ₯Ό μ΄μš©ν•œλ‹€. (Subnet MaskλŠ” λ‹€μŒ νŒŒνŠΈμ—μ„œ 닀룬닀.)
CIDR ν‘œκΈ°λ²•μ—μ„œ PrefixλŠ” κΈ°μ‘΄ IPv4 μ£Όμ†Œμ²˜λŸΌ 4개의 Octet으둜 ν‘œκΈ°λ˜λ©° κ·Έ 뒀에 / κ°€ λΆ™μœΌλ©΄μ„œ μ΄μ–΄μ„œ νŠΉμ • λΉ„νŠΈ μˆ˜μ— λŒ€ν•΄μ„œ λͺ…μ‹œν•œλ‹€. IPv4 μ£Όμ†Œμ˜ 경우 32 λΉ„νŠΈμ˜ 길이λ₯Ό κ°–κΈ° λ•Œλ¬Έμ—, / λ’€μ—λŠ” 0 ~ 32 μ‚¬μ΄μ˜ 10μ§„μˆ˜ 값이 ν‘œκΈ° λœλ‹€.
μ•”λ¬΅μ μœΌλ‘œ의 λ„€νŠΈμ›Œν¬ μ£Όμ†Œ Maskλ₯Ό μ΄μš©ν•˜λŠ” κΈ°μ‘΄ 클래슀 B λ„€νŠΈμ›Œν¬μ˜ IPv4 μ£Όμ†ŒλŠ” CIDR ν‘œκΈ°λ²•μœΌλ‘œ이 λœλ‹€.

7) Subnet Mask

Subnetwork ν˜Ήμ€ Subnet이라고 λΆ€λ₯΄λŠ” 것은 IP λ„€νŠΈμ›Œν¬μ— λŒ€ν•œ 논리적 뢄할이닀.
Subnet Mask ν˜Ήμ€ Subnetwork에 λŒ€ν•΄μ„œ μ•Œμ•„λ‚΄κ³ μž 계산을 ν•  λ•ŒλŠ”, Logicial Multiplication을 μ΄μš©ν•œλ‹€. 예λ₯Ό λ“€μ–΄μ„œλΌλŠ” CIDR ν‘œκΈ°λ²•μœΌλ‘œ λ‚˜νƒ€λ‚Έ IPv4 μ£Όμ†Œκ°€ μ£Όμ–΄μ‘Œλ‹€κ³  ν•΄λ³΄μž. 이에 λ”°λ₯Έ Subnetwork μ£Όμ†Œ ꡬ할 λ•ŒλŠ” IPv4 μ£Όμ†Œμ— Subnet Mask μ£Όμ†Œλ₯Ό & 연산을 μ·¨ν•˜λ©΄ 되고, Subnet Mask μ£Όμ†Œλ₯Ό ꡬ할 λ•ŒλŠ” IPv4 μ£Όμ†Œμ— Subnetwork μ£Όμ†Œλ₯Ό & 연산을 μ·¨ν•˜λ©΄ λœλ‹€.
IPv4 by Binary β†’ 110000001100 0000 . 101010001010 1000 . 000000000000 0000 . 000000010000 0001
Subnet Mask β†’ 1111111111111111 . 1111111111111111 . 1111111111111111 . 000000000000 0000
Subnetwork β†’ 1100000011000000 . 101010001010 1000 . 0000000000000000 . 0000000000000000
이 λ•Œμ˜ μΆ”κ°€λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” Hostμˆ˜λŠ” 253κ°œμ΄λ‹€. (자기 μžμ‹  IP, λ„€νŠΈμ›Œν¬ μžμ²΄μ— λŒ€ν•œ IP {<Network>, 0}, λ„€νŠΈμ›Œν¬μ˜ Broadcast IP {<Network>, -1}을 μ œμ™Έν•œ 253κ°œμ΄λ‹€.)
Subnet Mask κ°’μ˜ λͺ©μ μ€ Host Part 뢀뢄에 λŒ€ν•œ μœ λ™μ μΈ 뢄할에 λŒ€ν•œ λͺ…μ‹œμ΄λ‹€. Subnet μžμ²΄λŠ” ν•΄λ‹Ή λ„€νŠΈμ›Œν¬ λ‚΄λΆ€μ—μ„œλ§Œ 확인이 κ°€λŠ₯ν•˜λ‹€. λ‹¨μˆœνžˆ IPv4 μ£Όμ†Œλ§Œ 주어진 μƒνƒœμ—μ„œλŠ” Subnet이 μ–΄λ–»κ²Œ λ˜λŠ”μ§€ μ•Œ 수 μ—†λ‹€. λ”°λΌμ„œ μ•„λž˜μ™€ 같이 클래슀 B의 IPv4 μ£Όμ†Œκ°€ μ£Όμ–΄μ‘Œμ„ λ•ŒλŠ” μ–΄λ–€ Subnet인지 μ•Œ 수 μ—†μ§€λ§Œ, Subnet Maskκ°€ 주어지면 μ–΄λŠ Subnet을 μ΄μš©ν•˜κ³  μžˆλŠ”μ§€ μ•Œ 수 μžˆλ‹€. (계산할 λ•ŒλŠ” 항상 2μ§„μˆ˜!)

8) Subnetting & Supernetting from CIDR

두 Netting λͺ¨λ‘ Network Maskλ₯Ό μ‚¬μš©ν•œλ‹€.


큰 λ„€νŠΈμ›Œν¬λ₯Ό μž‘μ€ μ—¬λŸ¬ 개의 λ„€νŠΈμ›Œν¬λ‘œ λ‚˜λˆ„λŠ” 기법이닀. λ„€νŠΈμ›Œν¬ ꡬ쑰λ₯Ό κ³„μΈ΅μ μœΌλ‘œ λ‘˜ 수 μžˆλ‹€. Supernettingκ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ Routing에 도움을 μ€€λ‹€. κΈ°μ‘΄ λ„€νŠΈμ›Œν¬ Prefixμ—μ„œ μΆ”κ°€μ μœΌλ‘œ 그룹을 ν˜•μ„±ν•˜μ—¬ λ‚˜λˆ΄κΈ° λ•Œλ¬Έμ— 그룹에 λ”°λΌμ„œ λ„€νŠΈμ›Œν¬ Prefixλ₯Ό μœ„ν•œ λΉ„νŠΈ μˆ˜κ°€ μ¦κ°€ν•œλ‹€.
예λ₯Ό λ“€μ–΄μ„œ 클래슀 B λ„€νŠΈμ›Œν¬μ˜ 경우, 256개의 클래슀 C λ„€νŠΈμ›Œν¬λ‘œ λ‚˜λˆŒ 수 μžˆλ‹€. 이 λ•Œμ˜ Network Part의 PrefixλŠ” 16 λΉ„νŠΈμ—μ„œ 24 λΉ„νŠΈλ‘œ μ¦κ°€ν•œλ‹€.
기쑴에 클래슀둜 이용되던 λ„€νŠΈμ›Œν¬
Subnet κ°œλ…μ΄ 생기고 λ‚œ ν›„μ˜ λ„€νŠΈμ›Œν¬
λ‹€μŒμ„ ν’€μ–΄λ³΄μž
μ •λ‹΅


μž‘μ€ μ—¬λŸ¬ 개의 λ„€νŠΈμ›Œν¬λ₯Ό ν•˜λ‚˜μ˜ 큰 λ„€νŠΈμ›Œν¬λ‘œ λ¬ΆλŠ” 기법이닀. 그루핑을 도와주기 λ•Œλ¬Έμ— Routing Entryκ°€ μ’‹μ•„μ§€κ²Œ 되고 이λ₯Ό 톡해 Router의 Lookup이 νŽΈν•΄μ§„λ‹€. 기쑴에 μ—¬λŸ¬ λ„€νŠΈμ›Œν¬λ₯Ό ν•˜λ‚˜μ˜ 그룹으둜 λ¬Άμ–΄λƒˆκΈ° λ•Œλ¬Έμ— 기쑴에 μ΄μš©ν•˜λ˜ λ„€νŠΈμ›Œν¬ Prefix의 λΉ„νŠΈ μˆ˜κ°€ κ°μ†Œν•œλ‹€.
예λ₯Ό λ“€μ–΄μ„œ 4개의 클래슀 C λ„€νŠΈμ›Œν¬λ₯Ό ν•˜λ‚˜μ˜ λ„€νŠΈμ›Œν¬λ‘œ Supernettingν•œ 경우, Network Part의 PrefixλŠ” 24 λΉ„νŠΈλ₯Ό μ‚¬μš©ν•˜λ‹€κ°€ 2 λΉ„νŠΈ (4개의 클래슀 β†’ 222^2 β†’ 2 λΉ„νŠΈ) 만큼 μ€„μ–΄μ„œ Network Part의 PrefixλŠ” 22 λΉ„νŠΈλ‘œ μ΄μš©ν•˜κ²Œ λœλ‹€.
Supernetting에 λŒ€ν•œ ν‘œν˜„μ€ Supernetting된 λ„€νŠΈμ›Œν¬ IPv4 μ£Όμ†Œμ™€ 묢을 μˆ˜μ— λŒ€ν•œ μ†Œκ΄„ν˜Έ 쌍인
(<IPv4 Address>, <Count>)
와 같이 ν‘œκΈ°ν•œλ‹€.
예λ₯Ό λ“€μ–΄μ„œ (, 3)이라고 ν•˜λ©΄ μ‹€μ œλ‘œλŠ”,, μ΄λ ‡κ²Œ 3κ°œκ°€ 묢인 것이닀. 이에 λŒ€ν•œ ν’€μ΄λŠ” μ•„λž˜μ™€ κ°™λ‹€.
β†’ 48.0으둜 Supernetting 된 κ²ƒμ΄λ‹ˆ 이λ₯Ό 2μ§„μˆ˜λ‘œ λ³€ν™˜ 해보면 00110000.00000000 인데, μ—¬κΈ°μ„œ 3개λ₯Ό λ¬ΆκΈ° μœ„ν•΄μ„  2 λΉ„νŠΈ (4개의 μ‚¬μš©μžμ— λŒ€ν•œ 컀버리지 β†’ 222^2 β†’ 2 λΉ„νŠΈ)κ°€ ν•„μš”ν•˜λ‹€λŠ” 사싀을 μ•Œ 수 μžˆλ‹€. 클래슀 C IPv4 μ£Όμ†Œμ— λŒ€ν•΄μ„œ 2 λΉ„νŠΈλ₯Ό μ΄μš©ν•œ Supernetting을 ν•œ κ²ƒμ΄λ‹ˆ, 24 λΉ„νŠΈμ—μ„œ 2 λΉ„νŠΈκ°€ μ€„μ–΄μ„œ 22 λΉ„νŠΈλ‘œ 그루핑을 ν•œ 것이라고 λ³Ό 수 μžˆλ‹€λŠ” 것이닀. 그럼 그루핑 된 3개의 IPv4 μ£Όμ†ŒλŠ” 00110000.00000000 (48.0), 00110001.00000000 (49.0), 00110010.00000000 (50.0) 3κ°œκ°€ 됨을 μ•Œ 수 μžˆλ‹€.
λΉ„μŠ·ν•œ 예둜 X.Y.32.1 ~ X.Y.32.254 (첫 번째 클래슀 C μ£Όμ†Œλ“€), X.Y.33.1 ~ X.Y.33.254 (두 번째 클래슀 C μ£Όμ†Œλ“€), X.Y.34.1 ~ X.Y.34.254 (μ„Έ 번째 클래슀 C μ£Όμ†Œλ“€), X.Y.35.1 ~ X.Y.35.254 (λ„€ 번째 클래슀 C μ£Όμ†Œλ“€)이 μ£Όμ–΄μ‘Œμ„ λ•Œ, 4그룹을 λͺ¨λ‘ 묢을 수 μžˆλŠ” Supernetting μ£Όμ†ŒλŠ” (X.Y.32.0, 4)κ°€ λœλ‹€.
β†’ 32.0은 00100000.00000000, 33.0은 00100001.00000000, 34.0은 00100010.00000000, 35.0은 00100011.00000000이닀.이 λ•Œ 클래슀 C에 λŒ€ν•œ Network PrefixλŠ” 24 λΉ„νŠΈμΈλ° 4개의 그룹을 λ¬Άμ–΄μ•Ό ν•˜λ―€λ‘œ μœ„μ˜ μ˜ˆμ œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 2 λΉ„νŠΈκ°€ κ°μ†Œλ˜μ–΄ 그루핑 λœλ‹€. 즉 22 λΉ„νŠΈμ— λŒ€ν•΄μ„œ Masking을 ν•˜λ©΄, 00100000.00000000이 λ˜μ–΄ 32.0이 μ΅œμ’… Supernetting κ²°κ³Όκ°€ λœλ‹€.
λ‹€μŒ μ˜ˆμ‹œλ„ μœ„μ™€ λ˜‘κ°™μ€ λ°©μ‹μœΌλ‘œ μ΄λ€„μ§€λŠ” 것을 λ³Ό 수 μžˆλ‹€.

9) IP톡신이 λ™μž‘ν•˜κΈ° μœ„ν•œ μ΅œμ†Œ 쑰건

IPv4 Address
Subnet Mask
Default Gateway
Default DNS Server

3. IPv6 Address

1) IPv6 λ“€μ–΄κ°€κΈ° μ•ž μ„œ

RFC4291 (IPv6 μ£Όμ†Œμ— λŒ€ν•œ ν‘œμ€€ κ·œμ•½)을 λ”°λ₯Έλ‹€. IPv4 μ£Όμ†Œμ™€λŠ” Incomptiable ν•œ ν˜•μ‹μ΄λ―€λ‘œ μ„œλ‘œμ— λŒ€ν•œ Translatorκ°€ μžˆμ–΄μ•Ό IPv4 μ£Όμ†Œμ™€ 톡신이 κ°€λŠ₯ν•˜λ‹€. μ΄λ ‡κ²Œ Translatorλ₯Ό λ‘λŠ” 방식은 ꡉμž₯ν•œ λΆˆνŽΈν•¨μ΄ λ”°λ₯΄κΈ° λ•Œλ¬Έμ— ν•΄κ²° 방법을 μœ„ν•΄ IPv4 μ£Όμ†Œμ— λŒ€ν•΄μ„œ IPv6 μ£Όμ†Œλ₯Ό κ²ΉμΉ˜λŠ” μ˜€λ²„λ ˆμ΄ 방식을 ν†΅ν•΄μ„œ ν•΄κ²°ν•˜λŠ” 방법이 μ„ ν˜Έλœλ‹€.

2) IPv6 Address νŠΉμ„±

IPv6 μ£Όμ†Œμ˜ κΈΈμ΄λŠ” 128 λΉ„νŠΈμ΄λ‹€. (16 λ°”μ΄νŠΈ) β†’ μ΄λŠ” 곧 21282^{128}둜 μ•½ 340Γ—BillionΓ—BillionΓ—Billion340 \times Billion \times Billion \times Billion개 만큼 μ£Όμ†Œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€λŠ” μ˜λ―Έμ΄λ‹€.
IPv4 μ£Όμ†Œμ—μ„œλŠ” Octet을 . (Dot)으둜 ꡬ뢄 ν–ˆλ‹€λ©΄, IPv6 μ£Όμ†Œμ—μ„œλŠ” 2개 Octet을 : (Colon)으둜 κ΅¬λΆ„ν•œλ‹€.
1 λ°”μ΄νŠΈλŠ” 2개의 16μ§„μˆ˜λ‘œ ν‘œν˜„λ˜λ©° (1 λ°”μ΄νŠΈ = 8 λΉ„νŠΈ = 2개의 16μ§„μˆ˜), 총 16 λ°”μ΄νŠΈ 길이λ₯Ό 2 λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ 묢으면 8개의 그룹이 : (Colon)으둜 ꡬ뢄 λ˜λŠ” ν˜•μ‹μ΄λ―€λ‘œ 총 32개의 16μ§„μˆ˜λ‘œ ν‘œν˜„λœλ‹€. (ν•œ κ·Έλ£Ήλ‹Ή 4개의 16μ§„μˆ˜λ‘œ ν‘œν˜„λ˜λ―€λ‘œ)
κ°„ν˜Ή μ£Όμ†Œ ν‘œν˜„μ— μžˆμ–΄μ„œ :: (Double Colon)으둜 ν‘œκΈ°λœ 것을 λ³Ό 수 μžˆλŠ”λ°, 이 μ˜λ―ΈλŠ” 0으둜 μ±„μ›Œμ§„ 2 λ°”μ΄νŠΈκ°€ μ—¬λŸ¬ κ·Έλ£Ή μžˆλ‹€λŠ” 것이닀.
IPv6 μ£Όμ†Œμ˜ 경우 64 λΉ„νŠΈμ˜ Network Prefix와 64 λΉ„νŠΈμ˜ Interface Identifier둜 κ΅¬μ„±λ˜κΈ° λ•Œλ¬Έμ—, IPv6 μ£Όμ†ŒλŠ” Nodeκ°€ μ•„λ‹Œ Interface에 ν• λ‹Ήλœλ‹€. (λͺ¨λ“  InterfaceλŠ” 적어도 1개 μ΄μƒμ˜ Link-Local Unicast μ£Όμ†Œλ₯Ό κ°–κ³  μžˆμ–΄μ„œ 이λ₯Ό ν™œμš©ν•  수 μžˆλ‹€.) λ”°λΌμ„œ ν•˜λ‚˜μ˜ InterfaceλŠ” Unicast, Multicast, Anycast에 λ”°λ₯Έ μ—¬λŸ¬ IPv6 μ£Όμ†Œλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.
IPv4 μ£Όμ†Œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ IPv6 μ£Όμ†Œ μ—­μ‹œ Subnet PrefixλŠ” ν•˜λ‚˜μ˜ Link에 ν• λ‹Ήλ˜μ–΄ μžˆλŠ” ν˜•νƒœμ΄λ‹€. (μ›λž˜ Subnet PrefixλŠ” ν•˜λ‚˜μ˜ Link와 μ—°κ΄€λ˜μ–΄ μžˆλ‹€.) λ”°λΌμ„œ μ•„λž˜μ™€ 같이 λ™μΌν•œ Link에 λŒ€ν•΄μ„œ μ—¬λŸ¬ Subnet Prefixκ°€ μ‘΄μž¬ν•  수 μžˆλ‹€. μ•„λž˜ 그림은 3개의 IPv6 Subnet이 λ‚˜νƒ€λ‚˜ μžˆλ‹€.
IPv6 μ£Όμ†Œμ—μ„œλŠ” μ˜€λ‘œμ§€ Network Mask둜써 CIDR ν‘œκΈ°λ²•λ§Œ λ”°λ₯Έλ‹€. (μ‹€μ œλ‘œ IPv6 μ£Όμ†Œμ—λŠ” ν΄λž˜μŠ€κ°€ μ—†λ‹€.)

3) 3 Types of IPv6 Address

IPv6 μ£Όμ†ŒλŠ” μ•„λž˜μ™€ 같은 톡신 ν˜•νƒœμ— 따라 μ—¬λŸ¬ μ£Όμ†Œλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.


ν•˜λ‚˜μ˜ Interfaceλ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•œ Identifier


Unicast와 크게 λ‹€λ₯Ό 것이 없이 Unicast νŠΉμ„±μ„ 가진닀. λ‹€λ§Œ λŒ€ν‘œ 전화와 같이 ν•œ Interfaceμ—μ„œλ§Œ μˆ˜μ‹ ν•  수 있으면 λœλ‹€.) μ—¬λŸ¬ Interface듀에 λŒ€ν•œ λŒ€ν‘œ Identifier


Anycast와 같이 μ—¬λŸ¬ Interfaceλ“€μ—κ²Œ μ „μ†‘λ˜μ—ˆμ„ λ•Œ 받을 수 μžˆλŠ” Idenfier이닀. AnycastλŠ” μ—¬λŸ¬ Interfaceλ“€μ—κ²Œ μ „μ†‘ν–ˆμ„ λ•Œ ν•˜λ‚˜μ˜ Interface만 받을 수 있으면 λ˜μ—ˆλ‹€λ©΄, MulticastλŠ” Identifierλ₯Ό 가진 λͺ¨λ“  Interfaceκ°€ Packet을 λ°›κ²Œ λœλ‹€.
MutlicastλŠ” κ·Έλ‹₯ 쒋은 톡신은 μ•„λ‹ˆλ‹€. Multicastλ₯Ό λ°›κΈ° μœ„ν•΄ 그룹에 μ†Œμ†λœ Node듀이 μ“Έλ°μ—†λŠ” 일을 ν•˜κ²Œλ  μˆ˜λ„ μžˆλ‹€. κ·ΈλŸΌμ—λ„ Broadcastλ³΄λ‹€λŠ” λ‚«λ‹€.
IPv6 μ£Όμ†Œ 체계

4) IPv6 Address Format

IPv6 의 Unicast μ£Όμ†Œμ—λŠ” Linkμ—μ„œ Interfaceλ₯Ό 확인할 수 μžˆλŠ” Interface Identifierκ°€ μ‚¬μš©λœλ‹€κ³  ν–ˆμ—ˆλ‹€. 이 λ•Œ Interface IdentifierλŠ” 64 λΉ„νŠΈμ˜ 길이이며, Modified EUI-64 Format을 λ”°λ₯Έλ‹€.
IPv6 μ£Όμ†Œμ— IID (Interface Identifier)κ°€ μ‚¬μš©λ˜κΈ° μœ„ν•΄μ„ , Subnet Prefix λ²”μœ„ λ‚΄μ—μ„œ Unique ν•΄μ•Όν•œλ‹€. (IID의 Unique함은 IPv6 μ£Όμ†Œμ˜ Unique와 독립적이닀.)

IPv6 Address Format

IPv6 μ£Όμ†Œμ˜ ν˜•νƒœλŠ” μ•„λž˜ κ·Έλ¦Όκ³Ό κ°™λ‹€. 만일 Global Unicast Address둜써 IPv6 μ£Όμ†Œλ₯Ό λ‚˜νƒ€λ‚΄λ©΄, IIDλŠ” 64 λΉ„νŠΈλ‘œ 고정이고 n+mn + m μ—­μ‹œ 64 λΉ„νŠΈκ°€ λœλ‹€.

Modified EUI-64 Format

IIDλŠ” Modified EUI-64 Format을 λ”°λ₯Έλ‹€κ³  ν–ˆμ—ˆλŠ”λ°, 이에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž. EUIλΌλŠ” 말은 Extended Unique Identifier의 약어이닀.
Modified EUI-64 Formatμ—μ„œμ˜ EUIλŠ” IPv6 μ£Όμ†Œμ—μ„œ μ‚¬μš©λ˜λŠ” IID에 λŒ€ν•΄μ„œ 64 λΉ„νŠΈμ˜ 길이의 Unique함을 보μž₯ν•΄μ€€λ‹€. IPv4 μ£Όμ†Œμ™€ 달리 IPv6 μ£Όμ†Œμ—μ„œμ˜ μ£Όμš”ν•œ μž₯점이 λ°”λ‘œ EUI에 μžˆλ‹€. λ°”λ‘œ IPv4 μ£Όμ†Œ μ²΄κ³„μ—μ„œ IPv4 μ£Όμ†Œ 할당을 μœ„ν•œ μˆ˜λ™ μ„€μ • 및 DHCP의 ν•„μš”μ„±μ„ μ—†μ• μ£ΌκΈ° λ•Œλ¬Έμ΄λ‹€.
IPv6 μ£Όμ†Œ μ²΄κ³„μ—μ„œλŠ” DHCP 없이도 μ£Όμ†Œλ₯Ό μ•Œ 수 μžˆλ‹€λŠ” μ†Œλ¦¬μΈλ°, 그럼 IPv6 μ£Όμ†ŒλŠ” μ–΄λ–»κ²Œ μƒμ„±λ˜λŠ”κ±ΈκΉŒ? Node μžμ²΄κ°€ MAC μ£Όμ†Œλ₯Ό μ΄μš©ν•˜μ—¬ IPv6 μ£Όμ†Œλ₯Ό μƒμ„±ν•˜μ—¬ ν• λ‹Ήν•˜κ²Œ λœλ‹€.
EUI-64 Format을 지킀기 μœ„ν•΄μ„  μ–΄λ–€ ν˜•μ‹μ„ λ§Œμ‘±ν•΄μ•Ό ν•˜λŠ”μ§€ 쑰금 더 μžμ„Ένžˆ μ•Œμ•„λ³΄μž. λͺ¨λ“  기기듀은 같은 λ„€νŠΈμ›Œν¬ μœ„μ—μ„  같은 Mapping 기법을 μ‚¬μš©ν•΄μ•Όν•˜λŠ”λ°, λŒ€μ²΄μ μœΌλ‘œ Data Link Layerμ—μ„œμ˜ 보편적인 방법은 IEEE 802 MAC μ£Όμ†Œλ₯Ό μ‚¬μš©ν•œλ‹€. 이 λ•Œ Data Link Layerμ—μ„œ μ‚¬μš©ν•˜λŠ” MAC μ£Όμ†ŒλŠ” 48 λΉ„νŠΈμ˜ 길이이고 EUI-64λŠ” 이 MAC μ£Όμ†Œλ₯Ό μ΄μš©ν•˜μ—¬ 64 λΉ„νŠΈλ₯Ό 이룬닀고 ν–ˆλŠ”λ°, λΆ€μ‘±ν•œ 16 λΉ„νŠΈλŠ” μ–΄λ–»κ²Œ λ©”κΎΈμ–΄ IPv6 μ£Όμ†Œλ₯Ό λ§Œλ“€μ–΄ λ‚ΌκΉŒ?
Data Link Layer의 48 λΉ„νŠΈ 길이의 μ£Όμ†ŒλŠ” 24 λΉ„νŠΈ μ”© μͺΌκ°œμ„œ Upper 24 λΉ„νŠΈ, Lower 24 λΉ„νŠΈλ‘œ λ³Ό 수 μžˆλ‹€. Upper 24 λΉ„νŠΈλŠ” OUI (Organizationally Unique Identifier)λ₯Ό μ˜λ―Έν•˜κ³  Lower 24 λΉ„νŠΈλŠ” 기기의 Identifierλ₯Ό μ˜λ―Έν•œλ‹€. EUI-64 Format은 MAC μ£Όμ†Œμ˜ Upper와 Lower 사이에 λͺ¨λ‘ 1둜 μ±„μ›Œμ§„ 16 λΉ„νŠΈλ₯Ό μ‚½μž…ν•˜μ—¬ 64 λΉ„νŠΈλ₯Ό ν˜•μ„±ν•œλ‹€.
EUI-48 β†’ EUI-64 β†’ Modified EUI-64 λ₯Ό λ§Œλ“œλŠ” 과정을 그림으둜 μ‚΄νŽ΄λ³΄μž.
이 λ•Œ, IPv6 μ£Όμ†ŒλŠ” EUI-64 Format을 μ‚¬μš©ν•˜κΈ΄ ν•˜λ‚˜, Modfied EUI-64 Format을 μ΄μš©ν•¨μ„ μœ μ˜ν•˜μž!
λ‹¨μˆœνžˆ EUI-64 Format을 μ΄μš©ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 3번 κ³Όμ •μ²˜λŸΌ 7번째 λΉ„νŠΈμ— λŒ€ν•΄μ„œ 상황에 λ§žλŠ” λ³€ν™”λ₯Ό μ£Όμ–΄ μ΄μš©ν•œλ‹€. μœ„μ˜ 쑰건이 λ‚˜νƒ€λ‚΄λŠ” 것을 톡해 μ•Œ 수 μžˆλ“―μ΄, IPv6 μ£Όμ†Œλ₯Ό λΉ„νŠΈλ‘œ λ‚˜νƒ€λ‚΄μ–΄ 첫 번째 λ°”μ΄νŠΈμ˜ 7번째 λΉ„νŠΈλ₯Ό 보면 Unique함을 μ•Œ 수 μžˆλ‹€. IPv6 μ£Όμ†Œκ°€ Uniqueν•˜λ‹€λ©΄ IID의 첫 번째 λ°”μ΄νŠΈμ˜ 7번째 λΉ„νŠΈλ₯Ό 1둜, 그렇지 μ•Šλ‹€λ©΄ 0으둜 μ±„μ›Œλ„£λŠ”λ‹€.

MAC μ£Όμ†Œμ˜ 전달

MAC μ£Όμ†Œμ˜ ν˜•νƒœλŠ” μ•„λž˜ κ·Έλ¦Όκ³Ό κ°™λ‹€.
이 λ•Œ 16μ§„μˆ˜λ‘œ ν‘œν˜„λœ 각 값듀이 μ‹€μ œλ‘œ ν†΅μ‹ μ—μ„œ 전솑될 λ•ŒλŠ” λ’€μ§‘ν˜€μ„œ μ „λ‹¬λœλ‹€.
이런 과정이 μΌμ–΄λ‚˜λŠ” 것은 μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 각 Octet별 ν‘œν˜„μ΄ μžˆμ„ λ•Œ, 각 Octet의 LSBλΆ€ν„° (λμ—μ„œλΆ€ν„°) 전솑이 되기 λ•Œλ¬Έμ΄λ‹€.

5) IPv6 Special Address

IPv6 μ£Όμ†Œμ˜ Speical AddressλŠ” IPv4 μ£Όμ†Œμ™€ 크게 λ‹€λ₯Ό 것은 μ—†λ‹€.

Unspeicified Address

0:0:0:0:0:0:0:0 ν˜Ήμ€ :: μ£Όμ†ŒλŠ” IPv6 μ£Όμ†Œμ˜ λΆ€μž¬λ₯Ό μ˜λ―Έν•œλ‹€. IPv4 μ£Όμ†Œμ˜κ³Ό λ™μΌν•œ ν‘œν˜„μ΄λ‹€. Uniqueν•œ μ£Όμ†Œλ₯Ό λ°›κΈ° μœ„ν•΄ μ „λ‹¬ν•˜λŠ” Packet의 Source의 μž„μ‹œ μ£Όμ†Œλ‘œ μ΄μš©λœλ‹€.

Loopback Address

IPv4 μ£Όμ†Œμ˜κ³Ό λ™μΌν•œ ν‘œν˜„μ΄λ‹€. IPv6 μ£Όμ†Œμ—μ„œλŠ” 0:0:0:0:0:0:0:1 ν˜Ήμ€ :: 1둜 ν‘œν˜„ν•œλ‹€. Loopback μ£Όμ†Œλ₯Ό ν–₯ν•œ Packet은 μ ˆλŒ€λ‘œ IPv6 Router둜 Forward λ˜μ§€ μ•ŠλŠ”λ‹€. (λ‹€μŒ Linkλ‘œλ„ λ‚˜κ°€μ§€ μ•ŠλŠ” 것도 λ‹Ήμ—°ν•˜λ‹€.)

IPv4-Mapped IPv6 Address

[1] IPv4-Compatiable IPv6 Address (Deprecated)
IPv6 μ£Όμ†Œλ₯Ό μ΄μš©ν•˜λŠ” 컴퓨터인데 IPv4 μ£Όμ†Œμ— μ—°κ²°λœ κ²½μš°μ— μ‚¬μš©ν•œλ‹€.
[2] IPv4-Mapped IPv6 Address
IPv4 μ£Όμ†Œλ₯Ό μ΄μš©ν•˜λŠ” 컴퓨터인데 IPv6 μ£Όμ†Œλ₯Ό ν• λ‹Ήν•˜λŠ” κ²½μš°μ— μ‚¬μš©ν•œλ‹€.
μ•„λž˜ κ·Έλ¦Όκ³Ό 같은 상황일 λ•Œ, μ£Όμ†Œλ₯Ό λ‹€μŒκ³Ό 같이 Mapping ν•œλ‹€. 80 λΉ„νŠΈλŠ” 0으둜 μ±„μš°κ³ , 16 λΉ„νŠΈλŠ” 1둜 μ±„μš΄ λ’€ (만일 이 λΆ€λΆ„μ˜ 16 λΉ„νŠΈκ°€ 0으둜 μ±„μ›Œμ Έ μžˆλ‹€λ©΄ μ΄λŠ” IPv4-Mapped IPv6 Addressκ°€ μ•„λ‹Œ IPv4-Compatiable IPv6 Address이닀.), 32 λΉ„νŠΈ 길이의 IPv4λ₯Ό μ”Œμš΄λ‹€.

6) Unicast

IPv6 Unicast μ£Όμ†Œμ˜ λ²”μœ„λŠ” 크게 3κ°€μ§€λ‘œ λ‚˜λ‰œλ‹€.


[1] Link-Local Scope
Link-Local Addresses라고 λΆ€λ₯Έλ‹€. ν•˜λ‚˜μ˜ Link λ²”μœ„ 내에 μ†ν•œ λͺ¨λ“  Host듀에 λŒ€ν•œ Identifierλ₯Ό μ˜λ―Έν•œλ‹€.(Link-Local Scope에 ν•΄λ‹Ήν•˜λŠ” μ£Όμ†ŒλŠ” Link-Local Addresses와 Site-Local Addressesκ°€ μžˆλŠ”λ° ν›„μžλŠ” Deprecated λ˜μ—ˆλ‹€.)
[2] Unique-Local Scope
Unique-Lcoal Addresses라고 λΆ€λ₯Έλ‹€. νŠΉλ³„νžˆ κ΄€λ¦¬λ˜λŠ” λ²”μœ„ ν˜Ήμ€ λ³„λ„μ˜ Link 내에 μ†ν•œ λͺ¨λ“  Host듀에 λŒ€ν•œ Identifierλ₯Ό μ˜λ―Έν•œλ‹€.
[3] Global Scope
Global Unicast Addresses라고 λΆ€λ₯Έλ‹€. λͺ¨λ“  인터넷 μƒμ—μ„œ κΈ°κΈ°κ°€ 도달할 수 μžˆλŠ” Identifierλ₯Ό μ˜λ―Έν•œλ‹€.

Address Type

[1] Global Unicast Address
ν•΄λ‹Ή Unicast μ£Όμ†ŒλŠ” IPv4의 μ£Όμ†Œμ™€ 일λ§₯μƒν†΅ν•˜λ‹€. Globally Routableν•˜κ³ , Reachableν•˜λ‹€. λ‹€λ§Œ μˆ˜ν‰μ μ΄λ©΄μ„œλ„ 계측적인 IPv4 μ£Όμ†Œ ν™˜κ²½μ˜ 인터넷과 μ‘°κΈˆμ€ λ‹€λ₯Έ 점이 μžˆλ‹€λ©΄, IPv6 μ£Όμ†Œ ν™˜κ²½μ˜ 인터넷은 섀계뢀터 효율적이고 계측적인 μ£Όμ†Œμ™€ Routing을 λͺ©μ μœΌλ‘œ λ˜μ–΄ μžˆλ‹€λŠ” 것이닀.
Globalν•œ Scopeλ₯Ό 두어 ν†΅μ‹ ν•˜λ €λŠ” Unicast μ£Όμ†ŒλŠ” μ΅œμƒμœ„ 3개의 λΉ„νŠΈκ°€ 001둜 λ˜μ–΄ μžˆλ‹€.
κ·Έλ¦Όμ—μ„œ μ•Œ 수 μžˆλ“―μ΄ Global Unicast AddressλŠ” 3가지 μ˜μ—­μœΌλ‘œ λ‚˜λ‰˜μ–΄μ Έμžˆλ‹€. 첫 3개의 λΉ„νŠΈλŠ” 001둜 κ³ μ •λ˜μ–΄ 있고, κ·Έ 외에 Global Routing Prefix (Site Prefix), Subnet ID, Interface ID둜 λ‚˜λ‰˜μ–΄μ Έ μžˆλ‹€.
μ—¬κΈ°μ„œ Global Routing PrefixλŠ” Leaf Site둜 기관에 λ“±λ‘λœλ‹€. μ΄λŠ” Provider Prefix둜써 λ“±λ‘λœλ‹€. μ΄λ ‡κ²Œ λ“±λ‘λœ PrefixλŠ” μΆ”κ°€ 16 λΉ„νŠΈλ₯Ό Subnet ID둜 이용이 κ°€λŠ₯ν•˜λ‹€. λ”°λΌμ„œ 기관은 μ΅œλŒ€ 6553565535개의 Subnet을 생성할 수 μžˆλ‹€. Host 뢀뢄은 Node의 Interface Identifier둜써 κΈ°λ‘λœλ‹€. 이에 λŒ€ν•œ μ˜ˆλŠ” μ•„λž˜ κ·Έλ¦Όκ³Ό κ°™λ‹€.
[2] Link-Local Address
주둜 Link μƒμ˜ 이웃 사이에 μ‚¬μš©λ˜κ±°λ‚˜, NDP (Neighbor Discovery Processes)μ—μ„œ μ‚¬μš©λœλ‹€.
이 μ£Όμ†ŒλŠ” λ‹€λ₯Έ Unicast μ£Όμ†Œκ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ•„λ„ Default Gatewayλ‘œλΆ€ν„° 컴퓨터 λΆ€νŒ… μ‹œ μžλ™μœΌλ‘œ μ„€μ •λœλ‹€. 이 λ•Œ Link-Local Address의 PrefixλŠ” FE80::/10이닀. (μ΄μ–΄μ§€λŠ” λ‚˜λ¨Έμ§€ 54 λΉ„νŠΈλŠ” 0으둜 μ±„μ›Œμ§€κΈ° λ•Œλ¬Έμ— FE80::/64둜 보기도 ν•œλ‹€.)
[3] Site-Local Address (Deprecated)
Site-Local AddressλŠ” IPv4 μ£Όμ†Œμ—μ„œμ˜ Private μ£Όμ†Œμ™€ λ™μΌν•˜λ‹€.
(,, λ‚΄μ˜ μ£Όμ†Œλ“€κ³Ό λ™μΌν•˜λ‹€.)
Site-Local Address의 λ²”μœ„λŠ” ν•΄λ‹Ή Siteμ—λ§Œ ν•΄λ‹Ήν•œλ‹€. Site-Local AddressλŠ” λ‹€λ₯Έ Siteμ—μ„œλŠ” 접근이 λΆˆκ°€λŠ₯ν•˜λ‹€. λ”°λΌμ„œ λ°˜λŒ€λ‘œλ„ RouterλŠ” Site-Local Traffic을 Site λ°–μœΌλ‘œ Forward ν•΄μ„œλ„ μ•ˆ λœλ‹€.
Site-Local Address의 PrefixλŠ” FEC0::/10이닀. (Link-Local Address와 달리 μžλ™μœΌλ‘œ μ„€μ •λ˜μ§€λŠ” μ•Šμ§€λ§Œ, Link-Local Address와 λ§ˆμ°¬κ°€μ§€λ‘œ λ‚˜λ¨Έμ§€ 54 λΉ„νŠΈλŠ” 0으둜 μ±„μ›Œμ§€λ―€λ‘œ FEC0::/64둜 보기도 ν•œλ‹€.)
[4] Unique Local IPv6 Unicast Address

7) Anycast

AnycastλŠ” μ„œλ‘œ λ‹€λ₯Έ Node의 Interface에 λ™μΌν•œ Anycast μ£Όμ†Œκ°€ ν• λ‹Ήλ˜μ–΄ μžˆλŠ” κ²½μš°μ— μ΄μš©ν•  수 μžˆλ‹€.
Anycast둜 μ „λ‹¬λœ Packet듀은 μ„œλ‘œ λ‹€λ₯Έ Nodeμ—μ„œ Anycast μ£Όμ†Œκ°€ μ ‘κ·Ό κ°€λŠ₯ν•œ Interface에 μ „λ‹¬λœλ‹€. 이 λ•Œ, Packet은 Routing Protocol에 따라 κ°€μž₯ κ°€κΉŒμš΄ κ²ƒμœΌλ‘œ κ²°μ •λœ Node의 Interface둜 κ°€κ²Œ λœλ‹€. (λ™μΌν•œ Anycast μ£Όμ†Œλ₯Ό Node듀이 κ°–κ³  μžˆλ‹€κ³  해도 μ•„λ¬΄λ°λ‘œλ‚˜ κ°€λŠ” 것이 μ•„λ‹ˆλ‹€.)
μœ„μ²˜λŸΌ Routing Protocol이 μ–΄λ””λ‘œ ν–₯ν•΄κ°€λŠ”μ§€ λ³Έ κ²ƒμ²˜λŸΌ, Anycastλ₯Ό μ‚¬μš©ν•˜λŠ” 주된 λͺ©μ μ€ Traffic에 λŒ€ν•œ Load Balancing이닀. (Packet을 μ²˜λ¦¬ν•  수 μžˆλŠ” Nodeκ°€ μ—¬λŸΏμΈ 경우, κ°€μž₯ κ°€κΉŒμš΄ Node둜 감으둜써 Traffic이 λͺ°λ¦¬λŠ” 것을 μ–΄λŠ 정도 방지할 수 μžˆλ‹€.) μ‹€μ œ κ΅¬κΈ€μ˜ Cloud Service둜 μ΄μš©ν•˜λŠ” Load Balancer도 Anycast λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•œλ‹€.
이외에도 μœ„ 그림처럼 DNS Server μ—­μ‹œ Anycastλ₯Ό 톡해 득을 λ³Ό 수 μžˆλ‹€. DNS Serverκ°€ Anycastλ₯Ό μ΄μš©ν•˜κ²Œ 된 배경을 쑰금 μ‚΄νŽ΄λ³΄λ©΄ DNS Server에 λŒ€ν•œ 곡격과 λ§Žμ€ 연관이 μžˆλ‹€. 2002λ…„ 10μ›” Root DNS DDoS Attack이 μžˆμ—ˆκ³  이둜 인해 μ „ 세계에 μžˆλŠ” 13개의 Root DNS 쀑 8κ°œκ°€ μ£½μ–΄λ²„λ¦¬λŠ” 사건이 μžˆμ—ˆκ³ , 2003λ…„ 1μ›”μ—λŠ” Worm DDos Attack으둜 5개의 Root DNSκ°€ μ£½μ—ˆμ—ˆλ‹€. 이 λ•Œλ¬Έμ— λ§Žμ€ μ‚¬μš©μžλ“€μ΄ DNS Serverλ₯Ό μ΄μš©ν•˜μ§€ λͺ»ν•˜λŠ” 일이 μžˆμ—ˆλ‹€. λ”°λΌμ„œ DNS Serverλ₯Ό μ΄μš©ν•  λ•Œ, Anycast 방식을 μ΄μš©ν•˜κ²Œ ν•˜μ—¬ 만일 ν•œ μͺ½ 지역에 μžˆλŠ” DNS Serverκ°€ 죽더라도 λ‹€λ₯Έ μ§€μ—­μ˜ DNS Serverλ₯Ό μ΄μš©ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ„œ 이런 ν˜„μƒμ— λŒ€μ²˜ν•  수 μžˆκ²Œλ” λ§Œλ“€μ—ˆλ‹€. 이에 λŒ€ν•œ 유λͺ…ν•œ μ˜ˆλ‘œλŠ” κ΅¬κΈ€μ˜ Public DNS에 μžˆλ‹€. κ΅¬κΈ€μ˜ DNSλŠ” μ „ 세계에 ꡉμž₯히 κ΄‘λ²”μœ„ν•˜κ²Œ 흩어져 μžˆλ‹€. 만일 λ‚΄κ°€ κ΅¬κΈ€μ˜ Public DNSλ₯Ό μ΄μš©ν•˜λ©΄, λ‚΄ μ§€μ—­μ—μ„œ κ°€μž₯ 졜적의 Routing Path에 μžˆλŠ” μ§€μ—­μ˜ DNS μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜κ²Œ λœλ‹€. (보톡 이런 μ„œλΉ„μŠ€κ°€ μ œκ³΅λ˜λŠ” 곳의 지역은 ꡬ글 μ„œλΉ„μŠ€λ₯Ό μœ„ν•œ 졜적인 지역에 λ‘”λ‹€. μ•„μ‹œμ•„μ˜ 경우 λŒ€λ§Œκ³Ό 홍콩에 μœ„μΉ˜ν•΄μžˆλ‹€.)
λ˜ν•œ IPv6 μ£Όμ†Œμ˜ AnycastλŠ” Network Redundancy의 λͺ©μ μ„ κ°–κ³  μžˆκΈ°λ„ ν•˜λ‹€. (μ„€κ³„λŠ” ν–ˆμ§€λ§Œ μ“°λŠ” μ‚¬λžŒμ€ 잘 μ—†λ‹€.)
만일 A Server와 B Server의 Anycast μ£Όμ†Œκ°€ λ™μΌν•˜κ³  A Server와 톡신이 μ—†μ—ˆκ³  B Server와 톡신을 ν•˜κ³  μžˆμ—ˆλ‹€κ³  ν•œλ‹€λ©΄, Client Anycastλ₯Ό μ‹œλ„ν•  λ•Œ λ³„λ„μ˜ μ„€μ • 없이 μžλ™μœΌλ‘œ B Server둜 톡신을 λ³΄λ‚΄κ²Œ λœλ‹€.
λ§ˆμ§€λ§‰μœΌλ‘œ Subnet-Router Anycast Addressλ₯Ό μ•Œμ•„λ³΄μž. Subnet-Router Anycast AddressλŠ” 사전에 μ •μ˜λœ μ£Όμ†Œμ΄λ‹€. (Anycastμ—μ„œμ˜ Subnet PrefixλŠ” νŠΉμ • Link에 λŒ€ν•΄μ„œ μž‘μš©ν•˜λŠ” Identifier이닀.) 이 λ•Œ, Subnet-Router Anycast AddressλŠ” μ–΄λ–€ Nodeκ°€ μ—¬λŸ¬ Routerλ“€ 쀑 ν•˜λ‚˜μ™€ 톡신을 ν•΄μ•Όν•˜λŠ” 경우 μ΄μš©λœλ‹€. (즉, Anycast인데 νŠΉμ • Subnet에 λŒ€ν•œ Anycast라고 보면 λœλ‹€.) Subnet-Router Anycast Addressκ°€ μƒμ„±λ˜λ©΄, μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 Subnet Prefix의 λΉ„νŠΈκ°€ μ μ ˆν•œ κ°’μœΌλ‘œ 정해지며 λ‚˜λ¨Έμ§€ λΉ„νŠΈλŠ” 0으둜 ν• λ‹Ήλœ μƒνƒœλ‘œ μ΄μš©λœλ‹€.
이런 Subnet-Router Anycast Address에 λŒ€ν•΄μ„œ 정리해보면 λ‹€μŒκ³Ό κ°™λ‹€.
Subnet이 μžˆλŠ” Router의 λͺ¨λ“  Interface듀은 ν•΄λ‹Ή Interface의 Subnet을 μœ„ν•΄ Subnet-Router Anycast Addressκ°€ ν• λ‹Ήλ˜μ–΄ μžˆλ‹€.
Subnet-Router Anycast AddressλŠ” νŠΉμ • Subnetκ³Ό μ—°κ²°λœ κ°€μž₯ κ°€κΉŒμš΄ Router와 ν†΅μ‹ ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€.
이상 Anycast에 λŒ€ν•œ μ„€λͺ…듀이고, λ§ˆμ§€λ§‰μœΌλ‘œ μ£Όμ˜ν•  점은 Anycast μ£Όμ†ŒλŠ” IPv6 Packet의 Source μ£Όμ†Œλ‘œ μ‚¬μš©λ˜μ–΄μ„œλŠ” μ•ˆ λœλ‹€!

8) Multicast

IPv6 μ£Όμ†Œμ—μ„œλŠ” 더 μ΄μƒμ˜ BroadcastλŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. μ˜€λ‘œμ§€ Multicast둜만 λΆˆνŠΉμ • λ‹€μˆ˜μ—κ²Œ Packet을 보낼 수 μžˆλ‹€. (IPv6 μ£Όμ†Œμ—μ„œλŠ” Unicast, Anycast, Multicast만이 μ‘΄μž¬ν•œλ‹€.) IPv6 μ£Όμ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“  Nodeμ—μ„œλŠ” Multicastλ₯Ό 지원해야 ν•œλ‹€. Multicastκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ IPv6μ—μ„œλŠ” μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” λŒ€λΆ€λΆ„μ˜ μ„œλΉ„μŠ€κ°€ μž‘λ™ν•˜μ§€ μ•ŠλŠ”λ‹€. (IPv4 μ£Όμ†Œκ°€ κ³΅ν‘œλ˜μ—ˆμ„ λ•ŒλŠ” Multicast에 λŒ€ν•œ ν‘œμ€€μ΄ μ‘΄μž¬ν•˜μ§€ μ•Šμ•˜μ—ˆκΈ° λ•Œλ¬Έμ—, ARP ν˜Ήμ€ DHCP와 같은 Protocol은 Broadcast에 μ˜μ‘΄ν–ˆμ—ˆλ‹€.) λ‹¨μˆœνžˆ μƒκ°ν•΄μ„œ Broadcast보닀 Multicastκ°€ 더 μ’‹κΈ° λ•Œλ¬Έμ— BroadcastλŠ” μ‚¬μš©ν•˜μ§€ μ•Šκ²Œ λ˜μ—ˆλ‹€. LAN의 크기가 컀지고 Switchκ°€ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— ν˜„λŒ€μ˜ BroadcastλŠ” λ¬Έμ œκ±°λ¦¬μ΄λ‹€.
IPv6 μ£Όμ†Œμ—μ„œ Multicast의 Traffic은 IPv4와 같이 μˆ˜ν–‰λœλ‹€.
IPv6 μ£Όμ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” Nodeμ—μ„œλŠ” λ™μ‹œμ— μ—¬λŸ¬ 개의 Multicast μ£Όμ†Œμ— λŒ€ν•΄μ„œ Listen ν•  수 μžˆλ‹€.
NodeλŠ” μ–Έμ œλ“ μ§€ Multicast 그룹에 μ°Έκ°€ν•˜κ³  λ‚˜κ°ˆ 수 μžˆλ‹€.
Multicast μ£Όμ†ŒλŠ” Source μ£Όμ†Œ ν˜Ήμ€ Intermediate Destination μ£Όμ†Œλ‘œ μ‚¬μš©λ  수 μ—†λ‹€.
Multlicast의 주된 λͺ©μ μ€ Node 간에 μ£Όκ³ λ°›λŠ” Packet의 수λ₯Ό μ΅œμ ν™”ν•˜μ—¬ λŒ€μ—­ν­μ„ μ•„λΌλŠ” 효율적인 λ„€νŠΈμ›Œν¬λ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•œ 것이닀.
κ·Έλ ‡λ‹€λ©΄ Mutlicast μ£Όμ†Œ ν˜•νƒœλŠ” μ–΄λ–€ μ‹μΌκΉŒ? Multicastλ₯Ό μ΄μš©ν•  λ•Œ IPv6 μ£Όμ†Œμ˜ 첫 Octet의 λͺ¨λ“  λΉ„νŠΈλ“€μ€ 1둜 μ±„μ›Œμ§„λ‹€. μ΄λŠ” 곧 첫 Octet이 FF둜 μ‹œμž‘ν•¨μ„ μ˜λ―Έν•œλ‹€. (λΉ„νŠΈ Maskingμ—μ„œλ„ μ‰½κ²Œ Mutlicastμž„μ„ 확인할 수 μžˆλ‹€.)
μœ„ κ·Έλ¦Όμ—μ„œ μ•Œ 수 μžˆλ“―, flgs와 scop에 λŒ€ν•œ ν•­λͺ©μ΄ μžˆλŠ”λ° 이λ₯Ό ν†΅ν•΄μ„œ νŠΉμ • λ²”μœ„μ™€ μ£Όμ†Œμ— λŒ€ν•œ νƒ€μž…μ„ ꡬ뢄지을 수 μžˆλ‹€. λ‚˜λ¨Έμ§€ 112 λΉ„νŠΈλ“€μ€ Multicast에 λŒ€ν•œ κ·Έλ£Ή IDλ₯Ό ν‘œν˜„ν•˜λŠ”λ° μ‚¬μš©λœλ‹€.
IPv6 μ£Όμ†Œμ—μ„œ FlagλŠ” λ‹€μŒκ³Ό κ°™λ‹€.
TλŠ” Transient Flag, PλŠ” Prefix Flag, R은 Rendezvous Point Address Flagλ₯Ό μ˜λ―Έν•œλ‹€.
T 값이 0이면 IANA (Internet Assigned Numbers Authority의 μ•½μ–΄λ‘œ IPv4, IPv6 λ“±μ˜ 할당에 κ΄€μ—¬ν•˜λŠ” 기관이닀.) 에 μ˜ν•΄ ν• λ‹Ήλœ Permanent Assigned Multicast Address이고, T 값이 1이면 Non-Permanent Assigned Multicast Address이닀.
Prefix FlagλŠ” RFC3306에 μ˜ν•΄ μ œμ‹œλœ Flag으둜써, Unicast μ£Όμ†Œμ˜ Prefix에 κΈ°λ°˜ν•œ Multicast μ£Όμ†ŒμΈμ§€μ— λŒ€ν•œ Flag이닀.
R FlagλŠ” Rendezvous Point Addressλ₯Ό λ‚΄μž₯ν•˜κ³  μžˆλŠ” 여뢀에 따라 μ„€μ •λ˜λŠ” Flag이닀.
IPv6 μ£Όμ†Œμ—μ„œ ScopeλŠ” λ‹€μŒκ³Ό κ°™λ‹€.
Scope에 λŒ€ν•΄μ„œ Link의 μ˜λ―ΈλŠ” Interface-Local, Link-Local, Subnet-Local둜 3가지λ₯Ό κ°–λŠ”λ‹€. Interface-Local은 FF01::1 ν˜Ήμ€ ::1둜 Loopback을 λ§ν•˜κ³ , Link-Local은 FF02::1 (λͺ¨λ“  Node), FF02::2 (λͺ¨λ“  Router)λ₯Ό λ§ν•œλ‹€. Link-Local의 경우 같은 Link 상에 μžˆλŠ” μΈμ ‘ν•œ Node와 톡신할 λ•Œ μ‚¬μš©λœλ‹€. Subnet-Lcoal은 주둜 ν—ˆμš©λ˜μ§€λŠ” μ•ŠλŠ”λ‹€.

9) Solicited-Node Multicast Address

Solicited-Node Multicast AddressλŠ” IPv4 μ£Όμ†Œμ—μ„œλŠ” ν•„μš”ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ, IPv6 μ£Όμ†Œμ—μ„œλŠ” ν•„μš”ν•œ μ£Όμ†Œμ΄λ‹€. 이 μ£Όμ†ŒλŠ” DAD (Duplicate Address Detection)을 ν™•μΈν•œ 후에 할당을 받을 수 μžˆλ‹€. DADλŠ” NDP (Neighbor Discovery Protocol)의 μΌλΆ€λ‘œμ¨, DADλ₯Ό μ‚¬μš©ν•˜λ©΄ ν˜„μž¬ Nodeμ—μ„œ Stateless Auto Configuration을 톡해 μ‚¬μš©ν•˜λ €κ³  ν•˜λŠ” IPv6 μ£Όμ†Œμ— λŒ€ν•΄μ„œ Local-Linkμ—μ„œ 이미 IPv6 μ£Όμ†Œκ°€ μ‚¬μš© 쀑인지 확인을 ν•  수 μžˆλ‹€. Solicited-Node Multicast AddressλŠ” λ‹€λ₯Έ Nodeμ—μ„œ 이미 κ΅¬μ„±λœ Unicast μ£Όμ†Œ ν˜Ήμ€ Anycast μ£Όμ†Œλ₯Ό κ²€μƒ‰ν•˜μ—¬ Local-Linkμ—μ„œ μ‚¬μš© 쀑인 μ£Όμ†Œλ₯Ό ν™•μΈν•˜λŠ”λ° μ‚¬μš©λœλ‹€.
Solicited-Node Multicast Address의 PrefixλŠ” FF02::1:FF00:0000/104둜써 Link-Local의 Multicast μ£Όμ†Œμ˜ Prefixλ₯Ό μ‚¬μš©ν•˜λŠ” 것을 λ³Ό 수 μžˆλ‹€. 주어진 104 λΉ„νŠΈλ₯Ό Prefix둜 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 남은 24 λΉ„νŠΈ 값은 Unicast μ£Όμ†Œ ν˜Ήμ€ Anycast μ£Όμ†Œμ˜ 끝 24 λΉ„νŠΈλ₯Ό λ³΅μ‚¬ν•΄μ™€μ„œ Solicited-Node Multicast Address둜 μ΄μš©ν•œλ‹€. λ³€ν™˜ 과정은 μ•„λž˜ κ·Έλ¦Όκ³Ό κ°™λ‹€.
예λ₯Ό λ“€μ–΄μ„œ Unicast μ£Όμ†Œκ°€ FE80::2AA:FF:FE28:9C5A라고 ν•œλ‹€λ©΄, Solicited-Node Multicast AddressλŠ” FF02::1:FF28:9C5Aκ°€ λœλ‹€.
κ·Έλ ‡λ‹€λ©΄ 이런 Solicited-Node Multicast AddressλŠ” μ™œ ν•„μš”ν•œ κ²ƒμΌκΉŒ? ν˜„μž¬ λ‚΄ IPv6 μ£Όμ†Œλ₯Ό λ‹€λ₯Έ κ³³μ—μ„œ μ΄μš©ν•˜κ³  μžˆλŠ”μ§€ DADλ₯Ό ν†΅ν•œ 확인을 μœ„ν•΄ Destination μ£Όμ†Œλ‘œ μ΄μš©ν•˜λŠ” 것을 μ˜ˆμΈ‘ν•  수 μžˆλŠ”λ°, μ˜ˆμƒν•œλŒ€λ‘œ Solicited-Node Mutlicast AddressλŠ” IPv4 μ£Όμ†Œμ—μ„œ ARP의 λŒ€μ²΄λ‘œ μ΄μš©ν•˜κΈ° μœ„ν•΄ μ‘΄μž¬ν•œλ‹€. IPv6 μ£Όμ†Œμ—μ„œλŠ” ARPκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ‚¬μš©λ˜λ©°, μ΄λŠ” ν˜„μž¬μ˜ Node ν˜Ήμ€ Routerμ—κ²Œ μΈμ ‘ν•œ Node ν˜Ήμ€ Router의 Data Link Layer μ£Όμ†Œλ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€. IPv4 μ£Όμ†Œμ—μ„œμ˜ ARP와 λ§ˆμ°¬κ°€μ§€λ‘œ, IPv6 Packet을 Data Link Layer의 Frame으둜 전달을 ν•˜κΈ° μœ„ν•΄μ„  μΈμ ‘ν•œ Node의 Data Link Layer의 μ£Όμ†Œκ°€ ν•„μš”ν•˜λ‹€.

10) IPv6 기타 λ“±λ“±...

IPv4 μ£Όμ†Œμ˜ 경우 λ„€νŠΈμ›Œν¬ μ–΄λŒ‘ν„°μ— 뢙은 ν•˜λ‚˜μ˜ HostλŠ” ν•˜λ‚˜μ˜ IPv4 μ£Όμ†Œλ₯Ό κ°€μ‘Œμ—ˆμ§€λ§Œ, IPv6 μ£Όμ†Œμ˜ 경우 ν•˜λ‚˜μ˜ Interfaceμ—λ§Œ μ—¬λŸ¬ IPv6 μ£Όμ†Œλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.

Summary for Unicast on Host & Router

[1] IPv6 HostλŠ” λ‹€μŒκ³Ό 같은 Unicast μ£Όμ†Œλ“€μ„ ν• λ‹Ή 받을 수 μžˆλ‹€.
각 Interface 별 Link-Local Address
각 Interface 별 Site-Local Address 및 μ—¬λŸ¬ Global Unicast Address
Loopback Interface 별 Loopback Address
[2] IPv6 RouterλŠ” λ‹€μŒκ³Ό 같은 Unicast μ£Όμ†Œλ“€μ„ ν• λ‹Ή 받을 수 μžˆλ‹€.
각 Interface 별 Link-Local Address
각 Interface 별 Site-Local Address 및 μ—¬λŸ¬ Global Unicast Address
Subnet-Router Anycast Address
Loopback Interface 별 Loopback Address
즉, IPv6 μ£Όμ†Œλ₯Ό μ΄μš©ν•˜λŠ” Hostλ“€ 및 Router듀은 IPv4 μ£Όμ†Œμ™€ 달리 Packet을 받을 수 μžˆλŠ” μ£Όμ†Œκ°€ 적어도 2개 이상이 μ‘΄μž¬ν•œλ‹€. 이λ₯Ό Logically Multihomed라고 ν•œλ‹€. (Local-Link Traffic을 받을 수 μžˆλŠ” Link-Local Address, Site-Local Address ν˜Ήμ€ Global Address와 같이 Routableν•œ μ£Όμ†Œ) λ˜ν•œ 각 Hostλ“€ 및 Router듀은 μ΄λ ‡κ²Œ 2개의 μ£Όμ†Œλ‘œ Packet을 받을 수 μžˆμ„ 뿐 μ•„λ‹ˆλΌ Multicast Address에 λŒ€ν•΄μ„œλ„ Traffic을 받을 수 μžˆλ„λ‘ Listen ν•˜κ³  μžˆλ‹€.

Summary for Multicast on Host & Router

[1] IPv6 HostλŠ” λ‹€μŒκ³Ό 같은 Multicast μ£Όμ†Œλ“€μ„ ν• λ‹Ή 받을 수 μžˆλ‹€.
Interface-Local Scope의 λͺ¨λ“  Node듀에 λŒ€ν•œ Multicast Address (FF01::1)
Link-Local Scope의 λͺ¨λ“  Node듀에 λŒ€ν•œ Multicast Address (FF02::1)
각 Interfaceμ—μ„œμ˜ λ‹€λ₯Έ Unicast μ£Όμ†Œλ“€μ„ ν–₯ν•œ Solicited-Node Multicast Address
각 Interfaceκ°€ μ†ν•œ 그룹의 Multicast Address
[2] IPv6 RouterλŠ” λ‹€μŒκ³Ό 같은 Multicast μ£Όμ†Œλ“€μ„ ν• λ‹Ή 받을 수 μžˆλ‹€.
Interface-Local Scope의 λͺ¨λ“  Node듀에 λŒ€ν•œ Multicast Address (FF01::1)
Interface-Local Scope의 λͺ¨λ“  Router듀에 λŒ€ν•œ Multicast Address (FF01::2)
Link-Local Scope의 λͺ¨λ“  Node듀에 λŒ€ν•œ Multicast Address (FF02::1)
Link-Local Scope의 λͺ¨λ“  Router듀에 λŒ€ν•œ Multicast Address (FF02::2)
Site-Local Scope의 λͺ¨λ“  Router듀에 λŒ€ν•œ Multicast Address (FF05::2)
각 Interfaceμ—μ„œμ˜ λ‹€λ₯Έ Unicast μ£Όμ†Œλ“€μ„ ν–₯ν•œ Solicited-Node Multicast Address
각 Interfaceκ°€ μ†ν•œ 그룹의 Multicast Address

4. Public / Private IP Address

IPv4 μ£Όμ†Œ μ²΄κ³„λŠ” 크게 2가지, Public IP μ£Όμ†Œμ™€ Private IP μ£Όμ†Œλ‘œ λ‚˜λˆ„μ–΄μ Έμžˆλ‹€.
κ·Έλ ‡λ‹€λ©΄ IP μ£Όμ†Œλ₯Ό Publicκ³Ό Private둜 λ‚˜λˆˆ μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒ?
κ°€μž₯ 큰 μ΄μœ λŠ” λ°”λ‘œ ν• λ‹Ή κ°€λŠ₯ν•œ IPv4μ£Όμ†Œμ˜ κ³ κ°ˆμ΄λ‹€. IPv4 μ£Όμ†Œ μ²΄κ³„μ—μ„œ μ΄λ‘ μƒμœΌλ‘œ μ•½ 43μ–΅ 개의 단말을 식별할 수 μžˆλ‹€. ν•˜μ§€λ§Œ 점점 인터넷 μ‚¬μš©μžλ„ λŠ˜μ–΄λ‚˜κ³  톡신이 κ°€λŠ₯ν•œ 기계듀이 점점 μƒκ²¨λ‚˜λ©΄μ„œ 43μ–΅ 개의 μ£Όμ†Œκ°€ λΆ€μ‘±ν•œ μ‹œλŒ€κ°€ μ™”λ‹€. κ·Έλž˜μ„œ Public IP μ£Όμ†Œμ™€ Private IP μ£Όμ†Œλ‘œ λ‚˜λˆ„μ–΄ IP μ£Όμ†Œλ₯Ό μ ˆμ•½ν•˜λŠ” μ‹œμŠ€ν…œμ„ λ§Œλ“€μ—ˆλ‹€.

1) Public IP Address

인터넷 μ‚¬μš©μžμ˜ Local λ„€νŠΈμ›Œν¬λ₯Ό μ‹λ³„ν•˜κΈ° μœ„ν•΄ ISP(인터넷 μ„œλΉ„μŠ€ κ³΅κΈ‰μž)κ°€ μ œκ³΅ν•˜λŠ” IP μ£Όμ†Œμ΄λ‹€. Public IP μ£Όμ†ŒλŠ” 외뢀에 κ³΅κ°œλ˜μ–΄ μžˆλŠ” IP μ£Όμ†Œμ΄λ‹€.
Public IP μ£Όμ†ŒλŠ” μ „ μ„Έκ³„μ—μ„œ μœ μΌν•œ IP μ£Όμ†Œλ₯Ό κ°–λŠ”λ‹€.
Public IP μ£Όμ†Œκ°€ 외뢀에 κ³΅κ°œλ˜μ–΄ μžˆκΈ°μ— 인터넷에 μ—°κ²°λœ λ‹€λ₯Έ PCλ‘œλΆ€ν„°μ˜ 접근이 κ°€λŠ₯ν•˜λ‹€. λ”°λΌμ„œ Public IP μ£Όμ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λŠ” λ°©ν™”λ²½ λ“±μ˜ λ³΄μ•ˆ ν”„λ‘œκ·Έλž¨μ„ μ„€μΉ˜ν•  ν•„μš”κ°€ μžˆλ‹€.

2) Private IP Address

일반 κ°€μ •μ΄λ‚˜ νšŒμ‚¬ λ‚΄ 등에 ν• λ‹Ήλœ λ„€νŠΈμ›Œν¬μ˜ IP μ£Όμ†Œμ΄λ©°, Local IP, 가상 IP라고도 ν•œλ‹€. IPv4 μ£Όμ†Œ λΆ€μ‘±μœΌλ‘œ 인해 Subnettingλ˜μ—ˆκΈ° λ•Œλ¬Έμ— Router에 μ˜ν•΄ Local λ„€νŠΈμ›Œν¬μƒμ˜ PC λ‚˜ μž₯μΉ˜μ— ν• λ‹Ήλœλ‹€.
Private IP μ£Όμ†Œ λŒ€μ—­μ€ μ•„λž˜μ™€ κ°™λ‹€.
Class A :Β ~Β
Class B :Β ~Β
Class C :Β ~Β
κ°„λ‹¨ν•œ 예제둜 μ•Œμ•„λ³΄μž.
Public IP μ£Όμ†ŒλŠ” μ „ μ„Έκ³„μ—μ„œ μœ μΌν•œ IP μ£Όμ†Œ μ΄λ―€λ‘œ μ€‘λ³΅λ˜μ§€ μ•Šκ²Œ ν• λ‹Ήλœλ‹€.
Private IP μ£Όμ†ŒλŠ” νŠΉμ •ν•œ λ„€νŠΈμ›Œν¬ λ‚΄μ—μ„œ μœ μΌν•œ IP μ£Όμ†Œμ΄λ―€λ‘œ ν•΄λ‹Ή λ„€νŠΈμ›Œν¬ λ‚΄μ—μ„œ μ€‘λ³΅λ˜μ§€ μ•Šκ²Œ ν• λ‹Ήλœλ‹€. λ”°λΌμ„œ Private IP μ£Όμ†ŒλŠ” λ‹€λ₯Έ λ„€νŠΈμ›Œν¬ 상에선 같은 μ£Όμ†Œκ°€ μ‘΄μž¬ν•  수 μžˆλ‹€.
μ΄λ ‡κ²Œ Private, Public IP μ£Όμ†Œλ₯Ό ν™œμš©ν•΄μ„œ λ„€νŠΈμ›Œν¬λ₯Ό κ΅¬μ„±ν•˜μ˜€μ„ 경우, Public IP μ£Όμ†Œλ₯Ό 가지고 있으면 μ–΄λ””μ„œλ“  λ‚˜μ˜ μ£Όμ†Œλ‘œ μ°Ύμ•„μ˜¬ 수 μžˆμ§€λ§Œ Private IP μ£Όμ†ŒλŠ” ν•΄λ‹Ή IP μ£Όμ†Œκ°€ ν¬ν•¨λœ 사섀망 λ‚΄μ—μ„œλ§Œ 찾을 수 μžˆλ‹€.(μ™ΈλΆ€ λ„€νŠΈμ›Œν¬μ—μ„œλŠ” 찾을 수 μ—†λ‹€.)
μ—¬κΈ°μ„œ μ€‘μš”ν•œ 것이 사섀망 μ—­μ‹œ Public IP μ£Όμ†Œλ₯Ό 가진 Host와 톡신할 수 μžˆμ–΄μ•Ό ν•œλ‹€. μ‚¬μ„€λ§μ˜ IP μ£Όμ†Œλ₯Ό 가진 Host도 μ™ΈλΆ€ λ„€νŠΈμ›Œν¬μ— μ ‘κ·Όν•  수 μžˆμ–΄μ•Ό μΈν„°λ„·μ˜ μ˜λ―Έκ°€ μžˆλ‹€. λ”°λΌμ„œ Public IP μ£Όμ†Œμ™€ Private IP μ£Όμ†Œ κ°„ Host와 톡신할 수 μžˆλ„λ‘ λ§Œλ“ κ²Œ λ°”λ‘œ NAT이닀.

3) NAT(Network Address Translation)

NATλŠ” 주둜 Private IP μ£Όμ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” λ„€νŠΈμ›Œν¬ λ§μ—μ„œ Public IP μ£Όμ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” λ„€νŠΈμ›Œν¬ 망으둜의 톡신을 μœ„ν•΄ λ„€νŠΈμ›Œν¬ μ£Όμ†Œλ₯Ό λ³€ν™˜ν•˜λŠ” 것이닀. 즉, μ‚¬μ„€λ§μ—μ„œλŠ” Private IP μ£Όμ†Œλ₯Ό μ΄μš©ν•΄μ„œ 톡신을 ν•˜κ³ , μ™ΈλΆ€ λ„€νŠΈμ›Œν¬μ™€ 톡신할 λ•Œμ—λŠ” NATλ₯Ό κ±°μ³μ„œ Public IP μ£Όμ†Œλ‘œ μžλ™ λ³€ν™˜λœλ‹€.


외뢀에 곡개된 Public IP μ£Όμ†Œμ™€ λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” Private IP μ£Όμ†Œκ°€ λ‹€λ₯Έ 경우 λ„€νŠΈμ›Œν¬ 전솑 μˆ˜ν–‰ μ‹œ 두 IP μ£Όμ†Œλ₯Ό λ§΅ν•‘ν•˜μ—¬ 톡신을 μ›ν™œν•˜κ²Œ ν•΄μ£ΌλŠ” κΈ°μˆ μ΄λ‹€.
보톡 Router ν˜Ήμ€ 방화벽에 μ„€μΉ˜λ˜μ–΄ λ™μž‘ν•œλ‹€.

NAT의 μž₯점

IP μ£Όμ†Œ λΆ€μ‘± 문제 ν•΄κ²°ν•  수 μžˆλ‹€.
λ³΄μ•ˆμ„±μ΄ μ’‹λ‹€. (μ™ΈλΆ€μ—μ„œ μ‚¬μ„€λ§μ˜ 정보λ₯Ό μ‰½κ²Œ μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.)

NAT의 μ’…λ₯˜

[1] Static NAT
Public IP μ£Όμ†Œμ™€ Private IP μ£Όμ†Œλ₯Ό 1 : 1 둜 Mappingν•˜μ—¬ λ³€ν™˜ν•œλ‹€.
κ°€μž₯ μ‰¬μš΄ λ³€ν™˜ λ°©μ‹μ΄μ§€λ§Œ μ΄λ ‡κ²Œ ꡬ성할 경우 Public IP μ£Όμ†Œμ™€ Private IP μ£Όμ†Œμ˜ κ°œμˆ˜κ°€ κ°™μ•„μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— Public IP μ£Όμ†Œλ₯Ό 효율적으둜 μ“°κ³ μž ν•˜λŠ” λͺ©μ μ— λ§žμ§€ μ•ŠλŠ”λ‹€.
일반적으둜 μ‚¬μ„€λ§μ˜ 역할이 λ§Žμ•„μ„œ Port Forwarding μž‘μ—…μ΄ 많이 ν•„μš”ν•œ 경우, μ•„μ˜ˆ ν•΄λ‹Ή μ‚¬μ„€λ§μ˜ IP μ£Όμ†Œλ₯Ό Public IP μ£Όμ†Œλ‘œ Mappingν•˜λŠ” λ°©μ‹μœΌλ‘œ μ‚¬μš©ν•œλ‹€.
[2] Dynamic NAT
Public IP μ£Όμ†Œμ™€ Private IP μ£Όμ†Œλ₯Ό N : N 으둜 Mappingν•˜μ—¬ λ³€ν™˜ν•œλ‹€.
ν˜„μž¬ μ‚¬μš©μ€‘μ΄μ§€ μ•Šμ€ Public IP μ£Όμ†Œμ— Private IP μ£Όμ†Œλ₯Ό λ™μ μœΌλ‘œ Mappingν•œλ‹€.
보톡 Public IP μ£Όμ†Œκ°€ Private IP μ£Όμ†Œλ³΄λ‹€ 적을 κ²½μš°μ— μ‚¬μš©λœλ‹€.
[3] NAPT
Public IP μ£Όμ†Œμ™€ Private IP μ£Όμ†Œλ₯Ό 1 : N 으둜 λ§΅ν•‘ν•˜μ—¬ λ³€ν™˜ν•œλ‹€. 사섀망 λ‚΄ 각 Hostλ§ˆλ‹€ Portλ₯ΌΒ μ§€μ •ν•΄μ£Όμ–΄, Private IP + Portλ₯Ό ν•˜λ‚˜μ˜ Public IP + Port둜 Mappingν•œλ‹€.

NAT 및 NAPT 의 톡신 원리

μ‚¬μ„€λ§μ—μ„œ μ™ΈλΆ€ λ„€νŠΈμ›Œν¬λ‘œ 톡신을 μ‹œλ„ν•˜λ©΄ ν•΄λ‹Ή Packet은 항상 Gatewayλ₯Ό 거치게 λ˜μ–΄μžˆλ‹€. μ΄λŸ¬ν•œ 톡신 과정은 μ•„λž˜μ™€ 같이 크게 4가지 λ‹¨κ³„λ‘œ μ§„ν–‰λœλ‹€.
Node 1 β†’ Gateway
Gateway β†’ Node 2
Node 2 β†’ Gateway
Gateway β†’ Node 1
μ•„λž˜λŠ” 이 과정을 그림으둜 κ·Έλ €λ³Έ 것이닀. μ—¬κΈ°μ„œ Source IP μ£Όμ†ŒλŠ” Packet을 λ³΄λ‚΄λŠ” μ£Όμ†Œ, Destination IP μ£Όμ†ŒλŠ” Packet이 λ„μ°©ν•˜λŠ” μ£Όμ†Œμ΄λ‹€.
Packet을 Node 1μ—μ„œ Node 2둜 λ³΄λ‚΄λŠ” κ³Όμ •μ—λŠ” Gatewayλ₯Ό 항상 거치게 λ˜λ―€λ‘œ μ„œ 1번 과정을 μ‚΄νŽ΄λ³΄λ©΄, Source IP μ£Όμ†ŒλŠ” Private IP μ£Όμ†ŒμΈ둜 μ±„μ›Œμ Έμžˆκ³ , Destination IP μ£Όμ†ŒλŠ” Node 2의 μ£Όμ†ŒμΈ둜 μ±„μ›Œμ Έ μžˆλ‹€. 이 λ•Œ GatewayλŠ” Private IP μ£Όμ†Œλ‘œ 기둝된 Source IP μ£Όμ†Œλ₯Ό μžμ‹ μ˜ Public IP μ£Όμ†Œλ‘œ λ°”κΏ” λ„£κ²Œ λœλ‹€. μ΄λŠ” Node 2κ°€ Packet을 νšŒμ‹ ν•  λ•Œ Private IP μ£Όμ†Œλ₯Ό μ΄μš©ν•˜κ²Œ 되면 Packet을 μ–΄λ””λ‘œ 보내야할지 λͺ¨λ₯΄κΈ° λ•Œλ¬Έμ— 2번 κ³Όμ •μ—μ„œλŠ” Gatewayκ°€ μžμ‹ μ˜ Public IP μ£Όμ†Œλ₯Ό Packet에 λ‹΄κ²Œλ˜λŠ” 것이닀.
Packet을 Node 2μ—μ„œ Node 1으둜 νšŒμ‹ ν•˜λŠ” 과정에도 μ†‘μ‹ μ˜ κ³Όμ •μ²˜λŸΌ Gatewayλ₯Ό κ²½μœ ν•˜κ²Œ λœλ‹€. 솑신 κ³Όμ •μ—μ„œ Gateway의 Public IP μ£Όμ†Œλ₯Ό λ°›μ•˜μ—ˆκΈ° λ•Œλ¬Έμ— 3번 κ³Όμ •μ—μ„œμ˜ Destination IP μ£Όμ†ŒλŠ” 이λ₯Ό κ·ΈλŒ€λ‘œ μ΄μš©ν•˜κ²Œ λœλ‹€. κ·Έλ ‡λ‹€λ©΄ 4번 κ³Όμ •μ—μ„œ GatewayλŠ” νšŒμ‹ λœ Packet이 Node 1으둜 ν–₯ν•˜λŠ” κ²ƒμž„μ€ μ–΄λ–»κ²Œ μ•Œκ³ , 이λ₯Ό 또 μ–΄λ–»κ²Œ Node 1으둜 λ³΄λ‚΄κ²Œ λ˜λŠ” κ²ƒμΌκΉŒ?
μ΄λŠ” 2번 κ³Όμ •μ—μ„œ Gatewayκ°€ Source IP μ£Όμ†Œλ₯Ό μžμ‹ μ˜ Public IP μ£Όμ†Œλ₯Ό λ°”κΎΈλŠ” 과정에 닡이 μ‘΄μž¬ν•œλ‹€. 이 κ³Όμ •μ—μ„œ λ‹¨μˆœνžˆ Packet의 IP μ£Όμ†Œλ§Œ κ΅μ²΄ν•˜λŠ” 것이 μ•„λ‹ˆλΌ λ‚΄λΆ€μ μœΌλ‘œ NAT Table에 이 정보듀을 κΈ°λ‘ν•˜κ²Œ λœλ‹€. λ”°λΌμ„œ νšŒμ‹ λœ Packet을 λ°›κ²Œ 되면, Table을 톡해 μ μ ˆν•œ Private IP μ£Όμ†Œλ‘œ λ°”κΎΈμ–΄ μ‚¬μ„€λ§μ˜ Node 1으둜 Packet을 λ³΄λ‚΄κ²Œ λœλ‹€.
이런 λ°©μ‹μ˜ 톡신을 NAT 톡신이라고 ν•˜λŠ”λ°, μ΄λŠ” 큰 단점이 μžˆλ‹€. μ™ΈλΆ€λ‘œ Packet을 보낸 Node에 λŒ€ν•΄μ„œ 기둝을 ν•  λ•Œ ν•˜λ‚˜μ˜ IP μ£Όμ†Œλ§Œ Gateway의 Public IP μ£Όμ†Œμ™€ Binding λ˜λ―€λ‘œ 사섀망 λ‚΄μ˜ μ—¬λŸ¬ Nodeκ°€ μ™ΈλΆ€ λ„€νŠΈμ›Œν¬λ‘œ Packet을 λ³΄λƒˆμ„ λ•Œ λ™μΌν•œ Gatewayλ₯Ό μ‚¬μš©ν•˜λ € ν•˜λ©΄ κ³€λž€ν•œ 상황이 λ°œμƒν•˜κ²Œ λœλ‹€. λ”°λΌμ„œ μ΄λŸ¬ν•œ 상황에 μœ μ—°ν•˜κ²Œ λŒ€μ²˜ν•˜κΈ° μœ„ν•΄ NAPT 톡신을 주둜 μ΄μš©ν•˜κ²Œ λœλ‹€.
NAPT 톡신은 μ‚¬μ„€λ§μ—μ„œ 이용 쀑인 Node의 Private IP μ£Όμ†Œλ₯Ό Gateway의 Public IP μ£Όμ†Œ + μž„μ˜μ˜ Port둜 Bindingν•˜μ—¬ Table에 κΈ°λ‘ν•œλ‹€. 이λ₯Ό 톡해 사섀망 λ‚΄λΆ€μ˜ μ—¬λŸ¬ Nodeκ°€ λ™μΌν•œ Gatewayλ₯Ό μ΄μš©ν•˜λ”λΌλ„ Packet νšŒμ‹  μ‹œμ— μ •μƒμ μœΌλ‘œ Nodeλ“€μ—κ²Œ λΆ„λ°°ν•  수 있게 λœλ‹€. μ΄μš©ν•  수 μžˆλŠ” Portκ°€ 65535κ°œμ΄λ―€λ‘œ λ™μ‹œμ— 65535개 만큼의 Session을 μœ μ§€ν•  수 있게 λœλ‹€. ν˜„μž¬λŠ” NAPT 톡신을 많이 μ΄μš©ν•œλ‹€.

5. Network Layer Protocol

1) IP (Internet Protocol) 섀계 λͺ©μ 

ν˜„μž¬ μš°λ¦¬κ°€ μ‚¬μš©ν•˜λŠ” λ„€νŠΈμ›Œν¬μ²˜λŸΌ Packet Switchκ°€ κ°€λŠ₯ν•œ 컴퓨터 κ°„μ˜ λ„€νŠΈμ›Œν¬ 톡신이 κ°€λŠ₯ν•˜λ„λ‘ Internet Protocol이 μ„€κ³„λ˜μ—ˆλ‹€. Internet Protocol은 Sourceλ‘œλΆ€ν„° DestinationκΉŒμ§€ Datagram이라고 ν•˜λŠ” 데이터 블둝듀을 전솑할 수 있게 ν•΄μ£Όκ²Œ ν•΄μ€€λ‹€. (μ—¬κΈ°μ„œ λ§ν•˜λŠ” Source와 Destination은 νŠΉμ • 길이의 IP μ£Όμ†Œλ‘œ λͺ…μ‹œλœ Hostλ₯Ό μ˜λ―Έν•œλ‹€.) 이 λ•Œ IPλŠ” Network Layerμ—μ„œ μ΅œμ†Œν•œμ˜ κΈ°λŠ₯만 μˆ˜ν–‰ν•˜λ©°, Small Packet만 μ§€μ›ν•˜λŠ” λ„€νŠΈμ›Œν¬μ—μ„œλ„ 톡신이 κ°€λŠ₯ν•˜λ„λ‘ κΈ΄ Datagram에 λŒ€ν•΄μ„œ Fragment 및 Reassembleλ₯Ό μ§€μ›ν•œλ‹€.

2) Baisc of IP Operation

IPλŠ” 기본적으둜 2가지 Function을 μ‹€ν–‰ν•œλ‹€. ν•˜λ‚˜λŠ” Addressing이고, λ‚˜λ¨Έμ§€ ν•˜λ‚˜λŠ” Fragmentation이닀.
Internet Module듀은 IP Header에 λͺ…μ‹œλ˜μ–΄ μžˆλŠ” μ£Όμ†Œλ₯Ό μ΄μš©ν•˜μ—¬ Destination으둜 Datagram을 μ „μ†‘ν•˜λŠ”λ°, 이 λ•Œ Destination으둜 데이터λ₯Ό 보내기 μœ„ν•΄ 경둜λ₯Ό μ°ΎλŠ” 것을 Routing이라고 ν•œλ‹€.
λ˜ν•œ Internet Module듀은 IP Header에 μžˆλŠ” λͺ‡ ν•„λ“œλ“€μ„ μ΄μš©ν•˜μ—¬ Datagram에 λŒ€ν•œ Fragment와 Reassemble을 μˆ˜ν–‰ν•˜κ²Œ λœλ‹€.
이 λ•Œ μ€‘μš”ν•œ 것이 IPλŠ” μ„œλ‘œ λ‹€λ₯Έ Datagram에 λŒ€ν•΄μ„œ 관련성이 μ—†λŠ” 각각 독립적인 개체둜 μΈμ‹ν•œλ‹€λŠ” 것이닀. 이 말은 μ „μ†‘ν•˜λŠ” Datagram을 λ©”λͺ¨λ¦¬μ— 쓰지 μ•Šκ² λ‹€λΌλŠ” 말둜 Stateλ₯Ό 두지 μ•Šμ€ μ±„λ‘œ κΈ°μ–΅ν•˜μ§€ μ•Šκ² λ‹€μ™€ λ™μΌν•œ 의미이며, Network Layerμ—μ„œ μ΅œμ†Œν•œμ˜ κΈ°λŠ₯λ§Œμ„ μˆ˜ν–‰ν•˜κ² λ‹€λŠ” μ˜λ―Έμ΄λ‹€. 이런 State에 λŒ€ν•œ μ •λ³΄λŠ” End-to-End 및 Fate Sharing에 따라 End λ‹¨λ§μ—λ§Œ 두고, μ™Έμ˜ λ‹¨λ§μ—μ„œλŠ” Datagram에 λŒ€ν•΄μ„œ λ³„λ„μ˜ μ €μž₯을 ν•˜μ§€ μ•Šκ³  λΉ λ₯΄κ²Œλ§Œ μ²˜λ¦¬ν•œλ‹€λŠ” κ²ƒμœΌλ‘œ 보면 λœλ‹€. (μ‹€μ œλ‘œ Endμ™Έμ˜ λ‹¨λ§μ—μ„œλŠ” 톡계에 λŒ€ν•œ 정보 μ •λ„λŠ” μ €μž₯을 ν•œλ‹€.)
μœ„μ™€ 같은 2개의 Function을 μˆ˜ν–‰ν•˜λŠ”λ° μžˆμ–΄μ„œ IPλŠ” μ•„λž˜μ˜ 4κ°€μ§€μ˜ 핡심 λ©”μ»€λ‹ˆμ¦˜μ„ μ‚¬μš©ν•œλ‹€.
Type of Service
Time to Live
Header Checksum
(μœ„μ˜ 4κ°€μ§€λ³΄λ‹€λŠ” IPλŠ” Addressingκ³Ό Fragmentationμ΄λΌλŠ” Function을 μˆ˜ν–‰ν•œλ‹€λŠ” 것을 λͺ…μ‹¬ν•˜μž.)

3) IPv4 Header Format

Datagram의 ꡬ쑰

IPv4 μ£Όμ†Œ μ²΄κ³„μ—μ„œ Datagram은 λ‹€μŒκ³Ό 같은 ꡬ쑰이닀.

Header의 ꡬ쑰

Datagram λ‚΄μ˜ Header의 ꡬ쑰가 κ°€μž₯ μ€‘μš”ν•œλ° κ·Έ κ΅¬μ‘°λŠ” μ•„λž˜μ™€ κ°™λ‹€.
Version은 IPv4인지 IPv6인지 λ‚˜νƒ€λ‚Έλ‹€.
HLEN은 Header Length라고 ν•΄μ„œ Header의 길이λ₯Ό 32 λΉ„νŠΈ λ‹¨μœ„λ‘œ μž˜λΌμ„œ λͺ‡ 개의 Chunkκ°€ λ‚˜μ˜€λŠ”μ§€ λ‚˜νƒ€λ‚΄λŠ” 것이닀. (μœ„ κ·Έλ¦Όμ—μ„œ Header의 κ°€λ‘œ 폭은 32 λΉ„νŠΈμ΄λ―€λ‘œ Option의 크기가 0이라고 ν–ˆμ„ λ•Œ, 기본적으둜 Header에 λ“€μ–΄κ°€μ•Ό ν•˜λŠ” μ„Έλ‘œ 폭은 5κ°œμ΄λ‹€. 즉, 이 λ•ŒλŠ” HLEN이 5κ°€ λ˜μ–΄ HLEN ν‘œμ‹œλ₯Ό μœ„ν•œ 4 λΉ„νŠΈ 쀑 3 λΉ„νŠΈλ₯Ό μ΄μš©ν•΄ 101이 ν‘œκΈ°λœλ‹€. λ˜ν•œ 기본적으둜 포함해야 ν•˜λŠ” μ„Έλ‘œ 폭이 5개라고 ν–ˆκ³  κ°€λ‘œ 폭의 κΈΈμ΄λŠ” 4 λ°”μ΄νŠΈ (32 λΉ„νŠΈ)μ΄λ―€λ‘œ Header의 κΈΈμ΄λŠ” μ΅œμ†Œ 20 λ°”μ΄νŠΈκ°€ λœλ‹€. 그리고 Option의 ν¬κΈ°λŠ” μ΅œλŒ€ 40 λ°”μ΄νŠΈκΉŒμ§€ 올 수 있기 λ•Œλ¬Έμ— Header의 μ΅œμ†Œ 크기 20 λ°”μ΄νŠΈμ— Option의 μ΅œλŒ€ 크기 40 λ°”μ΄νŠΈλ₯Ό ν•©ν•˜μ—¬ 60 λ°”μ΄νŠΈκΉŒμ§€ λ‚˜μ˜¬ 수 μžˆλŠ” 것이며, 이 60 λ°”μ΄νŠΈλ₯Ό HLEN에 ν‘œμ‹œν•˜κΈ° μœ„ν•΄μ„  4 λ°”μ΄νŠΈ Chunk둜 λŠμ—ˆμ„ λ•Œ 4 λΉ„νŠΈ (24=162^4 = 16개) λ‚΄λ‘œ ν‘œν˜„ν•  수 μžˆμœΌλ―€λ‘œ HLEN은 4 λΉ„νŠΈλ‘œ ν‘œκΈ°ν•˜λ„λ‘ 해놓은 것이닀.)
Total LengthλŠ” Headerλ₯Ό ν¬ν•¨ν•œ Datagram의 총 길이λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.
Protocol ν•„λ“œλŠ” Datagram의 데이터에 μ‚¬μš©λ˜λŠ” μƒμœ„ κ³„μΈ΅μ˜ Protocol을 λͺ…μ‹œν•˜λŠ” ν•„λ“œμ΄λ‹€. λ‹€μ–‘ν•œ Protocol에 λŒ€ν•œ 값듀은 νŠΉμ • κ°’μœΌλ‘œ 미리 μ •ν•΄μ Έμžˆλ‹€. λ”°λΌμ„œ 이 값에 λ”°λΌμ„œ μƒμœ„ κ³„μΈ΅μ—μ„œ μ–΄λ–€ Protocol이 Packet에 담겨 μžˆλŠ”μ§€ μ•Œ 수 μžˆλ‹€.
Time to Live의 경우 Datagram의 수λͺ…에 λŒ€ν•œ μƒν•œμ„ λ‚˜νƒ€λ‚Έλ‹€. (TTL ν•œκ³„μΉ˜λ₯Ό λ„˜μ–΄κ°€λ©΄ Packet은 슀슀둜 μ†Œλ©Έν•œλ‹€.) TTL의 경우 Router에 도달할 λ•Œλ§ˆλ‹€ 1μ”© κ°μ†Œν•˜λ©° IP Packet을 λ°›κ²Œ λœλ‹€. (만일 TTL이 0인 μƒνƒœλ‘œ Router에 λ„λ‹¬ν•˜λ©΄, ν•΄λ‹Ή Packet을 λ²„λ¦¬κ²Œ λœλ‹€. 이말은 RouterλŠ” TTL이 0인 Packet은 받지 μ•Šκ² λ‹€λŠ” 곡톡적인 약속이 있기 λ•Œλ¬Έμ— κ°€λŠ₯ν•œ 것이닀. λ”°λΌμ„œ μžμ‹ μ΄ μ†ν•œ Linkμ—μ„œ λ²—μ–΄λ‚˜μ§€ μ•Šμ€ μ±„λ‘œ Packet을 보내고 μ‹Άλ‹€λ©΄, TTL을 1둜 μ£Όλ©΄ Router 도착 μ‹œ 0이 λ˜μ–΄ Router λ°”κΉ₯을 λ²—μ–΄λ‚˜μ§€ μ•ŠλŠ” μ‹μœΌλ‘œ 톡신을 보낼 수 μžˆλ‹€.) TTL의 쑴재 λͺ©μ μ€ λ„ˆλ¬΄ μ˜€λž˜λ™μ•ˆ λ„€νŠΈμ›Œν¬μ—μ„œ λ– λˆ Packet에 λŒ€ν•΄μ„œ Routerκ°€ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ λ§Œλ“œλŠ” 것이닀. Packet은 ꡉμž₯히 λ‹€μ–‘ν•œ 이유둜 정해진 λͺ©μ μ§€μ— μ œμ‹œκ°„μ— λ„λ‹¬ν•˜μ§€ λͺ» ν•  수 μžˆλŠ”λ°, 특히 μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ μ •λ³΄λ‘œ Routing Table을 κ΅¬μ„±ν•˜κ²Œ 된 경우 Packet은 μ˜μ›νžˆ Cycle을 λŒλ©΄μ„œ λ„€νŠΈμ›Œν¬ μžμ›μ„ μ†Œλͺ¨ν•˜κ³  μžˆμ„ 수 μžˆλ‹€. 이런 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ TTL을 μ‚¬μš©ν•˜κ²Œ λ˜μ—ˆλ‹€.
Identification 및 Flag, Fragmentation Offset은 Fragmentationμ—μ„œ μ΄μš©λœλ‹€.
Option ν•„λ“œλŠ” μ΄λ¦„μ—μ„œ μ•”μ‹œν•˜λ“― Datagramμ—μ„œ ν•„μˆ˜ 사항은 μ•„λ‹ˆλ‹€. 이 ν•„λ“œλŠ” λ„€νŠΈμ›Œν¬μ— λŒ€ν•œ Testing, Debugging에 μ΄μš©λœλ‹€. NOP ν˜Ήμ€ END-OF-LISTλΌλŠ” Option을 μ œμ™Έν•˜κ³ λŠ” Datagramμ—μ„œ μˆ˜μ‹ ν•œ λͺ¨λ“  Option듀은 λ°˜λ“œμ‹œ Transport Layer둜 μ „λ‹¬λ˜μ–΄μ•Ό ν•œλ‹€. 특히, Source Route에 λŒ€ν•œ Option이 μ „μ†‘λ˜μ–΄μ•Ό ν•œλ‹€. Source Route의 νƒ€μž…μ—λŠ” Strict Source Routing (λ°˜λ“œμ‹œ 정해진 경둜둜만 κ°€μ•Όν•˜λŠ”), Loose Source Routing (정해진 κ²½λ‘œμ—μ„œ 쑰금 달라져도 λ˜λŠ”)κ°€ μ‘΄μž¬ν•œλ‹€. μ „μžμ˜ 경우 솑신 μΈ‘μ—μ„œ Datagram이 κ°€μ•Όν•˜λŠ” μ •ν™•ν•œ 경둜λ₯Ό λͺ…μ‹œν•œλ‹€. 만일 Source Route에 λͺ…μ‹œλœ Routerκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄, ICMPκ°€ source router failedλΌλŠ” Errorλ₯Ό λ°˜ν™˜ν•œλ‹€. ν›„μžμ˜ κ²½μš°λŠ” 솑신 μΈ‘μ—μ„œ Datagram이 μ§€λ‚˜κ°ˆ 수 μžˆλŠ” κ²½λ‘œλ“€μ˜ 리슀트λ₯Ό λͺ…μ‹œν•œλ‹€. 이 λ•Œ κΌ­ 이 λ¦¬μŠ€νŠΈμ— μžˆλŠ” μ£Όμ†Œμ˜ Routerκ°€ μ•„λ‹ˆλ”λΌλ„ Errorλ₯Ό 내지 μ•Šκ³  κ²½μœ ν•΄κ°ˆ 수 μžˆλ‹€.
κ°„λ‹¨νžˆ 이 μ§ˆλ¬Έμ— λŒ€ν•œ 닡을 μƒκ°ν•΄λ³΄μž. IP Packetμ—μ„œ HLEN이 8둜 μ£Όμ–΄μ‘Œκ³  (4 λΉ„νŠΈκ°€ 1000으둜 λ‚˜νƒ€λ‚¨) 이 λ•Œ Packet λ‚΄μ˜ Option의 ν¬κΈ°λŠ” λͺ‡ λ°”μ΄νŠΈμΈκ°€?
μ •λ‹΅

4) IP Function : Addressing

Node에 λŒ€ν•œ κ΅¬λ³„μ˜ 3μš”μ†ŒλŠ” Names, Addresss, Routes이닀.
Name은 μš°λ¦¬κ°€ 찾고자 ν•˜λŠ” 식별 λŒ€μƒμ΄κ³ , AddressλŠ” 식별 λŒ€μƒμ˜ μœ„μΉ˜λ₯Ό λ§ν•˜λ©°, RouteλŠ” μ–΄λ–»κ²Œ κ·Έ μœ„μΉ˜κΉŒμ§€ 도달할 수 μžˆλŠ”μ§€ 이닀.
IPλŠ” 3가지λ₯Ό λ‹€ λ§Œμ‘±ν•  수 μžˆλ„λ‘ Addressing을 μˆ˜ν–‰ν•΄μ€€λ‹€.

5) IP Function : Fragmentation

Fragmentation은 Datagram에 λŒ€ν•΄μ„œ Datagram이 μƒμ„±λœ κ³³μ—μ„œ ν—ˆμš©ν•œ Packet 크기보닀 Datagram이 ν–₯ν•΄ κ°€λŠ” Destinationμ—μ„œ ν—ˆμš©ν•œ Packet의 크기가 더 μž‘μ€ 경우 μˆ˜ν–‰ν•˜κ²Œ λœλ‹€. Fragmentation은 ν•„μˆ˜ 사항은 아닐 수 있기 λ•Œλ¬Έμ—, Fragmentation을 μˆ˜ν–‰ν•˜μ§€ 말라고 Packet에 λͺ…μ‹œν•  수 μžˆλ‹€.


Fragmentation의 λ‹¨μœ„λŠ” MTU라고 λ³Ό 수 μžˆλ‹€. MTUλž€ Maximum Transmit Unit의 μ•½μ–΄λ‘œ, λ„€νŠΈμ›Œν¬ Interfaceμ—μ„œ 뢄할을 ν•˜μ§€ μ•Šμ•„λ„ λ˜λŠ” Datagram의 μ΅œλŒ€ 크기λ₯Ό μ˜λ―Έν•œλ‹€. (μ•„λž˜ 그림을 μ°Έκ³ )
1번 Index에 ν•΄λ‹Ήν•˜λŠ” MTUκ°€ ꡉμž₯히 큰 것을 λ³Ό 수 μžˆλŠ”λ°, 이것은 Loopbackμ΄λΌμ„œ (μžμ‹ μ„ ν–₯ν•œ 것이라) κ·Έλ ‡λ‹€.
만일 Datagram을 Data Link Layer둜 λ„˜κΈ°λŠ” κ³Όμ •μ—μ„œ Frameν™”λ₯Ό ν•΄μ•Όν•  λ•Œ, MTU λ‹¨μœ„λ‘œ λŠμ–΄μ„œ Frameν™”λ₯Ό μ§„ν–‰ν•œλ‹€. (μ•„λž˜ κ·Έλ¦Ό μ°Έκ³ )

Fragmentation을 μ΄μš©ν•˜λŠ” Header ꡬ쑰

IPv4 Header Formatμ—μ„œ 밝힌 κ²ƒμ²˜λŸΌ Headerμ—λŠ” Fragmentation에 λŒ€ν•œ 정보가 λ‹΄κ²¨μžˆλ‹€. Identification, Flag, Fragmentation Offset ν•„λ“œλ“€μ΄ 이에 ν•΄λ‹Ήν•œλ‹€.
Identification은 μ„œλ‘œ λ‹€λ₯Έ Datagram이 μ„žμ΄μ§€ μ•Šλ„λ‘ 솑신 μΈ‘μ—μ„œ μž‘μ„±ν•˜μ—¬ 정체성을 보μž₯ν•΄μ€€λ‹€. 이λ₯Ό 톡해 μˆ˜μ‹  μΈ‘μ—μ„œλŠ” Datagram이 μ„žμ΄μ§€ μ•Šλ„λ‘ νŽΈν•˜κ²Œ Assembling이 κ°€λŠ₯ν•˜λ‹€.
Flag의 경우 3 λΉ„νŠΈλ₯Ό μ΄μš©ν•˜λŠ”λ°, 첫 번째 λΉ„νŠΈλŠ” ν™œμš©ν•˜μ§€ μ•ŠμœΌλ©°, 두 번째 λΉ„νŠΈλŠ” Do Not Fragment둜 Fragmentation을 μˆ˜ν–‰ν•˜μ§€ μ•Šμ„ λ•Œ 1둜 ν‘œκΈ°ν•œλ‹€. λ§ˆμ§€λ§‰ λΉ„νŠΈλŠ” More λΉ„νŠΈλ‘œ 후에 μΆ”κ°€μ μœΌλ‘œ λ°›μ•„μ•Όν•˜λŠ” Fragmentκ°€ μžˆλ‹€λ©΄ 1둜 ν‘œκΈ° 되고, μžμ‹ μ„ λ§ˆμ§€λ§‰μœΌλ‘œ 더 받을 Fragmentκ°€ μ—†λ‹€λ©΄ 0으둜 ν‘œκΈ°ν•œλ‹€.
Fragmentation Offset은 ν˜„μž¬ Fragmentκ°€ Datagram의 μ–΄λŠ 뢀뢄에 μ†ν•˜λŠ”μ§€λ₯Ό μ˜λ―Έν•œλ‹€. Fragmentation Offsetκ³Ό Total Lengthλ₯Ό ν†΅ν•΄μ„œ μ›λž˜μ˜ Datagramμ—μ„œ μ–΄λŠ 뢀뢄에 μ†ν•˜λŠ”μ§€ 확인할 수 있게 λœλ‹€. 이 λ•Œ Datagram의 ν¬κΈ°λŠ” Headerλ₯Ό ν¬ν•¨ν•˜μ—¬ 2162^{16} λ°”μ΄νŠΈλ‘œ 6553565535 λ°”μ΄νŠΈλ§ŒνΌ κ°€μ§ˆ 수 μžˆλ‹€κ³  ν–ˆμ—ˆλŠ”λ° μ΄λŠ” 곧 216βˆ—232^{16} * 2^3 λΉ„νŠΈλ₯Ό ν‘œν˜„ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” 것이닀. Fragmentation Offset은 13 λΉ„νŠΈλ§Œ μ£Όμ–΄μ Έ 있기 λ•Œλ¬Έμ— 2132^{13} λΉ„νŠΈλ§ŒνΌμ„ ν‘œν˜„ν•  수 있기 λ•Œλ¬Έμ— μ € λ§Žμ€ 크기λ₯Ό ν‘œν˜„ν•  수 μ—†λŠ” μƒνƒœμΈ 것을 μ•Œ 수 μžˆλ‹€. 기본적으둜 Fragmentation Offset은 λ°”μ΄νŠΈ λ‹¨μœ„μ˜ ν‘œν˜„μ„ ν•˜κΈ° λ•Œλ¬Έμ— 216βˆ—232^{16} * 2^3μ—μ„œμ˜ 232^3 뢀뢄은 ν•΄κ²°ν•  수 μžˆλ‹€. 이제 남은 것은 13 λΉ„νŠΈλ₯Ό ν†΅ν•΄μ„œ 2162^{16}을 μ–΄λ–»κ²Œ ν‘œν˜„ν•  것이냐인데, Fragmentation Offset은 기본적으둜 8개의 Octet을 ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ λ³Έλ‹€. λ”°λΌμ„œ 2162^{16}을 2132^{13}κΉŒμ§€ 쀄일 수 있고, μ΄λŠ” 13 λΉ„νŠΈλ‘œ ν‘œν˜„μ΄ κ°€λŠ₯ν•˜κ²Œ λœλ‹€. μ΄ν•΄ν•˜λ©΄ κ°„λ‹¨ν•˜μ§€λ§Œ, μ‘°κΈˆμ€ 받아듀이기 μ–΄λ €μšΈ 수 있기 λ•Œλ¬Έμ— μ•„λž˜ μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄μž.
쒌츑과 같이 총 4000 λ°”μ΄νŠΈ 길이의 Datagram이 μžˆλ‹€κ³  ν•΄λ³΄μž. 이 λ•Œ Total LengthλŠ” Datagram 크기 4000에 Header 크기 20을 더해 4020으둜 κΈ°λ‘λœλ‹€. ν˜„μž¬λŠ” Fragmentation이 λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— Flag ν•„λ“œμ˜ More λΉ„νŠΈλŠ” 0이고, Fragmentation Offset 도 000인것을 확인할 수 μžˆλ‹€. μ—¬κΈ°μ„œ MTUκ°€ 1400 λ°”μ΄νŠΈλΌκ³  ν•˜μ—¬ 원본 Datagram 4000 λ°”μ΄νŠΈκ°€ 각각 1400, 1400, 1200으둜 μͺΌκ°œμ‘Œλ‹€κ³  κ°€μ •ν•΄λ³΄μž.
첫 번째 Fragment의 Total LengthλŠ” 1400 λ°”μ΄νŠΈ + Header 크기 20 λ°”μ΄νŠΈλ‘œ 1420이되고, 뒀에 아직 2개의 Fragmentκ°€ λ‚¨μ•˜κΈ° λ•Œλ¬Έμ— Flag ν•„λ“œμ˜ More λΉ„νŠΈκ°€ 1이 λœλ‹€. λ˜ν•œ 첫 Fragmentμ΄λ―€λ‘œ Fragmentation Offset도 0인 것을 확인할 수 μžˆλ‹€.
두 번째 Fragment의 경우 첫 번째 Fragment처럼 Flag의 More λΉ„νŠΈκ°€ 1, Total Lengthκ°€ 1420인 것을 μ•Œ 수 μžˆλ‹€. 이 λ•Œ Fragmentation Offset은 크기 λ°”μ΄νŠΈμ— λŒ€ν•΄μ„œ 8개의 Octet으둜 ν‘œν˜„ν•œλ‹€κ³  ν–ˆκΈ° λ•Œλ¬Έμ— 첫 번째 Fragment의 크기 1400 λ°”μ΄νŠΈμ— 8 λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ ν‘œν˜„ν•œλ‹€κ³  ν–ˆμœΌλ―€λ‘œ 8둜 λ‚˜λˆ„μ–΄ 175둜 ν‘œκΈ°ν•˜κ²Œ λœλ‹€.
μ„Έ 번째 Fragment의 경우 크기가 1200 λ°”μ΄νŠΈλ―€λ‘œ Header 크기λ₯Ό λ”ν•˜μ—¬ Total LengthλŠ” 1220이 되고, λ§ˆμ§€λ§‰ Fragmentμ΄λ―€λ‘œ Flag의 More λΉ„νŠΈκ°€ 0인 것을 확인할 수 μžˆλ‹€. Fragmentation Offset에 λŒ€ν•΄μ„œλŠ” 두 번째 Fragment의 크기가 1400 λ°”μ΄νŠΈμ˜€μœΌλ―€λ‘œ 8둜 λ‚˜λˆ„μ–΄ (8 λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ ν‘œν˜„ν•˜λ―€λ‘œ) λ‚˜μ˜¨ 175λ₯Ό 두 번째 Fragmentation Offset인 175에 λ”ν•˜μ—¬ 350이 λœλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.
μΆ”κ°€μ μœΌλ‘œ 만일 두 번째 Fragment에 λŒ€ν•΄μ„œ MTU 800으둜 μͺΌκ° λ‹€κ³  κ°€μ •ν•˜μ—¬ 더 μͺΌκ°œλ³΄μž. 2.1 Fragment의 Total LengthλŠ” Header 크기λ₯Ό λ”ν•˜μ—¬ 820, Flag의 More λΉ„νŠΈλŠ” (아직 끝 Fragmentκ°€ μ•„λ‹ˆλ―€λ‘œ) 1이 λœλ‹€. Fragmentation Offset은 첫 번째 Fragment의 크기가 1400μ΄μ—ˆμœΌλ―€λ‘œ 8둜 λ‚˜λˆ„μ–΄ 175인 μƒνƒœμΈ 것을 λ³Ό 수 μžˆλ‹€. 2.2 Fragment의 경우 두 번째 Fragment의 크기 1400μ—μ„œ 2.1 Fragment의 크기 800을 λΊ€ 600 λ°”μ΄νŠΈμ΄κ³ , Header 크기λ₯Ό λ”ν•˜μ—¬ Total LengthλŠ” 620이 λ˜λŠ” 것을 확인할 수 μžˆλ‹€. μ„Έ 번째 Fragmentκ°€ 있기 λ•Œλ¬Έμ— Flag의 More λΉ„νŠΈλ„ 1인 것을 λ³Ό 수 μžˆλ‹€. Offset의 경우 2.1 Fragment의 Fragmentation Offsest 175에 2.1 Fragment의 크기 800 λ°”μ΄νŠΈλ₯Ό 8둜 λ‚˜λˆˆ 100을 λ”ν•˜μ—¬ 275κ°€ λ˜λŠ” 것을 λ³Ό 수 μžˆλ‹€.
λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•΄λ³΄μž. Packet이 λ„μ°©ν•˜μ—¬ ν™•μΈν•΄λ³΄λ‹ˆ Fragmentation Offset이 100μž„μ„ ν™•μΈν–ˆλ‹€. 이 λ•Œ HLEN은 5μ˜€κ³ , Total LengthλŠ” 100이라고 ν–ˆμ„ λ•Œ, 이 Fragment의 μ‹œμž‘ Byte와 끝 ByteλŠ” λͺ‡μ΄ 될까?
μ •λ‹΅

6) IPv4 Header Checksum

Checksumμ΄λΌλŠ” 것은 TCP/IP λͺ¨λΈμ—μ„œ μ‚¬μš©ν•˜λŠ” Error Detection 방법 쀑에 ν•˜λ‚˜μ΄λ‹€. Error에 λŒ€ν•΄μ„œ 찾을 수 있기 λ•Œλ¬Έμ— Packet 전솑 쀑에 망가진 데이터에 λŒ€ν•΄μ„œ Protection이 κ°€λŠ₯ν•˜λ‹€.
Checksum은 솑신 μΈ‘μ—μ„œ κ³„μ‚°ν•˜μ—¬ Packet에 λ„£κ²Œλ˜κ³ , μˆ˜μ‹  μΈ‘μ—μ„œλŠ” 솑신 μΈ‘μœΌλ‘œλΆ€ν„° 받은 λͺ¨λ“  Packet에 λŒ€ν•΄ Packet에 κΈ°μž…λœ Checksum을 μ΄μš©ν•˜μ—¬ λ™μΌν•œ 계산을 λ°˜λ³΅ν•œλ‹€. 만일 Checksum ν™•μΈμ—μ„œ λ¬Έμ œκ°€ 없이 λ‹€ 톡과가 λœλ‹€λ©΄ μˆ˜μ‹  μΈ‘μ—μ„œ Packet을 λ°›κ²Œλœλ‹€. 그렇지 μ•Šλ‹€λ©΄ Packet을 받지 μ•ŠλŠ”λ‹€.
Header Checksum은 μ˜€λ‘œμ§€ Header에 λŒ€ν•΄μ„œλ§Œ κ²€μ¦ν•œλ‹€. 만일 Header의 νŠΉμ • ν•„λ“œμ˜ 값이 λ³€ν–ˆμ„ 경우 (λŒ€ν‘œμ μœΌλ‘œ TTLκ³Ό 같은...), Headerκ°€ μ²˜λ¦¬λ˜λŠ” 각 μ§€μ μ—μ„œ λ‹€μ‹œ κ³„μ‚°λ˜μ–΄ κ²€μ¦λœλ‹€.
각 Headerμ—μ„œ 16 λΉ„νŠΈμ”© λŠμ–΄μ„œ λ‚˜μ˜¨ 값듀을 λͺ¨λ‘ λ”ν•˜μ—¬ (λ§μ…ˆ μ‹œ 1의 보수둜 더함) λ‚˜μ˜¨ 값을 Negate (λΉ„νŠΈλ“€μ„ λͺ¨λ‘ Flip)ν•œ 값이 Checksum ν•„λ“œμ— κΈ°μž¬λœλ‹€. 이 λ•Œ 16 λΉ„νŠΈμ”© λŠμ–΄μ„œ μ‚¬μš©ν•  λ•Œ Checksum의 값도 계산에 κΈ°μ—¬ν•˜κ²Œ λ˜λŠ”λ° 초기 Checksum의 값은 0으둜 κ³„μ‚°λœλ‹€. μ—¬κΈ°μ„œ λ§μ…ˆ μ‹œ 1의 보수둜 λ”ν•œλ‹€κ³  ν•œ 것은 Carry λ°œμƒ μ‹œ Carryλ₯Ό λ”ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€. (2의 보수 λ§μ…ˆ μ‹œμ—λŠ” Carry λ°œμƒ μ‹œ Carryλ₯Ό 버린닀.) μ•„λž˜ μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄μž.
μœ„μ™€ 같이 κ³„μ‚°λœ Checksum이 Packet에 λ‹΄κΈ°κ²Œ 되면 μˆ˜μ‹  μΈ‘μ—μ„œλŠ” λͺ¨λ“  Header의 λ‚΄μš©λ“€μ„ 솑신 μΈ‘μ—μ„œ Checksum을 κ³„μ‚°ν–ˆμ„ λ•Œ 처럼 16 λΉ„νŠΈμ”© λŠμ–΄μ„œ λͺ¨λ‘ λ”ν•΄λ³΄κ²Œ λœλ‹€. 이 λ•Œ 만일 Header에 λ¬Έμ œκ°€ μ—†λ‹€λ©΄, κ²°κ³ΌλŠ” FFFFκ°€ λ‚˜μ˜€κ²Œ 되고 Negate μ‹œμ— 0000이 결과둜 λ‚˜μ˜€κ²Œ λ˜μ–΄ μˆ˜μ‹  μΈ‘μ—μ„œλŠ” μ†‘μ‹ μœΌλ‘œλΆ€ν„° 받은 Packet의 Header에 λ¬Έμ œκ°€ μ—†λ‹€λŠ” 것을 확인할 수 μžˆλ‹€. (μ•„λž˜ 그림을 μ°Έκ³ )

7) Requirements for Internet Host (RFC1122)

Network Layerμ—μ„œ 톡신을 ν•˜κΈ° μœ„ν•΄μ„  Host의 μ†Œν”„νŠΈμ›¨μ–΄μ—λŠ” IP와 ICMP (RFC792)κ°€ κ΅¬ν˜„λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€.
Hostμ—μ„œ λ™μž‘ν•˜λŠ” IPλŠ” μœ„μ—μ„œ μ–ΈκΈ‰ν–ˆλ˜ κ²ƒμ²˜λŸΌ 2가지 κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ”λ°, 첫 μ§Έλ‘œλŠ” Datagram이 λ³΄λ‚΄μ§ˆ 수 μžˆλ„λ‘ Next Hopν•  Gateway ν˜Ήμ€ Hostλ₯Ό 찾을 수 μžˆλŠ” Addressing, λ‘˜ μ§Έλ‘œλŠ” Datagram에 λŒ€ν•œ Fragmentation 및 Reassembling이닀.
ICMPλŠ” Network Layerκ°€ 정상 λ™μž‘μ΄ κ°€λŠ₯ν•œμ§€ μ§„λ‹¨ν•˜λŠ” κΈ°λŠ₯에 λŒ€ν•΄μ„œ μˆ˜ν–‰ν•˜κ²Œ λœλ‹€. μœ„μ˜ μΉ΄ν…Œκ³ λ¦¬λ“€μ—μ„œ μ–ΈκΈ‰ν–ˆλ˜ λ‚΄μš©λ“€μ΄μ§€λ§Œ μš”μ•½ν•˜μ—¬ μ •λ¦¬ν•΄λ³΄μž.

Datagram을 λ°›λŠ” μž…μž₯μ—μ„œ...

Datagram이 μ˜¬λ°”λ₯Έ ν˜•μ‹μΈμ§€ ν™•μΈν•œλ‹€.
ν˜„μž¬ Local Hostλ₯Ό ν–₯ν•΄μ„œ 온 것이 λ§žλŠ”μ§€ ν™•μΈν•œλ‹€. (Destination이 λ‚˜μΈμ§€ ν™•μΈν•˜λŠ” 것인데 μ•„λž˜ κΈ°μ€€ 쀑에 ν•˜λ‚˜λΌλ„ λ§Œμ‘±ν•˜λ©΄ λœλ‹€.)
Host의 IP μ£Όμ†Œμ— ν•΄λ‹Ήν•  λ•Œ
μ—°κ²°λœ λ„€νŠΈμ›Œν¬μ— μœ νš¨ν•œ IP Broadcast μ£Όμ†ŒμΌ λ•Œ
Hostκ°€ μˆ˜μ‹ ν•˜λŠ” Physical Interfaceκ°€ Multicast 그룹에 μ†ν•˜κ³ , ν•΄λ‹Ή Multicast μ£Όμ†Œκ°€ 이용 λ˜μ—ˆμ„ λ•Œ
Packet에 λͺ…μ‹œλœ Option에 λŒ€ν•΄ μ²˜λ¦¬ν•œλ‹€.
ν•„μš”ν•˜λ‹€λ©΄ Datagram을 Reassembleν•œλ‹€.
Capsuleν™”λœ 메세지λ₯Ό μ μ ˆν•œ Transport Layer Protocol λͺ¨λ“ˆμ—κ²Œ λ„˜κ²¨μ€€λ‹€.

Datagram을 λ³΄λ‚΄λŠ” μž…μž₯μ—μ„œ...

Transport Layerμ—μ„œ μ„€μ •λ˜μ§€ μ•Šμ€ ν•„λ“œλ“€μ— λŒ€ν•΄μ„œ μ„€μ •ν•œλ‹€.
μ—°κ²°λœ λ„€νŠΈμ›Œν¬μ—μ„œ κ°€μž₯ λ¨Όμ € Hop ν•΄μ•Όν•  μ˜¬λ°”λ₯Έ 지점을 κ³ λ₯Έλ‹€.
ν•„μš”ν•˜λ‹€λ©΄ Datagram을 Fragment둜 λ‚˜λˆˆλ‹€.
Packet을 μ˜¬λ°”λ₯Έ Data Link Layer의 Driver둜 보낸닀.

μΆ”κ°€μ μœΌλ‘œ...

RFC1122μ—λŠ” μœ„ λ‚΄μš© 외에도 IP 톡신을 μœ„ν•΄ Routing Outbound Datagrams (Route Cache ν•„μš”μ„±, Default Gateway듀이 λͺ…μ‹œλœ 리슀트 ν•„μš”μ„±), Forwarding Outbound Datagrams (Local / Remote Decision에 λŒ€ν•œ Rule의 ν•„μš”μ„±, Gateway Selection에 λŒ€ν•œ Rule의 ν•„μš”μ„±), Dead Gateway Detection, New Gateway Selection, Host Initialization, ARP Cache Validation, ARP Packet Queue 등이 λ§Œμ‘±λ˜μ–΄μ•Ό ν•œλ‹€.

8) IPv4 Packet Forwarding

Forwarding μš©μ–΄ ꡬ뢄

[1] Forwarding
Forwarding Table을 μ΄μš©ν•˜μ—¬ Packet ν˜Ήμ€ Frame의 효율적인 전솑을 μ§€μΉ­ν•œλ‹€.
[2] Routing Algorithm
Source와 Destination μ‚¬μ΄μ—μ„œ 선택해야할 경둜λ₯Ό κ²°μ •ν•  수 μžˆλŠ” κ·œμΉ™λ“€μ˜ 집합을 μ°Ύμ•„λ‚΄λŠ” 방법이닀. 이λ₯Ό 톡해 Forwarding Table을 ꡬ성할 수 μžˆλ‹€.
[3] Routing Protocol
νŠΉμ • Routing Algorithm을 μ‹€ν–‰ν•  수 μžˆλ„λ‘ 메세지 κ΅ν™˜μ— λŒ€ν•œ 단계듀을 μ •μ˜ 해놓은 것을 μ˜λ―Έν•œλ‹€.

Packet Forwarding?

IPκ°€ μ‚¬μš©ν•˜λŠ” LAN 기술 (Ethernet ν˜Ήμ€ 802.3 λ“±) 에 κΈ°λ°˜ν•œ Forwarding 방법을 μ˜λ―Έν•œλ‹€. 이런 Packet Forwarding λ°©μ‹μ—λŠ” 2가지가 μžˆλ‹€.
[1] Direct Packet Forwarding
Bκ°€ Packet을 Aμ—κ²Œ 보내고 싢은 상황이닀.
BλŠ” μžμ‹ μ˜ IP μ£Όμ†Œμ™€ Destination IP μ£Όμ†ŒμΈ A의 IP μ£Όμ†Œλ₯Ό μ•Œκ³  있기 λ•Œλ¬Έμ— Mask 계산을 톡해 λ™μΌν•œ Subnet에 μžˆλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.
3. BλŠ” Forwarding Table을 ν†΅ν•΄μ„œ A에 Packet이 도착할 수 μžˆλ„λ‘ Packet을 λ³΄λ‚΄μ•Όν•˜λŠ” Next Hop의 μ‹€μ œ μ£Όμ†Œλ₯Ό μ°Ύμ•„λ‚Έλ‹€.
4. Ethernet 등을 μ΄μš©ν•˜κΈ° μœ„ν•΄ BλŠ” Network Layerμ—μ„œ Data Link Layer둜 Packet을 ν˜λ €λ³΄λ‚Έλ‹€. 그리고 Next Hop λ‹¨λ§λ‘œ λ³΄λ‚΄κ²Œ λœλ‹€. ν˜„μž¬ κ²½μš°μ—λŠ” Next Hop으둜 λ°”λ‘œ A에 보낼 수 μžˆλŠ” 상황이닀.
주황색 뢀뢄이 Frame에 ν•΄λ‹Ήν•˜λŠ” SRC 단말 μ£Όμ†Œ, DST 단말 μ£Όμ†Œκ°€ 기둝 되며 νŒŒλž€ 뢀뢄이 Packet에 ν•΄λ‹Ήν•˜λŠ” 뢀뢄이닀. κ·Έ μ•„λž˜μ— 보면 Header와 Payload (Datagram을 의미)둜 λ‚˜λ‰˜μ–΄ μžˆλŠ” 것을 λ³Ό 수 μžˆλ‹€.
[2] Indirect Packet Forwarding
BλŠ” IP Packet을 DλΌλŠ” Hostμ—κ²Œ 보내고 싢은 상황이닀.
BλŠ” μžμ‹ μ˜ IP μ£Όμ†Œμ™€ Destination IP μ£Όμ†ŒμΈ D의 IP μ£Όμ†Œλ₯Ό μ•Œκ³  있기 λ•Œλ¬Έμ— Mask 계산을 톡해 λ™μΌν•œ Subnet에 μžˆμ§€ μ•Šλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.
λ”°λΌμ„œ λ„€νŠΈμ›Œν¬ κΉŒμ§€ μ°Ύμ•„κ°ˆ 수 μžˆλ„λ‘ Routerμ—κ²Œ ν•΄λ‹Ή Packet을 λ³΄λ‚΄κ²Œ 되고, D에 ν•΄λ‹Ήν•˜λŠ” Networkλ₯Ό 찾을 λ•ŒκΉŒμ§€ Indirect Packet Forwarding을 λ°˜λ³΅ν•˜κ²Œ λœλ‹€. 만일 D에 ν•΄λ‹Ήν•˜λŠ” λ„€νŠΈμ›Œν¬λ₯Ό 찾게 되면 Direct Packet Forwarding을 μˆ˜ν–‰ν•˜κ²Œ λœλ‹€.
ν•œ λ²ˆμ— Packet Forwarding을 ν•  수 μ—†κΈ° λ•Œλ¬Έμ— Router둜 Forwarding ν•˜λŠ” 것을 λ³Ό 수 μžˆλ‹€. Frame에 쓰여진 μ£Όμ†Œμ™€λŠ” 달리 Packetμ—λŠ” μ—¬μ „νžˆ Source B, Destination Dκ°€ μ ν˜€μžˆλŠ” 것을 λ³Ό 수 μžˆλ‹€.

Forwarding Table Lookup Rule

이 λ•Œ Packet을 Forwarding ν•  곳을 μ°ΎκΈ° μœ„ν•΄μ„œ Forwading Table을 Lookup ν•˜λŠ” Rule에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž.
κ²°λ‘ λΆ€ν„° λ§ν•˜λ©΄ κ°€μž₯ κΈ΄ Network Prefix에 λŒ€ν•΄μ„œ λ¨Όμ € μ‚¬μš©ν•΄μ„œ Matching이 λ˜λŠ”μ§€ μ•Œμ•„λ³Έλ‹€. 이λ₯Ό Logest Prefix Matching이라고 ν•œλ‹€.
μˆœμ„œλŠ” λ‹€μŒκ³Ό κ°™λ‹€.
[1] Full Matching이 된 경우 (Hostλ₯Ό λ°”λ‘œ 찾은 κ²ƒμœΌλ‘œ Direct Forwarding을 μ‚¬μš©ν•œλ‹€.)
Destination IP μ£Όμ†Œμ™€ μ™„λ²½νžˆ μΌμΉ˜ν•œ 경우λ₯Ό λ§ν•œλ‹€. 이 경우의 Network PrefixλŠ” 32 λΉ„νŠΈλ‘œ κ°„μ£Όν•œλ‹€. κ²°κ³Όλ‘œλŠ” μ΄μš©ν•  Interface μ£Όμ†Œλ₯Ό λ°›κ²Œ λœλ‹€.
[2] Network Matching이 된 경우 (Indirect Forwarding을 μ‚¬μš©ν•œλ‹€.)
κ°€μž₯ κΈ΄ Network Prefix에 ν•΄λ‹Ήν•˜λŠ” EntryλΆ€ν„° Destination IP μ£Όμ†Œμ™€μ˜ Matching μ—¬λΆ€λ₯Ό Forwarding Tableμ—μ„œ μ‚΄νŽ΄λ³Έλ‹€. κ²°κ³Όλ‘œλŠ” Next Hop ν•΄μ•Όν•  Gateway의 Interface μ£Όμ†Œλ₯Ό λ°›κ²Œ λœλ‹€.
[3] μœ„ 2가지 κ²½μš°μ— κ±ΈμΉ˜μ§€ μ•Šμ•˜μ„ λ•Œ, Default Routeκ°€ μ •μ˜λ˜μ–΄ μžˆλŠ” 경우
μ „ν˜•μ μœΌλ‘œ Default Route의 ν‘œν˜„μ€으둜 λ‚˜νƒ€λ‚œλ‹€. Network Prefixκ°€ 0 λΉ„νŠΈμ΄λ―€λ‘œ μ •μ˜λ§Œ λ˜μ–΄ μžˆλ‹€λ©΄ λͺ¨λ‘ μΌμΉ˜ν•  수 μžˆλŠ” 쑰건을 κ°–κ³  μžˆλ‹€. κ²°κ³Όλ‘œλŠ” Default Gateway의 Interface μ£Όμ†Œλ₯Ό λ°›κ²Œ λ˜λŠ” 것이닀.
[4] Packet을 폐기 μ²˜λΆ„

Entry Matching μ—¬λΆ€ νŒλ‹¨

μœ„ 사항을 읽어보면 Matching μ—¬λΆ€λŠ” Network Prefixλ₯Ό μ΄μš©ν•œλ‹€λŠ” 것을 어렴풋이 μ•Œ 수 μžˆλŠ”λ°, Network Prefixλ₯Ό μ΄μš©ν•΄μ„œ μ–΄λ–»κ²Œ Matching μ—¬λΆ€λ₯Ό μ•Œμ•„λ‚΄λŠ”μ§€ ν™•μΈν•΄λ³΄μž.
[1] Packet의 Destination IP μ£Όμ†Œλ₯Ό κ°–κ³  μ˜¨λ‹€.
[2] Forwarding Tableμ—μ„œ 찾은 κ°€μž₯ κΈ΄ Network Prefix에 ν•΄λ‹Ήν•˜λŠ” Entryλ₯Ό κ°–κ³  μ˜¨λ‹€.
[3] Destination IP μ£Όμ†Œμ™€ Entry둜 얻은 값에 λŒ€ν•΄ & 연산을 μˆ˜ν–‰ν•œλ‹€.
[4] Source IP μ£Όμ†Œμ™€ [3]의 κ²°κ³Όλ₯Ό λΉ„κ΅ν•œλ‹€.
[5] 만일 μΌμΉ˜ν•œλ‹€λ©΄ Entry에 λŒ€ν•œ 정보λ₯Ό Forwarding Tableμ—μ„œ κ°–κ³  μ™€μ„œ λ°˜ν™˜ν•œλ‹€.
[6] μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄ κ·Έ λ‹€μŒ Entry에 λŒ€ν•΄μ„œ 2λ²ˆλΆ€ν„° λ‹€μ‹œ μˆ˜ν–‰ν•œλ‹€.
μœ„ 과정을 μ˜ˆμ‹œλ₯Ό 톡해 μ‚΄νŽ΄λ³΄μž.
Destination IP μ£Όμ†Œκ°€ 이라고 ν–ˆμ„ λ•Œ μ•„λž˜ κ·Έλ¦Όμ—μ„œ Forwarding ν•  수 μžˆλŠ” EntryλŠ” 두 번째인 Entry이닀.
만일 Destination IP μ£Όμ†Œκ°€ μ˜€λ‹€λ©΄, 이 λ•ŒλŠ” μ•„λž˜ κ·Έλ¦Όμ—μ„œ Forwarding ν•  수 μžˆλŠ” EntryλŠ” Default Gatewayκ°€ λœλ‹€.

9) ARP(Address Resolution Protocol) (RFC826)

μ‹€μ œ ν†΅μ‹ μ—μ„œ IP μ£Όμ†ŒλŠ” 논리 μ£Όμ†Œμ΄κΈ° λ•Œλ¬Έμ— μ΄κ²ƒλ§Œ μ•Œμ•„μ„œλŠ” 톡신을 ν•  μˆ˜κ°€ μ—†λ‹€. 기기의 μ‹€μ œ μ£Όμ†ŒμΈ MAC μ£Όμ†Œλ„ ν•¨κ»˜ μ•Œμ•„μ•Ό ν•œλ‹€. ARPλŠ” λ™μΌν•œΒ LAN 내에 μ—°κ²°λœ μ»΄ν“¨ν„°μ˜Β IPΒ μ£Όμ†Œμ— λŒ€μ‘λ˜λŠ” MAC μ£Όμ†Œλ₯Ό μ–»λŠ”λ° μ‚¬μš©λœλ‹€. λ”°λΌμ„œ μ‹€μ§ˆμ μœΌλ‘œ ARPλŠ” Network Layer의 Protocol을 λ•λŠ” Data Link Layer의 Protocol둜 λ³Ό 수 μžˆλ‹€. ARPκ°€ λ™μž‘ν•˜κΈ° μœ„ν•΄μ„œλŠ” 기본적으둜 Data Linkκ°€ Broadcast에 λŒ€ν•œ 수용 λŠ₯λ ₯이 μžˆλ‹€λŠ” 것을 μ „μ œλ‘œ ν•œλ‹€. (Data Linkκ°€ Broadcast에 λŒ€ν•œ 수용 λŠ₯λ ₯이 μžˆλ‹€λŠ” 것은 Limited Broadcast μž„μ„ μ˜λ―Έν•˜κΈ° λ•Œλ¬Έμ—, κ·Έ λ²”μœ„κ°€ ν•˜λ‚˜μ˜ Routerλ₯Ό λ²—μ–΄λ‚˜μ§€ λͺ»ν•œλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.) 결둠적으둜 ARPλŠ” 논리적인 IP μ£Όμ†Œλ₯Ό 물리적인 MAC μ£Όμ†Œλ‘œ λ°”κΎΈμ–΄μ£ΌλŠ” ν”„λ‘œν† ν† μ½œμ΄λ‹€.
μ•„λž˜μ˜ 그림을 μ‚΄νŽ΄λ³΄μž. (이 μ˜ˆμ‹œλŠ” Indirect Packet Forwarding이 된 μƒνƒœμ΄λ‹€.)
λ§Œμ•½ μš°λ¦¬κ°€ WAN ꡬ간을 κ±°μ³μ„œ κ΅¬κΈ€μ΄λΌλŠ” LAN ꡬ간에 λ„μ°©ν–ˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž. μš°λ¦¬λŠ” Routerλ₯Ό μ°Ύμ•˜μœΌλ‹ˆ 이제 μ›ν•˜λŠ” Server에 μ ‘μ†ν•΄μ•Όν•œλ‹€. μ–΄λ–»κ²Œ 찾을 수 μžˆμ„κΉŒ? LAN κ΅¬κ°„μ—μ„œλŠ” IP 톡신을 ν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ MAC 톡신을 톡해 Server에 μ ‘μ†ν•œλ‹€κ³  ν•œλ‹€. ν•˜μ§€λ§Œ μ΄λ•Œ RouterλŠ” Server의 MAC μ£Όμ†Œλ₯Ό λͺ¨λ₯΄κ³  μžˆλ‹€. 그러면 RouterλŠ” MAC μ£Όμ†Œλ₯Ό μ°ΎκΈ° μœ„ν•΄ Broadcast λ°©μ‹μœΌλ‘œ λͺ¨λ‘μ—κ²Œ MAC μ£Όμ†Œλ₯Ό Requestν•œλ‹€. μ΄λ•Œ, ν•¨κ»˜ μ „μ†‘λœ IP μ£Όμ†Œμ™€ μžμ‹ μ˜ IP μ£Όμ†Œκ°€ μΌμΉ˜ν•˜λŠ” ServerλŠ” μžμ‹ μ˜ MAC μ£Όμ†Œλ₯Ό 첨뢀해 Replyλ₯Ό λ³΄λ‚΄κ²Œ λœλ‹€. μ΄λ ‡κ²Œ Server의 Destination IP μ£Όμ†Œμ— ν•΄λ‹Ήν•˜λŠ” MAC μ£Όμ†Œλ₯Ό μ•Œμ•˜κΈ° λ•Œλ¬Έμ— RouterλŠ” λΉ„λ‘œμ†Œ Forwarding을 ν•  수 μžˆλ‹€.

ARP λ™μž‘ 원리

[1] Host μ†‘μ‹ μžλŠ” Destination IP μ£Όμ†Œλ₯Ό μ§€μ •ν•˜μ—¬ Broadcastλ₯Ό 보낸닀.
[2] IPμ—μ„œλŠ”