
IP(Internet Protocol): 네트워크 통신을 위한 프로토콜로, 컴퓨터와 네트워크 장치가 데이터를 교환하고 통신하기 위해 사용하는 규칙과 프로토콜의 집합
IP datagram: 인터넷 프로토콜(IP)을 사용하여 데이터를 패킷으로 나타내는 방식을 설명하는 형식
IP Address: 네트워크에서 컴퓨터나 네트워크 장치를 식별하는 데 사용되는 고유한 주소
192.168.1.10192.168.1 네트워크 상10번 장치

간단한 식별과 관리: 클래스 A, B 및 C로 주소 공간을 나누는 방식은 대규모 네트워크, 중간 규모 네트워크 및 소규모 네트워크를 쉽게 식별하고 관리할 수 있다. 각 클래스는 고유한 비트 패턴으로 시작했기 때문에 빠르게 식별할 수 있다.
네트워크 확장에 유용: 초기에는 인터넷이 상대적으로 작은 규모로 시작되었기 때문에 클래스 기반 주소 할당으로 충분히 대응할 수 있었다. 이것은 초기 인터넷의 확장 및 성장을 지원하는 데 도움이 되었다.
쉬운 이해와 사용: 클래스 A, B 및 C 주소 범위는 비트 패턴을 사용하여 기술되었으며, 이는 초기 네트워크 관리자 및 엔지니어가 주소 할당을 이해하고 구현하는 데 도움이 되었다.
방향성 제공: 클래스 기반 주소 할당은 처음에는 주소 할당의 방향성을 제공했으며, 주소 공간의 크기에 따라 어떤 클래스를 사용할지를 결정하는 데 도움을 주었다.
ㅇ
- 문제점:
- 네트워크가 3가지 사이즈로 국한된다.
- 주소 공간의 낭비와 유연성 부족으로 인해 단점을 가지고 있었으며, 대규모 네트워크와 주소 부족 문제에 대한 대응력이 부족하다.

- 임의의 길이의 주소의 서브넷 부분
- 주소 형태:
a.b.c.d/x, x는 주소의 서브넷 부분 비트수
유연한 주소 할당: CIDR은 IP 주소 공간을 클래스에 구속받지 않고 더 작은 블록(서브넷)에 할당하는 데 사용된다. 이것은 주소 할당의 유연성을 제공하며 네트워크 요구 사항에 더 적합한 주소 할당이 가능하게 한다.
접두사와 서브넷 마스크: 주소 범위를 정의하기 위해 "접두사" 또는 "프리픽스"를 사용한다. 이것은 서브넷 마스크와 함께 사용되어 네트워크 식별자와 호스트 주소 부분을 나눈다.
예를 들어, "192.168.1.0/24"는 24비트 길이의 서브넷 마스크로 네트워크 식별자를 지정하며 나머지 8비트는 호스트 주소로 남는다.
효율적인 주소 공간 사용: 주소 공간의 낭비를 최소화하고 불필요한 주소 할당을 방지한다. 주소 블록은 필요한 크기로 조절되므로 네트워크에서 남겨진 주소 공간을 낭비하지 않는다.
라우팅 효율성: 라우팅 테이블의 크기를 줄여준다. 클래스 기반 주소 할당에서는 각 클래스에 해당하는 라우팅 엔트리를 가져야 했지만, CIDR은 더 큰 주소 범위를 더 작은 수의 라우팅 엔트리로 효과적으로 요약할 수 있다.
CIDR 주소 표기법: "주소/프리픽스 길이"와 같은 형식으로 표시된다.
예를 들어, "192.168.1.0/24"는 24비트의 네트워크 식별자와 8비트의 호스트 주소를 가지는 주소 범위를 나타낸다.
➡️ CIDR는 주소 할당 및 라우팅의 효율성을 향상시키고 IP 주소 공간을 더 효과적으로 관리하는 데 중요한 역할을 한다. 이것은 인터넷의 확장 및 성장을 지원하고 주소 공간의 고갈을 완화하는데 도움을 준다.

Subnet
IP 주소 및 서브넷 마스크:
서브넷의 생성:
서브넷 간 라우팅:
트래픽 관리:
IP 주소 할당 및 관리:
➡️ 예를 들어 C클래스인 192.168.32.0/24를 서브넷 마스크의 bit수를 1 증가시켜서 192.168.32.0/25로 변경한다고 하자.

192.168.32.0/24는 원래 하나의 네트워크이다.
이때 할당 가능한 host의 수는 2^8-2=254개이다.
🤔 2개를 빼는 이유?
첫번째 주소인 192.168.32.0은 Network Address로 쓰이고 마지막 주소인 192.168.32.255는 Broadcast로 쓰이기 때문에 호스트에 할당할 수 없기 때문이다.
- Broadcast: IP 주소 중에서 특정 네트워크의 모든 호스트에 메시지를 전달하는 데 사용되는 특별한 IP 주소

192.168.32.0 : 서브넷1의 Network Address
192.168.32.1~192.168.32.126 : 서브넷1의 host 할당 가능한 부분
192.168.32.127 : 서브넷1의 Broadcast Address
192.168.32.128 : 서브넷2의 NetworkAddress
192.168.32.129~192.168.32.254 : 서브넷2의 host 할당 가능한 부분
192.168.32.255 : 서브넷2의 Broadcast Address


Fragmentation (분할):
Fragment Offset (프래그먼트 오프셋):
Identification (식별자):
Reassembly (재조립):

🤔 4000byte datagram을 3개의 datagram으로 쪼개서 전송한다. 각 datagram은 헤더가 20byte씩을 차지한다.
➡️ 처음 datagram 4000byte도 헤더 20byte를 차지하므로 data field는 3980byte이다. 또한 MTU는 1500byte이다.
1500 + 1500 + 1040 = 4040으로 하는 것이 효율적이다.
처음 datagram의 datafield가 3980이므로1480 + 1480 + 1020 = 3980으로 딱 맞는다.
IP 데이터그램의 분할과 재조립은 데이터 전송 중에 데이터그램의 크기를 관리하고, 다양한 네트워크에서 데이터를 안정적으로 전달하기 위한 중요한 메커니즘이다.
그러나 IP 데이터그램이 지나는 모든 네트워크에서 이러한 프로세스를 지원해야 하며, 이 프로세스가 추가적인 오버헤드를 일으키기도 한다. 따라서 가능한 한 큰 데이터그램을 사용하고, 분할과 재조립을 최소화하는 것이 효율적인 네트워크 디자인의 일부이다.
IPv4 (Internet Protocol version 4)는 인터넷 서비스와 장치 식별을 위한 메소드를 제공하는 광범위하게 사용되는 네트워크 프로토콜이다. 장치에 유일한 IP 주소를 할당하고 그들간에 데이터를 전달하기 위해 이러한 주소를 사용한다. IP 주소는 4개의 점으로 구분하여 네 개의 그룹으로 쓰여진다. 예를 들어, “192.168.1.1”.
IPv4는 오늘날 여전히 넓게 쓰이지만, 이용 가능한 IPv4 주소의 제한된 수 때문에 IPv6로 대체되어지고 있는 중이다.
IPv6 (Internet Protocol version 6)은 IPv4 주소 고갈을 위해 고안된 주소 인터넷 프로토콜의 새로운 버전이다.
IPv6는 거대한 주소 공간(IPv4는 32비트, IPv6는 128비트), 향상된 라우팅, 네트워크 자동설정 능력을 제공한다.
IPv6 주소는 :(colon)으로 구분하여 16진수 숫자의 8그룹으로 쓰여진다.
Ex) 2001:0db8:85a3:0000:0000:8a2e:0370:7334
IPv6는 인터넷 소통을 위해 사용되는 주요 프로토콜로서, 궁극적으로 IPv4를 대체할 예정 이지만, 오늘날 상당수의 장치나 서비스는 여전히 IPv4로 사용되고 있다.
🤔 Why Not IPv6?
1. IPv4와 IPv6의 주소 길이 차이로 인해, 라우팅 및 주소 지정 방법, 패킷 구조 등이 달라 직접적으로 호환되지 않기 때문에, IPv4 및 IPv6 프로토콜을 네트워크내에서 함께 사용하기 위해서는 두 프로토콜을 모두 지원하도록 장치를 특별히 구성해야 한다.
- IPv4는 32비트의 주소, IPv6는 128비트의 주소
- 주소 지정 방법
- IPv4는 ‘
.'으로 구분된 4개의 8비트 숫자로 표현- IPv6는 ‘
:’으로 구분된 8개의 16비트 숫자 그룹으로 표현
- 구형 장치 및 시스템들 대부분이 IPv6을 염두에 두고 설계되지 않았으며, 이러한 시스템을 업그레이드 하거나 교체하는 데 많은 비용과 시간이 소비될 수 있다.
- 일부 조직은 IPv6의 이점이나, 업그레이드의 필요성을 인식하지 못하여 전반적인 채택 속도가 느리다.
- NAT(Network Address Translation)
NAT (Network Address Translation)는 네트워크에서 사용되는 주소 변환 기술로, 주로 IPv4 네트워크에서 주소 부족 문제를 해결하고 네트워크 보안을 강화하는 데 사용된다. NAT는 네트워크 패킷의 출발지 또는 목적지 IP 주소를 변환하며, 주로 라우터나 방화벽 장치에서 구현된다.


로컬 네트워크와 공용 네트워크 연결: NAT는 로컬 네트워크(예: 가정 또는 사무실 네트워크)와 인터넷 또는 공용 네트워크 간의 연결을 관리한다. 로컬 네트워크의 여러 호스트가 하나의 공용 IP 주소를 공유할 수 있다.
IP 주소 변환: 로컬 호스트가 공용 네트워크로 통신하려고 할 때, NAT 장치는 로컬 호스트의 사설 IP 주소를 공용 IP 주소로 변환하여 패킷을 전송한다. 이 변환은 출발지 주소 변환(Source NAT 또는 SNAT) 또는 목적지 주소 변환(Destination NAT 또는 DNAT)으로 이뤄질 수 있다.
포트 변환: NAT는 패킷의 출발지 포트 번호 또는 목적지 포트 번호도 변환할 수 있다. 이를 통해 여러 로컬 호스트가 동일한 공용 IP 주소를 사용하고 여러 서비스 또는 애플리케이션을 동시에 지원할 수 있다.
주소 및 포트 매핑 테이블: NAT 장치는 내부 주소와 외부 주소 간의 매핑을 관리하기 위한 테이블을 유지한다. 이 테이블은 패킷이 들어오거나 나가는 동안 사용된다.
NAT의 장점과 용도:
IP 주소 부족 문제 해결: NAT를 사용하면 여러 로컬 호스트가 한 개의 공용 IP 주소를 공유할 수 있으므로 IP 주소 부족 문제를 완화할 수 있다.
보안 강화: NAT는 로컬 네트워크를 외부 공용 네트워크로부터 분리하는 역할을 하며, 내부 호스트가 직접 인터넷에 노출되지 않도록 보안을 강화한다.
NAT의 단점과 제한:
한계된 접근성: NAT 뒤에 있는 내부 호스트는 일반적으로 인터넷에서 직접 접근할 수 없으며, 외부 호스트에서 내부 호스트로 접속하려면 복잡한 구성이 필요하다.
프로토콜 호환성: 몇몇 네트워크 프로토콜은 NAT에서 제대로 동작하지 않을 수 있으며, 특히 실시간 통신 (예: VoIP)과 P2P (Peer-to-Peer) 애플리케이션에서 문제가 발생할 수 있다.
보안 문제: NAT는 보안 상의 이점을 가지긴 하지만, 외부에서 내부로의 연결이 제한되므로 보안 구성이 더 복잡해질 수 있다.
출처: NAT-네트워크 주소 변환