IP(Internet Protocol)
Network Layer에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다.
물리적으로 떨어진 두 호스트가 데이터를 정확하게 송수신 하기 위해 IP 주소를 사용한다.
- Routing과 Forwarding 이 매우 중요하다.
- 다른 게시글 업로드 후 설명 예정
- 신뢰성을 확보하지 않는다.
- TCP와 같은 신뢰성 있는 프로토콜과 함께 사용한다.
IP(Internet Protocol)주소
네트워크(인터넷) 상에서 데이터를 주고받기 위해 모든 컴퓨터들이 가지는 각자의 주소를 의미한다.
고정 IP
- 컴퓨터가 고정적으로 가지고 있는 IP이다.
- 한 번 부여받으면 반납하기 전까지 변하지 않는다.
- 주로 인터넷 사이트를 운영할 때 사용한다.
유동 IP
- 컴퓨터에 고정된 IP를 부여하지 않고 IP 갱신 주기가 되었을 때 ISP로부터 할당받는 IP이다.
- 사용하지 않는 IP를 수거하는 방식이다.
- 더 많은 사용자에게 인터넷 서비스를 제공할 수 있다.
공인 IP
- 외부에 공개된 IP다.
- 해킹의 위험이 있기에 보안 프로그램이 필요하다.
사설 IP
- 외부에서 접근할 수 없는 IP다.
- 주로 일반 가정 또는 회사 내부에서 사용한다.
- 공인 IP가 할당된 라우터나 공유기를 통해 사설 IP가 할당된다.
IPv4
총 32비트의 길이를 가지고, 8비트씩 4부분을 10진수로 표시하는 IP 주소를 말한다.
각 부분(옥텟)은 점을 찍어 구분한다.
ex) 1100 1011 1111 1100 1001 1001 0011 0111 ⇒ 203.252.153.055
- 각각의 10진수는 0 ~ 2^8-1의 범위를 가진다.
- 약 43억개의 IP주소를 만들 수 있다.
- 여분의 IP주소가 점차 사라지고 있다는 문제점이 있다.
IP Datagram Format(IPv4)
IP Header + data
ver(버전 영역)
- IP 버전을 나타내기 위한 영역
- IPv4 : 4, IPv6 : 6
head len(헤더 크기)
- 4바이트를 기본 단위로, 헤더의 길이를 규정한다.
type of service(DS, 차별화된 서비스)
- 사용자의 데이터마다 우선권을 부여할 수 있다.(라우팅 시 중요)
length
- IP datagram의 총 길이
16-bit-identifier
- 패킷 분할 시 이 값을 참조해 어떤 원본 데이터그램으로부터 분할 되었는지 알 수 있다.
flag
- 전송되는 패킷이 분할 되었는지 여부
fragment offset
- 8바이트 단위로 조각난 패킷의 부분을 가리키는데 사용한다.
TTL(Time To Live)
- 최종 목적지에 도착하지 못한 패킷은 네트워크상에 계속 존재한다.
- 이는 네트워크의 자원을 잠식한다.
- 라우터를 거칠 때마다 TTL에 1을 뺀다.
- TTL 값이 0인 패킷을 받은 라우터는 그 패킷을 삭제한다.
upper layer
- 상위 계층의 프로토콜이 무엇인지를 나타낸다.
header checksum
- 에러를 검출하기 위해 사용한다. UDP, TCP 와 동일
- Transport Layer에서 내려온 data가 아닌, header에 대해서만 오류를 검사한다.
source IP address
- 송신자 IP 주소
destination IP address
- 수신자 IP 주소
options
- IP 헤더의 확장이다.
- 옵션 처리의 유무에 따라 처리 시간이 크게 달라진다.
- 오버헤드가 발생할 수 있기에 거의 사용되지 않는다.
IP 할당 방식
IP 할당 방식은 기본적으로 Static 방식과 DHCP 방식으로 나뉜다.
Static 방식
- 사용하고 싶은 IP를 자신이 직접 입력을 해서 할당하는 방식이다.
- DHCP 동적 할당 방식에 비해 편리하다.
- 필요한 정보
- 자신이 사용할 수 있는 IP
- 자신의 네트워크의 서브넷마스크
- 자신의 게이트웨이
- DNS 주소
- 자신의 네트워크 구조를 어느정도 알고있어야 Static 방법을 사용할 수 있다.
- DNS는 입력하지 않으면 알아서 할당을 해준다.
DHCP 방식
- 클라이언트(자신 PC)가 DHCP서버에게 IP를 요청한다.
- 이후 DHCP가 현재 사용하지 않는 IP를 잠시 임대 해주는 방식이다.
- 같은 IP를 계속 부여하는 것이 아니고, 임대시간(IP Lease Time)동안 빌려주는 것이다.
- 항상 같은 IP가 아니라 그때 그때 동적으로 IP가 변경 될 수 있다.
IPv6
IPv4의 고갈 문제를 해결하기 위해 IPv6가 등장하였다.
총 128비트로 각 16비트씩 8자리로 각 자리는 ‘:’(콜론)으로 구분한다.
ex) 2001:0DB8:1000:0000:0000:0000:1111:2222
- 총 2^128 의 IP 주소를 만들어낸다.
IPv6 Datagram Format
IPv4에서 언급하지 않은 field만 설명한다.
pri(트래픽 클래스)
- 우선순위가 존재한다.
flow label
- 데이터그램의 flow을 인식하는 데 사용한다.
- flow의 개념은 명확하게 정의되지 않았다.
payload len
- 고정 길이 40바이트 패킷 헤더 뒤에 나오는 바이트 길이, unsigned Integer다.
next hdr
- data 필드가 전달될 프로토콜(TCP/UDP)
- IPv4의 upper layer 필드와 동일하다.
hop limit
- 라우터가 데이터그램을 전달할 때마다 1씩 감소한다.
- 0보다 작아지면 라우터는 datagram을 버린다.
- IPv4의 TTL과 비슷하다.
IPv4와의 차이
1. checksum 필드가 없다.
- DataLink Layer에서 오류를 검사하기 때문에 IP 패킷의 빠른 처리를 위해 삭제했다.
2. fragmentation(단편화) & reassembly(재결합)가 발생하지 않는다.
- IPv4는 라우터에서 단편화 & 재결합이 발생한다.
- 서로 다른 Link Layer Protocol 에서는 전달할 수 있는 프레임의 크기(MTU)가 모두 다르다.
- 따라서, 패킷이 MTU보다 큰 경우 단편화 & 재결합이 발생한다.
- 단편화 & 재결합 과정에는 시간이 소요된다.
- IPv6는 출발지와 목적지에서만 단편화 & 재결합이 발생한다.
- 패킷이 MTU 보다 클 때, 라우터는 ICMP 오류 메세지를 송신자에게 보낸다.
- 이후 송신자가 데이터그램의 크기를 줄여 다시 보낸다.
- 단편화 & 재결합 과정이 없어 시간을 단축할 수 있다.
그동안 IPv4를 사용했는데 어떻게 다른 크기인 IPv6를 적용시킬 수 있을까?
1. “flag day” 를 정한다.
- 모든 인터넷 장비를 동시에 종료한다.
- 이후 IPv4를 IPv6로 업데이트 하는 기간을 가진다.
→ 현실적으로 불가능하다.
2. Tunneling(터널링)을 한다.
Tunneling
두 IPv6 사이에 있는 IPv4 라우터들을 tunnel(터널)이라고 부른다.
- IPv6를 사용하는 장비(A와 B)끼리는 IPv6를 이용한다.
- IPv4를 사용하는 장비(C)를 만나면 IPv4의 데이터 필드에 IPv6의 정보를 넣는다.
- 출발지를 IPv4를 만나기 전 마지막 IPv6(B)로 변환한다.
- 도착지를 마지막 IPv4를 지난 IPv6(E)로 변환한다.
- 이 두 작업은 IPv4 장비를 속이는 작업이라고 생각하면 쉽다.
- E에 도착하면 E는 패킷을 확인하고 IPv6의 형태로 변환하여 원래 도착지(F)로 전달한다.
NAT(Network Address Translation) - 네트워크 주소 변환
NAT는 IPv4의 고갈 문제를 해결하기 위해 등장했다.
출발지 및 목적지 IP 주소와 TCP/UDP 포트 번호 등을 바꿔 재기록하며 데이터를 주고 받는 방법이다.
사용 이유
- IP 주소 절약
- NAT 기술을 사용하면 하나의 공인 IP로 여러 대의 호스트가 인터넷에 접속할 수 있다.
- IPv4의 주소 고갈을 어느정도 해결한다.
- 보안
- NAT 기술의 특성 상 IP 주소를 숨길 수 있다.
- 외부에서 라우터 내부의 사설 IP를 알 수 없기 때문에 공격당할 확률이 매우 낮다.
동작 원리
흔히 집에서 외부 서버에 접근할 때 공유기(게이트웨이)를 거치게 된다.
이 때 출발지를 사설 IP가 아닌 공인 IP로 변환한다. (서버는 사설 IP에 대한 정보가 없기 때문)
- Host → Gateway
- 패킷 헤더에 출발지와 목적지의 주소를 기록한다. (출발지 : 사설 IP 주소)
- Gateway → Server
- 게이트웨이는 외부로 나가는 패킷을 인식하면 출발지를 자신의 IP인 공인 IP 주소로 변환한다.
- 이 때 별도의 NAT 테이블에 정보를 보관한다.
- Server → Gateway
- 서버는 응답할 때 목적지 주소에 게이트웨이의 공인 IP 주소를 기록하여 전송한다.
- Gateway → Host
- NAT 테이블을 참조하여 최종 목적지인 호스트 사설 IP에 전달한다.
참고
도서 : Computer Networking : A top-Down Approach by James F. Kurose, Keith W. Ross
IP 할당 방식(Static, DHCP)과 DHCP 프로토콜
[이해하기] NAT (Network Address Translation) - 네트워크 주소 변환 | STEVEN J. LEE
TCP/IP 주소 및 서브넷 - Windows Client
'Computer Science > Computer Network' 카테고리의 다른 글
HTTP 상태 코드 (0) | 2023.04.06 |
---|---|
DHCP (0) | 2023.04.04 |
OSI 7 계층 (0) | 2023.04.03 |
TCP, UDP (0) | 2023.04.02 |
4-Way Handshake (0) | 2023.04.02 |