네트워크 계층의 가장 핵심적인 프로토콜이라고 할 수 있는 IP다.
IP의 목적과 특징
IP의 목적은 크게 주소지정과 단편화 2가지로 나뉜다.
- 주소지정: 네트워크 간의 통신 과정에서 호스트를 특정하는 것을 의미
- 단편화: 데이터를 여러 IP 패킷으로 올바르게 쪼개어 보내는것을 의미
IP는 신뢰할 수 없는 통신과 비연결형 통신이라는 중요한 특징을 가지고 있음
주소 지정과 단편화
주소지정은 IP 주소를 통해 이루어진다. 이는 IP 패킷 헤더를 통해 알 수 있다.
송신지 IP주소, 수신지 IP주소 필드
두 필드에는 송수신지를 식별할 수 있는 IP 주소가 명시된다.
하나의 IP 주소는 총 4바이트 크기로 구성되고 숫자당 8비트로 표현되므로 0~255 범위의 10진수 4개로 표기된다.
10진수는 (.)점으로 구분하는데 점으로 구분된 하나의 10진수를 옥텟이라고한다.
예) 192.168.0.1 이라는 IP주소가 있다면 192, 168, 0 ,1 각각이 8비트로 표현 가능한 옥텟임
MAC 주소는 택배 배송과정의 수신인과 발신인, IP주소는 수신 주소와 발신 주소에 빗댈수 있음.
패킷을 올바르게 전송하기 위해서는 MAC 주소와 IP주소가 모두 필요하다.
패킷의 송수신 과정에서 MAC 주소보다는 IP 주소가 우선적으로 활용된다.
라우터: 네트워크 계층에 속한 핵심장비로 전달 받은 패킷을 목적지까지 전달하는 역할을 수행한다.
라우터는 IP패킷을 전달할 최적의 경로를 결정하고 해당 경로로 패킷을 보낼 수 있어야 하는데 이 과정을 라우팅이라고 한다.
라우터는 IP 주소를 기반으로 패킷의 최적의 경로를 결정하여 목적지까지 전달하는 네트워크 장비임.
공유기도 라우팅을 수행할 수 있으므로 라우터의 일종이라고 볼 수 있음.
IP 단편화를 이해하려면 MTU라는 단위를 이해해야함.
MTU: 최대 전송 단위를 의미한다. 전송하고자 하는 IP 패킷의 크기가 MTU라는 단위보다 클 경우에는 패킷을 MTU 이하의 여러 패킷으로 쪼개서 전송하고 쪼개서 전송된 패킷들은 수신지에서 재조합된다.
일반적으로 MTU의 크기는 1500바이트다. MTU는 프레임을 통해 주고받을 수 있는 최대 페이로드의 크기라고 봐도 무방함
IP 패킷헤더에서 단편화와 관련된 필드는 식별자, 플래그, 단편화 오프셋이 있다.
1. 식별자: 특정 패킷이 어떤 데이터에서 쪼개진 패킷인지를 식별하기 위해 사용되는 필드이다. 같은 정보에서 쪼개진 패킷들은 같은 식별자를 공유하기 때문에 식별자를 통해 단편화되어 전송되는 패킷을 구분할 수 있음
2. 플래그: 3비트로 구성된 필드로 첫번째 비트를 제외한 2개의 비트는 DF와 MF라는 이름이 붙어있다. 첫번째 비트는 항상 0으로 설정되어 오늘날엔 사용되지않는다.
DF: IP 단편화를 수행하지 말라
MF: 단편화된 패킷이 더 있다
를 표시를 남기기 위한 비트임
3. 단편화 오프셋: 특정 패킷이 초기 데이터에서 얼마나 떨어져 있는지가 명시된 필드. 단편화 되어 전송되는 패킷을 목적지에서 재조합하기위해 패킷의 올바른 순서를 나타내는 데 사용된다.
신뢰할 수 없는 통신과 비연결형 통신
IP는 신뢰할 수 없는 프로토콜이자 비연결형 프로토콜이라고 말함
전송 계층의 주요 프로토콜인 TCP와 UDP의 존재 목적과도 직결됨.
신뢰할 수 없는 프로토콜: 패킷이 수신지까지 제대로 전송되었다고 보장하지 않는 프로토콜을 의미한다. 유실되거나 목적지에 순서대로 전송되지 않더라도 이에 대한 조치를 취하지 않는것
신뢰할 수 없는 프로토콜의 송수신: 신뢰할 수 없는 통신, 신뢰성이 낮은 통신, 최선형 전달이라고 불림
최선형 전달이라는 단어가 신뢰성이 높은 전송을 의미하는것처럼 보여도 어떠한 보장도 하지 않는 전송 특징임을 기억할것
IP 주소의 구조
네트워크 주소와 호스트 주소로 이루어져있다.
네트워크 주소는 네트워크 ID, 네트워크 식별자 등으로 불린다. 호스트가 속한 네트워크를 특정하기 위해 사용한다.
호스트 주소는 호스트 ID, 호스트 식별자 등으로 불린다. 네트워크에 속한 호스트를 특정하기 위해 사용
IP 주소에서 네트워크 주소를 표현하는 크기와 호스트를 표현하는 크기가 유동적일 수 있다.
- a의 경우는 호스트 주소에 24비트를 사용할 수 있기 때문에 상대적으로 네트워크당 많은 호스트를 IP 주소에 할당할 수 있다.
- c의 경우는 호스트 주소에 8비트를 사용할 수 있기 때문에 상대적으로 네트워크당 적은 호스트에 IP 주소를 할당할 수 있다.
클래스풀 주소 체계
클래스: 네트워크의 크기에 따라 유형별로 IP 주소를 분류하는 기준이다. 어떤 클래스에 속한 IP주소인지 알면 IP주소에서 네트워크 부분과 호스트 부분이 어느정도 크기인지 알 수 있음
클래스는 A,B,C,D,E 5개가 있음. D,E 클래스는 각각 멀티캐스트를 위한 클래스로 특수목적을 위한 예약된 클래스임.
실질적으로 사용되는 클래스는 A,B,C임
클래스풀 주소 체계: 클래스를 바탕으로 IP 주소를 관리하는 주소 체계
- A클래스의 네트워크 주소는 비트 0으로 시작해 1옥텟으로 구성되며 호스트 주소는 3옥텟으로 구성됨
상대적으로 가장 많은 호스트를 할당할 수 있는 클래스 - B클래스의 네트워크 주소는 비트 10으로 시작해 2옥텟으로 구성되며 호스트 주소는 2옥텟으로 구성된다.
- C클래스의 네트워크 주소는 비트 110으로 시작해 3옥텟으로 구성되며 호스트 주소는 1옥텟으로 구성된다.
클래스별 IP 주소 표현 가능 범위
- A 클래스: 0.0.0.0 ~ 127.255.255.255
- B 클래스: 128.0.0.0 ~ 191.255.255.255
- C 클래스: 192.0.0.0 ~ 223.255.255.255
첫 옥텟의 주소만 보고도 A,B,C 클래스 중 어떤 클래스에 속한 IP 주소인지 알 수 있음
앗찻차 네트워크/브로드캐스트 주소와 예약주소
호스트 주소 공간을 모두 사용할 수 있는것은 아니다.
호스트 주소가 전부 0인 IP, 호스트 주소가 전부 1인 IP 주소는 특정 호스트를 지칭하는데 사용 될 수 없다.
전자는 해당 네트워크 자체를 의미하는 주소로 사용되고, 후자는 브로드캐스트를 위한 주소로 사용되기 떄문임
특수목적을 위해 예약된 IP 주소도 있음
예약 IP 주소의 범위 | 사용 목적 |
0.0.0.0 ~ 0.255.255.255 | 이 네트워크의 이 호스트 지칭에 사용 |
127.0.0.0 ~ 127.255.255.255 | 루프백 주소로 사용 |
10.0.0.0 ~ 10.255.255.255 | 사설 네트워크 주소로 사용 |
172.16.0.0 ~ 172.31.255.255 | |
192.168.0.0 ~ 192.168.255.255 |
루프백 주소는 자기 자신을 가리키는 특별한 주소다. 가장 일반적으로 사용되는 루프백 주소는 127.0.0.1로 로컬호스트라고 부른다.
루프백 주소로 전송된 패킷은 자기 자신에게 되돌아오므로 자기 자신을 마치 다른 호스트인 양 간주하여 패킷을 전송할 수 있다.
클래스리스 주소 체계와 서브넷 마스크
클래스풀 주소 체계 하에서는 클래스별 네트워크 크기가 고정되어 있다. 클래스별 네트워크 크기가 고정되어 있을때는 고정된 크기 이외에 다른 크기의 네트워크를 구성할 수 없어 IP 주소가 낭비될 수 있다는 한계가 있음
예) A 클래스의 네트워크 하나당 할당 가능한 호스트 IP 주소는 1,600만개 이상이고 B 클래스 네트워크 하나당 할당가능한 호스트 IP 주소는 6만개 이상이다. 그런데 C클래스 주소에는 호스트에게 할당할 수 있는 IP 주소가 약 200개 정도이다.
만약 직원 300명이 사용할 컴퓨터들을 동일한 네트워크로 구성하고싶다면 클래스풀 주소 체계 하에서는 어쩔수없이 B클래스 주소를 이용해야함. -> 상당수의 IP 주소 낭비
이것을 해결하기 위해 나온것이 클래스리스 주소 체계임
- 클래스리스 주소체계: 클래스를 이용하지 않고 네트워크가 호스트를 구분하는 방식
클래스 리스 주소 체계에서는 네트워크와 호스트를 구분하는 수단으로 서브넷 마스크를 이용한다.
- 서브넷 마스크: IP 주소상에서 네트워크 주소를 1로 표기하고 호스트 주소를 0으로 표기한 비트열
- 서브네트워크: IP 주소에서 네트워크 주소로 구분할 수 있는 네트워크의 부분집합을 의미, 서브넷이라고 줄여부름
서브 마스크는 곧 서브넷을 구분하는 비트열인 셈이다.
서브네팅: 서브넷 마스크를 이용해 원하는 크기로 클래스를 더 잘게 쪼개어 사용하는 것
서브넷 마스크와 IP 주소간에 비트 AND 연산을 수행하면 IP 주소내의 네트워크 주소를 알아낼수있다
예) 192.168.200.102라는 IP 주소와 255.255.255.0이라는 서브넷 마스크를 비트 AND 연산을 수행한 결과인 192.168.200.0가 바로 네트워크 주소인 셈이다.
공인 IP 주소와 사설 IP 주소
공인 IP 주소: 전 세계에서 고유한 IP 주소. 인터넷을 비롯한 네트워크 간 통신에서 사용되는 IP 주소가 바로 공인 IP 주소임 공인 IP 주소는 ISP나 공인 IP 주소 할당 기관을 통해 할당 받을 수 있음
- 사설 IP 주소: 사설 네트워크에서 사용하기 위한 IP 주소를 말함. 사설 네트워크란 외부 네트워크에 공개되지 않은 네트워크를 의미.
- 사설 IP주소는 일반적으로 라우터를 통해 할당되기 떄문에 공유기를 중심으로 구성된 LAN 대부분은 사설 네트워크에 해당한다.
IP 주소 공간중에 사설 IP 주소로 사용하도록 예약된 IP 주소 공간이 있다.
IP 주소의 할당
크게 두가지 방법이 있다 하나는 정적할당 하나는 동적할당이다.
정적할당
직접 수작업으로 IP 주소를 부여한느 방식으로 정적할당을 통해 할당된 IP 주소를 정적 IP 주소라고한다.
- 게이트웨이: 일반적으로 서로 다른 네트워크를 연결한느 하드웨어적/소프트웨어적 수단을 의미함
- 기본게이트웨이: 호스트가 속한 네트워크의 외부로 나가기 위한 첫 기본 경로
기본 게이트웨이는 네트워크 외부와 연결된 라우터의 주소를 의미하는경우가 많음
DNS 주소: 호스트가 도메인 네임을 토대로 IP 주소를 알아내기 위해 질의하는 서버의 주소를 의미
IP 주소에 대응되는 기억할 수 있는 문자열로 호스트를 식별할 수 있으며 이를 도메인 네임이라고한다.
예) google.com, hanbit.co.kr등이 도메인 네임임
호스트가 도메인 네임을 토대로 이에 대응되는 IP주소를 알아내려면 <도메인 네임, IP 주소> 쌍으로 저장하는 서버에 질의해야함.
이 서버를 네임 서버, DNS 서버라고 부름
동적할당:DHCP
프로토콜을 통해 자동으로 IP 주소를 부여하는 방식이다. 동적할당을 통해 할당 된 IP 주소를 동적 IP 주소라고한다.
이 과정에서 흔히 사용되는 프로토콜이 DHCP임
IP 주소를 동적으로 할당받고자 하는 호스트는 DHCP 서버와 메시지를 주고받으며 동적 IP 주소를 할당받을 수 있다.
- DHCP 서버: 호스트에 할당 가능한 IP 주소 목록을 관리하다가, IP 주소 할당 요청을 받았을 때 IP 주소를 할당해주는 호스트
동적할당과 이를 통해 부여되는 동적 IP 주소 관련 기억해야할점
- 동적 IP 주소에는 사용 가능한 기간(임대기간)이 정해져있다.
- 동적 IP 주소는 할당받을때마다 다른 주소를 받을 수 있다.
DHCP로 할당받은 IP 주소는 사용할 기간이 정해져있고 사용되지 않을 경우 회수된다.
사용기간이 끝난 IP 주소는 DHCP주소로 반납되고 새롭게 IP 주소를 할당받는 경우 다른 IP 주소를 할당받을 수 있다.
DHCP를 통한 IP 주소의 동적 할당은 이런 점에서 IP 주소의 임대라고도 표현한다.
IP 주소의 임대 기간이 끝나기 전에 임대 기간을 연장할 수도 있다. 이를 임대갱신이라고 함.
임대갱신은 두 차례 수행되고 두번의 임대 갱신이 모두 실패하면 그때 IP 주소는 DHCP 서버로 반납됨
IP 전송 특징의 보완: ICMP
IP의 신뢰할 수 없는 비연결형 통신이라는 특징을 보완해야할 때가 있는데 이를 위한 방법에는 크게 2가지가 있다.
- 신뢰할 수 있는 연결형 통신을 지원하는 상위 계층의 프로토콜을 이용하는것
- 네트워크 계층의 프로토콜로 ICMP를 이용하는 방법
ICMP: IP 패킷의 전송 과정에 대한 피드백 메시지를 얻기위해 사용하는 프로토콜로 ICMP 메시지를 통해 패킷이 상대방에게 어떻게 전송되었는지를 알려줄 수있어 IP 전송의 결과를 엿볼 수 있음
유형 | 메시지 |
오류보고 | 네트워크 도달 불가 |
호스트 도달 불가 | |
프로토콜 도달불가, 수신지에서 특정 프로토콜을 사용할 수 없음 | |
포트 도달 불가 | |
단편화가 필요하지만 DF가 1로 설정되어 단편화할 수 없음 | |
TTL 만료 | |
네트워크 상의 정보 제공 | Echo 요청 |
Echo 응답 |
패킷이 하나의 라우터를 거칠때마다 TTL이 1씩 감소한다. 이때 TTL필드가 0이 되면 해당 패킷은 폐기되고 패킷을 송신한 호스트에게 [시간초과] ICMP 메시지가 전송된다.
홉: 패킷이 호스트 또는 라우터에 한 번 전달되는 것
TTL 필드 존재 이유는 무의미한 패킷이 네트워크상에 지속적으로 남아있는것을 방지하기 위함이다.
IP 주소와 MAC 주소의 대응 :ARP
상대 호스트의 IP 주소는 알고 MAC 주소를 모르는 상황에 사용되는 프로토콜이 ARP임
- ARP: IP와 MAC 주소를 함께 활용하는 통신 과정에서 동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 알아내는 프로토콜
IP 주소를 통해 모르는 MAC 주소를 알아내는 과정은 ARP 요청 메시지와 ARP 응답 메시지를 통해 이루어진다. ARP 요청은 브로드캐스트 메시지이다. 네트워크 내에 있는 모든 호스트에게 보내는 메시지라는 뜻.
ARP 메시지를 브로드캐스트한다는 것은
나 이 IP 주소 가지고 있는 호스트랑 통신하고싶은디 이 호스트 MAC 주소가 뭐야!!!!! 라고 외치는것.
ARP 요청 메시지는 브로드캐스트 메시지이기ㄷ 떄문에 네트워크 내 모든 호스트가 이를 수신한다.
호스트들은 ARP 요청 메시지에 포함된 IP 주소를 확인하고 자신이랑 관련이 없으면 무시하고 자신의 IP 주소일 경우에 ARP 응답 메시지를 전송한다.
호스트 입장에서는 ARP 요청 메시지와 응답메시지를 주고받으면서 알게된<IP주소, MAC주소> 쌍을 기억해두는게 좋다.
그래서 ARP를 활용하는 호스트는 ARP 테이블이라는 정보를 유지한다.
ARP 테이블은 <IP 주소, MAC 주소>로 구성된 표 형태의 정보이다.
<ip주소, mac주소> 쌍은 ARP 테이블에 추가되고 테이블 항목은 일정시간이 지나면 삭제된다. 임의로도 삭제 가능.
'cs' 카테고리의 다른 글
01. 데이터베이스 (0) | 2025.04.04 |
---|---|
04. 전송계층 - TCP와 UDP (0) | 2025.03.19 |
02. 물리 계층과 데이터 링크 계층 (0) | 2025.03.19 |
01. 네트워크 기본 구조 (0) | 2025.03.19 |
06.그래프 (0) | 2025.03.17 |