IP
LAN간의 데이터 통신을 위해서는 네트워크 계층 이상의 기술들이 필요하다. 이때 가장 중요한 프로토콜인 IP
중심으로 네트워크 통신 과정을 알아보겠다.
IP는 크게 주소 지정
, 단편화
두 개의 특징을 지닌다.
주소 지정은 네트워크 통신 과정에서 호스트를 특정화하는 의미를 지니며, 단편화는 데이터를 여러 패킷으로 쪼개어 보내는 것을 의미한다.
주소 지정
IP주소를 통해 주소를 지정하며, 주소 값은 IP 패킷 헤더에서 확인할 수 있다.
총 4바이트(32비트)의 크기로 구성되어 있다.
패킷 헤더에는 다양한 정보들이 들어 있다. 이 중에는 송신지 IP, 수신지 IP주소가 들어있으며 IP주소를 바탕으로 IP패킷을 전달하는 라우터
라는 장비가 있다.
IP패킷을 전달할 최적의 경로로 결정하고 전송하는 과정을 라우팅
이라고 한다.
IP 단편화
IP 단편화에서는 MTU(Maximum Transmission Unit)이라는 최대 전송 단위 기준이 있다.
이 MTU보다 패킷의 용량이 큰 경우에는 쪼개서 전송을 하게 된다. 이전에 말했듯이 최대 MTU 크기는 1500바이트이다.IP 패킷 헤더
에서 단편화와 관련된 필드는 식별자, 플래그, 단편화 오프셋 필드이다.
여기서는 경로 MTU
라고 하는 개념이 있는데 IP 단편화 없이 주고받을 수 있는 최대 크기 만큼 전송을 하는 개념이다.
IP의 단편화는 주요 특징이지만 사용하게되면 헤더의 추가 정보를 확인해야 하므로 불필요한 트래픽과 대역폭 낭비를 초래할 수 있어 잘 사용하지 않는다.
그래서 경로 MTU를 이용해 1500이 최대더라도 그 이하의 용량을 사용해서 IP단편화를 발생시키지 않는다.
- 식별자
- 특정 패킷이 어떤 데이터에서 쪼개짓 패킷인지 식별하기 위한 필드
- 같은 정보에서 쪼개진 패킷들은 같은 식별자를 공유하기 때문에 식별자를 통해 단편화되어 전송되는 패킷을 구분할 수 있다.
- 플래그
- 3비트로 구성된 필드로 첫 번째 비트는 항상 0으로 설정되어 사용되지 않는 비트이다. 두번째 비트는 DF(Don't Fragment)로 IP 단편화를 수행하지 말아라 라는 의미를 갖는 비트이고 , MF(More Fragment)는 단편화된 패킷이 더 있다는 표시를 남기기 위한 비트이다.
- 단편화 오프셋
- 특정 패킷이 초기 데이터에서 얼마나 떨어져 있는지가 명시된 필드로, 단편화되어 전송되는 패킷을 목적지에서 재조합하기 위한 순서가 명시되어 있다.
IP 패킷 헤더
데이터 프레임에서 프레임 페이로드(데이터)에 담겨있는 IPv4 패킷은 헤더와 페이로드로 다시 나뉜다.
프레임도 헤더와 페이로드, 트레일러로 나뉘듯이 IPv4 패킷도 헤더와 페이로드를 갖고 있다고 보면 된다.
신뢰할 수 잆는 통신과 비연결형 통신
IP는 신뢰할 수 없는 프로토콜로 패킷이 수신지까지 온전히 전송되었다는 것을 보장하지 않는 프로토콜이다. 이를 최선형 전달
이라고도 부른다.
또 IP는 비연결형 프로토콜
이라고도 부른다. 패킷을 주고받기 전에 사전연결과정을 거치지 않는 것이다.
상대 호스트의 수신 여부를 판단하지 않고 일단 수신지를 향해 패킷을 전송한다.
IP 주소 구조
하나의 IP주소는 0~255 범위의 10진수 4개(32비트)로 표기되는 구조를 갖고 있다.
IP 주소는 또한 네으퉈크 주소와 호스트 주소로 이루어져 있다.
네트워크 주소는 네트워크 식별자로 불리며, 호스트가 속한 네트워크를 특정하기 위해 사용된다.
호스트 주소는 호스트 ID, 호스트 식별자 등으로 불리며, 네트워크에 속한 호스트를 특정하기 위해 사용된다.
각 네트워크 주소와 호스트 주소는 유동적으로 공간이 바뀔 수 있다는 특징이 있다.
클래스풀 주소 체계
호스트 주소를 너무 크게 할당하면 IP 주소가 낭비될 수 있고, 너무 작게 할당하면 부족할 수도 있다. 이를 해결하기 위해 IP주소의 클래스라는 개념이 생겨났다.
클래스는 AE까지 총 5개의 클래스로 분류된다. 이 중 D,E 클래스는 각각 멀티캐스트를 위한 클래스로, 특수한 목적을 위해 예약된 클래스이기 때문에 실질적으로 사용되는 클래스는 AC클래스이다.
이 클래스를 기준으로 IP주소를 관리하는 주소 체계를 클래스풀 주소 체계라고 한다.
클래스별 첫 옥텟 주소만 보고도 어느 클래스에 속한 IP인지 알 수 있다.
- A Class
- 네트워크 주소 1옥텟('0'으로 시작)
- 호스트 주소 3옥텟
- 0.0.0.0~ 127.255.255.255
- B Class
- 네트워크 주소 2옥텟('10'으로 시작)
- 호스트 주소 2옥텟
- 128.0.0.0 ~ 191.255.255.255
- C Class
- 네트워크 주소 3옥텟('110'으로 시작)
- 호스트 주소 1 오텟
- 192.0.0.0 ~ 223.255.255.255
네트워크/브로드캐스트 주소와 예약 주소
호스트가 주소 공간의 모든 공간을 사용할 수 있진 않다. 호스트 주소가 전부 0인 IP주소와 호스트 주소가 전부 1인 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.255 / 192.168.0.0 ~ 192.168.255.255 : 사설 네트워크 주소
클래스리스 주소화 서브넷 마스크
클래스풀 주소 체계에서는 고정된 클래스별 네트워크 크기가 있어서 다른 크기의 네트워크를 구성할 수 없기에 IP주소가 낭비될 수 있다는 단점이 있었다.
이를 해결하기 위해 더 정교하고 유동적으로 영역을 나눌 수 있는 클래스리스 주소 체계
가 생겨났다.
말 그대로 클래스가 없이 네트워크와 호스트를 구분하느 방식이다. 여기서 서브넷 마스크
란 개념을 사용하는데 IP주소에서 네트워크 주소를 1로 표기하고, 호스트 주소를 0으로 표기한 비트열을 ㅁ라한다.
여기서 서브 네트워크
는 IP주소에서 네트워크 주소로 구분할 수 있는 네트워크의 부분집합을 의미하며, 서브넷 이라고도 한다.
이러한 서브넷 마스크를 원하는 크기로 더 잘게 쪼개어 사용하는 것은 서브네팅
이라고 한다.
클래스풀 주소 체계에서는 A클래스에 8 비트 B클래스에서 16비트, C클래스에서 24비트로 이루어져 있기 때문에 기본 서브넷 마스크는 다음과 같다.
- A클래스 : 255.0.0.0(11111111.00000000.00000000.00000000)
- B클래스 : 255.255.0.0(11111111.11111111.00000000.00000000)
- C클래스 : 255.255.255.0(11111111.11111111.11111111.00000000)
서브넷 마스크와 IP주소간의 AND연산을 수행하면 IP주소 내의 네트워크 주소를 알아낼 수 있다.
위 서브넷 마스크 표기법과 다르게 CIDR 표기법을 사용해서 IP주소/서브넷마스크상의 1의 개수로 표현할 수도 있다.
192.168.20.3/30이라고 표기된 서브넷 마스크가 있다면 /30은 서브넷 마스크 상에서 1이 총 30개 있다는 것을 의미하며 '11111111.11111111.11111111.11111100', '255.255.255.252'와 같은 표기로 바꿀 수 있다.
공인 IP , 사설 IP
공인 IP주소는 전 세계에서 고유한 IP이다. 인터넷을 비롯한 네트워크 간 통신에서 사용되는 IP주소가 공인 IP이다.
공인 IP 주소는 ISP나 공인 IP주소 할당 기관에서 받을 수 있다.
사설 IP 주소는 사설 네트워크에서 사용되는 주소이다. 외부 네트워크에 공개되지 않은 네트워크로 대부분 라우터를 통해 할당되기 때문에 공유기 중심 LAN은 대부분 사설 네트워크라고 보면 된다.
이전에도 말했듯이 예약된 IP 주소 범위에 속하는 IP주소는 사설 IP주소로 간주하기로 약속된 주소이다.
사설 IP주소는 해당 호스트가 속한 사설 네트워크에서만 유효한 주소이므로 IP주소는 다른 네트워크와 얼마든지 중복될 수 있다.
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
정적 할당
정적 할당은 직접 IP주소를 부여하는 방식으로, 정적 할당을 통해 할당된 IP주소를 정적 IP주소라고 한다.
정적 IP주소를 부여하기 위해서는 일반적으로 IP주소, 서브넷 마스크, 게이트웨이 주소, DNS 주소등이 필요하다.
여기서 게이트웨이
는 일반적으로 서로 다른 네트워크를 연결하는 하드웨어/소프트웨어적 수단을 말한다. 그 중 기본게이트웨이는 호스트가 속한 라우터(공유기)의 주소를 말하는 경우가 많다.
DNS주소는 호스트가 도메인 네임을 토대로 IP주소를 알아내기 위해 질의하는 서버의 주소를 의미한다. 기본적으로 호스트끼리 패킷을 주고받기 위해서 IP주소가 사용되지만, 통신을 주고받는 모든 호스트의 IP를 기억하기는 어렵기 때문에 IP주소에 대응되는 문자열로 호스트를 식별할 수 있게 했다.
이를 도메인 네임
이라고 하며 호스트가 도메인 네임을 토대로, 이에 대응되는 IP주소를 알아내려면 <도메인 네임, IP 주소>쌍을 저장
하는 서버에 질의해야한다.
이 서버를 DNS 서버(네임 서버)라고 한다.
동적 할당
동적 할당은 동적으로 IP 주소를 부여하는 방식이며 가장 흔히 사용되는 프로토콜이 DHCP(Dynamic Host COnfiguration Protocol)이다.
IP 주소를 동적으로 할당받고자 하는 호스트는 DHCP 서버와 메시지를 주고받으며 동적 IP주소를 할당받을 수 있다.
DHCP 서버는 호스트에 할당 가능한 IP주소 목록을 관리하며, IP주소 할당 요청을 받았을 때 IP주소를 할당해주는 호스트이다.
ICMP
IP는 신뢰할 수 없고 비연결형 프로토콜이라고 했었다. 이를 보완할 수 있는 방법으로 두 가지가 있는데 첫 번째로 TCP
이다. 신뢰할 수 있는 연결형 프로토콜을 통해 패킷을 송수신하면 신뢰성과 연결형 통신을 보장받을 수 있다.
이 TCP는 상위 계층 프로토콜이다.
두 번째 방법으로는 ICMP(Internet Control Manage Protocol)이다. IP 패킷의 전송 과정에 대한 피드백 메시지를 얻기 위해서 사용하는 프로토콜로, 메시지를 통해 패킷이 상대방에게 어떻게 전송되었는지 알 수 있다.
ICMP 메시지는 크게 전송과정에서 발생한 오류 보고와 네트워크에 대한 진단 정보로 유형을 나눌 수 있다.
ARP
Address Resolution Protocol로 IP주소와 Mac주소를 함께 활용하는 통신과정에서 동일 네트워크 내에 있는 송수신 대상의 IP주소를 통해 MAC주소를 알아내는 프로토콜이다.
만약 IP주소를 통해 MAC 주소를 알아내야 하는 상황이 생길때 이 ARP를 사용한다.
MAC주소를 알아내는 과정은 ARP 요청 메시지와 응답 메시지를 통해 이루어진다. 브로드캐스트 방식이 메시지이며 요청 메세지에는 알고 싶은 MAC주소에 대응되는 IP가 들어있다.
브로드캐스트를 통해 메세지를 받은 호스트들중 동일한 IP 주소가 있을 경우 ARP응답 메세지를 전송하여 MAC 주소를 알 수 있다.
이때 호스트 입장에서 ARP요청 멧지와 응답 메세지를 주고 받으며 알게 된 <IP 주소, MAC 주소> 쌍을 기억해두는 것이 좋다.
그렇지 않으면 또 브로드캐스트 타입의 메세지를 보내야 하기 때문이다. 이때 <IP 주소, MAC 주소>를 저장하는 테이블을 ARP 테이블
이라고 한다.
'면접 준비 > Network' 카테고리의 다른 글
[CS 면접 지식 - Network] 전송 계층 (0) | 2025.01.24 |
---|---|
[CS 면접 지식 - Network] 물리 계층 (0) | 2025.01.24 |