출처 - https://github.com/jmxx219/CS-Study (opens in a new tab)
IP Address
IP 주소
- 개념
- 네트워크 환경에서 컴퓨터(노드)간 통신하기 위해 각 컴퓨터에 부여된 네트워크상의 주소
- TCP/IP 프로토콜을 사용하는 네트워크와 연결된 모든 장치에 할당된 고유 식별자
- 표현
- 기본적으로 IP는 IPv4 형태
- IP는 32비트 2진수로 표현 가능하며, 0 ~ 2^32개가 IP가 가질 수 있는 최대 갯수
- IP의 8비트의 각각의 영역을 옥텟으로 지칭하여 구분하며 4개의 옥텟을 dot(
.
)로 구분함 IP 주소 = 네트워크 주소 + 호스트 주소
- IP는 네트워크 주소와 호스트 주소로 구분되며, 하나의 네트워크 상에 여러 호스트 주소가 있을 수 있음
- 네트워크 주소: 호스트들을 모은 네트워크를 칭함. 네트워크 주소가 동일한 네트워크를 로컬 네트워크라고 함
- 호스트 주소: 하나의 네트워크에 존재하는 호스트를 구분하기 위한 주소
- ex)
192.168.0.103
에서192.168.0
은 네트워크 주소,103
은 호스트 주소
- 유형
- 공인 IP(Public IP) 주소
- 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소로, 공용 IP라고도 불림
- 공인 IP는 전세계에서 유일한 IP 주소를 가짐
- 외부에 공개되어 있어 인터넷에 연결된 다른 PC로부터 접근이 가능함
- 공인 IP 주소를 사용하는 경우, 방화벽 등 보안 프로그램을 설치할 필요가 있음
- 사설(Private IP) IP 주소
- 일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소로, 로컬 IP 또는 가상 IP라고도 불림
- 공인되지 않은 주소로, 외부에 공개되지 않아 원칙적으로 외부에서 검색과 접근이 불가능함
- 사설 IP 주소만으로는 인터넷 연결 불가능
- 라우터를 통해 1개의 공인 IP만 할당하고, 라우터에 연결된 개인 PC는 사설 IP를 각각 할당받아 인터넷에 접속 가능
- ex) 공인 IP가 건물 주소라면, 사설 IP는 각 호실로 생각할 수 있음
- 공인 IP(Public IP) 주소
- IP 주소 설정 방식
- 고정 IP 주소
- 사용자가 직접 IP 주소를 입력해 주소를 설정하는 방식(수동)
- 컴퓨터에 고정적으로 부여된 IP로, IP를 반납하기 전까지 다른 장비에 부여할 수 없음
- 유동 IP 주소
- IP 주소를 할당하는 서버나 공유기가 보여주는 정보 그대로 컴퓨터에 자동 설정되는 방식(자동)으로, DHCP (opens in a new tab) 서비스라고도 함
- 고정적으로 IP를 부여하지 않고, 컴퓨터를 사용할 때 남아있는 IP 중에서 돌아가면서 부여하는 IP
- ex) 인터넷 공유기는 사설 IP 주소를 생성하고 각 컴퓨터 등에 주소를 자동 할당(DHCP 서비스)하는 역할을 함
- 고정 IP 주소
MAC 주소
- IP 주소는 네트워크 상에서 단말을 구분하기 위해 부여된 논리적 주소(네트워크 주소)
- MAC 주소는 48비트 식별자로, 제조업체를 식별하는 OUI와 각 장치를 고유하게 식별하는 NIC 부분으로 구성됨
- MAC 주소는 NIC에 부여된 고유한 물리적 주소(하드웨어 주소)로, 48bit로 이루어져 있음
- 컴퓨터간 데이터를 전송하기 위해 있는 컴퓨터의 물리적 주소
- IP 주소간의 통신은 각 라우터 hop에서 일어나는 MAC 주소와 MAC 주소 통신의 연속적인 과정임
- IP 주소는 변동가능성이 있지만, 하드웨어의 식별번호(기계의 고유 주소번호)인 MAC 주소는 변하지 않음
IP 주소 클래스(A, B, C class)
- 개념
- IP 주소를 네트워크 주소와 호스트 주소로 구분하는 방법(
IP 주소 = 네트워크 주소 + 호스트 주소
) - 하나의 네트워크에서 몇 개의 호스트 주소를 가질 수 있느야에 따라 클래스를 나눌 수 있음
- IP 주소를 네트워크 주소와 호스트 주소로 구분하는 방법(
- 클래스 도입 이전
- 예전에 IPv4 주소는 단순한 8비트의 네트워크 영역과 해등 네트워크 내의 호스트 주소를 가리키는 영역으로 단순하게 구분되어 있었음
- 이 당시에는 대규모 네트워크가 적었기 때문에 나눌 필요가 없었음
- 클래스 도입
- 시대가 바뀌면서 대규모 네트워크가 늘어나는 상황에서 IP 주소 클래스가 등장함
- 한정된 자원인 IP 주소를 체계적으로 나눠 쓸 필요가 있음
- 대표적으로 A, B, C 클래스들이 가장 많이 사용됨
클래스 | 최상위 비트 | 주소 범위 | 호스트 수(개) | 주소 영역 구분 (네트워크 + 호스트) | 네트워크 / 호스트 ID |
---|---|---|---|---|---|
A | 0 | 0.0.0.0 ~ 127.255.255.255 | 16,777,216 | 네트워크.호스트.호스트.호스트 | 8/24 bit |
B | 10 | 128.0.0.0 ~ 191.255.255.255 | 65,536 | 네트워크.네트워크.호스트.호스트 | 16/16 bit |
C | 110 | 192.0.0.0 ~ 223.255.255.255 | 256 | 네트워크.네트워크.네트워크.호스트 | 24/8 bit |
D | 1110 | 224.0.0.0 ~ 239.255.255.255 | N/A | 멀티 캐스트 용 | - |
E | 1111 | 240.0.0.0 ~ 255.255.255.255 | N/A | 특수용도 예약주소 | - |
Classful vs Classless
- Classful addressing
- 클래스 기반의 IP 주소 체계로, 기존 Class 별로 분류되어 있는 네트워크 범위를 사용하여 네트워크를 분류하고 주소를 지정하는 방식
- 클래스 기반으로 네트워크를 분할하는 기법은 현재 사용하지 않음
- 인터넷의 상용화로 네트워크 사용량이 폭발적으로 증가하여 IP 주소 부족 문제 발생
- 해결 방법: Classless, IPv6, NAT 등
- Classless addressing
- 클래스 개념 자체를 버리는 클래스리스 기반의 주소 체계로, 관리자가 임의로 네트워크를 분류하고 주소를 지정하는 방식
- 클래스 기반보다 네트워크 주소를 세밀하게 분할하고 할당하기 위해 네트워크 크기에 맞춰 1bit 단위로 네트워크를 상세히 분할하는 방법을 사용함
- Classless 기반 주소 체계를 사용하기 위해 도입된 것이 서브넷 마스크(
Subnet Mask
)임- 관리자가 임의로 네트워크를 분류하기 때문에 컴퓨터입장에서는 어디까지가 네트워크 범위인지 구분할 수 없음
- 서브넷 마스크(
Subnet Mask
): 네트워크 ID와 호스트 ID를 식별(구분)하기 위해 사용하는 Mask(네트워크 ID - 1bit, 호스트 ID - 0 bit) - 서브넷팅(
Subnetting
): 네트워크-호스트 기준을 사용자가 정해 원래 클래스풀 단위의 네트워크보다 더 조개 사용하는 것으로, 클래스리스 네트워크의 가장 큰 특징
Network ID : Host들을 모은 네트워크를 지칭하는 주소
Host ID : 하나의 네트워크 내에 존재하는 Host를 구분하기 위한 주소
IPv4 vs IPv6
구분 | IPv4 | IPv6 |
---|---|---|
주소 길이 | 32bit | 128bit |
표시 방법 | 8bit씩 4부분 10진수 표시 | 16bit 8부분 16진수로 표시 |
주소 개수 | 약 43억개 | 거의 무한대(2^128) |
주소 할당 방식 | 클래스 기반 비순차 할당 | 네트워크 규모, 단말기 수에 따라 순차할당 |
헤더 크기 | 가변 | 고정 |
Qos 제공 | 미흡 | 제공 |
보안 | IPSec 프로토콜 별도 설치 | IPSec 자체 지원 |
서비스 품질 | 제한적 품질 보장 | 확장된 품질 보장 |
IPv4(Internet Protocol version 4)
- 기본적으로 IP는 IPv4 형태
- 주소 체계
- 8bit 씩 4개의 필드로 구성되어 32bit의 숫자로 표현함
- IP address = Network ID + Host ID
- Class 기반 주소 체계(A ~ E)
Checksum
- IPv4에서 수행하는 체크섬
- 전달된 IP 패킷의 헤더에서 체크섬 값을 제외한 모든 값을 더해 전달된 체크섬 값과 비교해 같으면 정상, 다르면 비정상으로 판단이 진행됨
- TCP에서 수행하는 체크섬
- IPv4와 같이 헤더만 필요한 것이 아님
- IP 헤더에서 뽑아낸 출발지의 주소와 도착지의 주소 등을 포함하고 있는 의사 헤더(Pseudo Header)를 만들어낸 다음, 의사 헤더와 TCP 세그먼트의 값을 16비트 단위로 끊은 뒤 모두 더해 하나의 값을 만들어냄
- 만들어진 값이 전달된 체크섬과 더해 모두 1이라면 정상, 아니라면 비정상으로 판단
- 정상일 경우 1의 보수를 취한 뒤 체크섬 값으로 보내게 됨
- IPv4에서 수행하는 체크섬
- 한계
- IPv4의 클래스 기반 주소 체계는 네트워크와 호스트 ID 길이가 고정적이므로 비효율적이며 주소 부족 문제 발생
주소 고갈 문제해결
- 논리적 확장 방안
- 서브넷팅(
Subnetting
)Subnet Mask
를 이용하여 IP 주소 중 host 주소 일부분을 필요한 만큼의 서브 network로 분할하여 사용하는 방법- 한 네트워크의 브로드캐스팅이 다른 네트워크로 전송되지 않으므로 네트워크 상의 불필요한 트래픽을 줄일 수 있음
- NAT(Network Address Translation)
- 공인 IP와 사설 IP를 서로 변환시켜줌
- 사설 IP는 공인 IP와는 달리 동일 네트워크 내부에서만 인식이 되고 타 네트워크에서는 접속할 수 없기 때문에 방화벽의 일부로 사용함
- 소수의 공인 IP를 통해 수 많은 사설 IP가 인터넷에 연결될 수 있게 하는 기술을 말함
- 통신사업자들이 개인에게 대부분 한 개의 유동 IP만 제공하고 있어, 한 개의 IP로 여러 단말들이 공유하여 사용할 수 있음
- 사설 IP 주소를 사용하면서 공인 IP 주소는 한정되어 있기 때문에 이를 공유하는 것
- 공인 IP와 사설 IP를 서로 변환시켜줌
- DHCP (opens in a new tab)
- IP 주소를 관리하고 할당하며 컴퓨터가 네트워크의 다른 장소에 접속되었을 때 자동으로 새로운 IP 주소를 할당함
- 사용 가능한 IP 주소의 개수보다 더 많은 컴퓨터가 있는 경우에도 IP 주소의 임대시간을 짧게 함으로써 네트워크를 동적으로 재구성할 수 있음
- 서브넷팅(
- 물리적 확장 방안
- IPv6 적용
- 32bit 주소공간체계를 쓰던 IPv4에 비하여 128bit로 이를 확장하여 이론적으로 무한대의 주소공간을 확보하게 됨
- IPv4와 달리 비클래스 주소체계를 적용하여 효율성을 높임
- IPv6 적용
브로드캐스팅(broadcasting): 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식
IPv6(Internet Protocol version 6)
- IPv4의 주소 부족과 보안성 취약, 성능 부족 등의 문제점을 해결하기 위한 Internet Protocol
- 특징
- 확장된 주소 공간
- 128 bit 주소 체계를 사용하여 IPv4의 주소 부족 문제 해결
- IP 주소를 절약하기 위해 사용되는 NAT와 같은 주소 변환 기술도 불필요
- 새로운 헤더 포맷
- 헤더를 고정 길이로 변경 (40 byte)
- 패킷 단편화(fragmentation) 관련 필드 삭제
- 체크섬(checkSum) 필드 삭제
- 향상된 서비스의 지원
- 트래픽을 효과적으로 분류할 수 있는 기능 제공
- 이를 위해 IPv6 헤더 내에 플로우 레이블(Flow Label) 필드 이용
- 보안 기능
- IPv4에서의 보안은 IPSec라는 보안 관련 프로토콜을 별도로 설치해주어야 함
- IPv6에서는 프로토콜 내에 보안관련 기능을 탑재할 수 있도록 설계
- 확장 헤더를 통하여 네트워크 계층에서의 종단감 암호화 제공
- 주소 자동 설정
- 로컬 IPv6 주소를 LAN 상의 MAC 주소와 라우터가 제공하는 네트워크 프리픽스(prefix)에 결합하여 IP 주소를 자동 생성함
- 이동형 컴퓨터의 경우, 어느 곳에서든 네트워크 연결을 설정하면 자동으로 포워딩 주소를 설정할 수 있게 함
- 확장된 주소 공간
- 주소 체계
- 128bit = Network ID(64bits)+ Host ID(64bits)
- 128bit를 16bit로 나누어 16진수로 표시하여
:
으로 구분함
IPv4과 IPv6의 통신
- 듀얼 스택
- 하나의 시스템에서 IPv4와 IPv6 두 프로토콜을 처리하는 기술
- 시스템은 물리적으로 하나지만 논리적으로는 둘 다 지원
- 터널링(tunneling)
- 패킷을 캡슐화하여 가상의 터널을 이용하여 통신
- IPv4 지역에 들어서면 IPV6 패킷은 IPv4 패킷으로 캡슐화되고, 이 지역을 벗어날 때 역캡슐화됨
- 헤더 변환
- 인터넷의 대부분이 IPv6로 변경되고, 일부만이 IPv4를 사용할 때 필요한 방법
- 헤더를 제외하면 동일하기 때문에 헤더 변환을 통해 헤더의 형태를 완전히 변경하여 데이터를 전송
참조
https://velog.io/@naeson/IPV6-IPV4-%EC%97%B0%EB%8F%99#dual-stack (opens in a new tab)
➕ IP(Internet Protocol)
- 개념
- 네트워크 통신을 할 때 쓰는 프로토콜로, IP 기기의 주소를 나타내는 것이 IP 주소
- 특징
- IP는 비신뢰성, 비연결성 특징을 갖고 있어 IP 자체만으로는 정확하게 전송되는 것을 보장할 수 없음
- 따라서 TCP와 같은 상위 계층의 프로토콜을 함께 사용해야 함
- TTL(Hop Limit)
- IP 패킷이 무한정으로 네트워크를 떠돌지 않도록 하기 위해서 설정한 거칠 수 있는 라우터의 최대 개수
- 하나의 라우터를 거칠 때 마다 1씩 감소하며 TTL이 0인 패킷을 받은 라우터는 해당 패킷을 버리게 됨