본문 바로가기
Learning-log -CS/Network

네트워크 - 3계층 IP주소와 프로토콜(ARP, IPv4, ICMP)(2022.09.14)

by why제곱 2022. 9. 15.

1. 3계층 네트워크 계층


3계층은 다른 네트워크 대역, 멀리 떨어진 곳에 존재하는 네트워크까지 데이터를 전달할 때 제어하는 역할을 한다.

LAN과 LAN을 연결시켜주는 것이 3계층의 역할이다. 2계층이 같은 네트워크 대역 내, 즉 바로 옆에 있는 노드들에게 데이터를 전송하기 위한 것이었다면 3계층은 출발지에서 목적지가 같은 네트워크 대역이 아닐 때 데이터를 전송하기 위한계층인 것이다.

3계층의 대표적인 장비는 라우터가 있다. LAN과 LAN을 연결하려면 2계층의 스위치 장비만으로는 서로 다른 네트워크 대역을 나누고 통신할 순 없기 때문에 반드시 라우터가 필요하다.

네트워크 계층의 데이터는 패킷(packet)이라고 부른다.

 

 

 

2.  IP주소


1) 개념

 

IP주소는 3계층에서 사용하는 주소들 중 대표적인 주소이다. cmd에서 IP주소를 확인해보려면 ipconfig를 입력해보면 자신의 PC에 할당된  IP주소를 알 수 있다. 이 때 IPv4 주소 뿐만 아니라  서브넷 마스크, 기본 게이트웨이도 함께 확인할 수 있다. 이 둘은 다른 곳과 통신하기 위해 꼭 필요한 요소다.

 

IP주소는 4byte이며 10진수로 써서 사용이며 총 4개의 숫자로 이루어진다. 그래서 각 자리의 숫자가 3자리이더라도 255보다 큰 수는 사용할 수 없다.  

 

 

 

2) Classful IP 주소

IP주소가 처음 생겼을 때는 위 표의 기준대로 IP주소의 클래스를 나누어 사용하였다. 위 시작주소와 마지막 주소를 2진수로 바꿔보면 네트워크 구분에 해당되는 숫자의 범위만 해당된다. 

각 클래스의 네트워크 구분지점 까지는 네트워크 대역을 구분하는 데에 사용되고 나머지는 그 안에 속해있는 각자의 PC들을 구분하는 데 사용하였다. B클래스는 A클래스보다는 네트워크 대역을 구분할 수 있는 숫자는 많지만 그 안에 속할 수 있는  PC의 수는 줄어들게 된다. 그래도 꽤  큰 클래스에 해당된다. 이렇게 A클래스에서 아래 클래스로 갈 수록 구분할 수 있는 네트워크 대역은 늘어나고 그 안에 속할 수 있는 PC의 수는 줄어들게 된다. 

D클래스는 멀티캐스트를 위해 남겨둔 IP주소이다. 

E클래스는 실험용으로 남겨둔 IP주소이다.

 

이렇게 사용하다보면 특히 A클래스에서는 네트워크 대역을 구분하기에는 부족하고 하나의 네트워크 대역에 속할 수 있는 PC들의 수는 2의 24제곱이므로 그 수가 너무 많아 IP주소를 낭비하는 사태가 발생한다. 

특히 컴퓨터가 발전하면서 그 사용량이 엄청나게 증가했고 그러면서 IP주소를 낭비할 수 없는 지경에 이르렀다.  이는 다음 IP주소 체계가 등장하게 되는 계기를 제공한다.

 

 

3) Classless IP주소

 

이는 IP주소의 낭비를 줄이기 위해 클래스로 IP주소를 나누지 않고 하나의 큰 네트워크를 여러개의 작은 네트워크로 구분해서 사용하는 방법이다.

여기서 서브넷 마스크가 등장하는데, 서브넷 마스크는 네트워크 대역을 어디서부터 구분할 건지 지정한 값을 말한다.

따라서 IP주소는 항상 서브넷 마스크와 함께 사용하게 된다.

IP주소는 2진수로 표기했을 때 그 의미가 더 잘 드러난다. 서브넷 마스크의 경우 2진수로 표현했을 때 항상 1로 시작하고 1만 계속 나오다가(1과 1사이에 0이 들어올 수는 없다.) 네트워크 대역을 구분할 지점에 처음으로 0이 등장한다.

 

 

4) 사설 IP와 공인IP

 

공인IP란 네트워크 통신망이랑 통신할 때 사용하는 IP주소이고, 사설IP란 같은 네트워크 대역에서 사용하는 IP주소이다. 사설 IP대역에 있는 PC들이 네트워크 내에서 통신할 때엔 무조건 공인IP 하나로 바뀌어서 통신한다.  이를 통해 IP주소 문제를 해결하게 된 것이다.

사설IP주소와 공인IP주소는 CMD에서 ipconfig 명령어를 입력했을 때 확인할 수 있는 IP주소(사설IP주소)와 웹 사이트에 내 IP주소를 검색하여 확인할 수 있는 IP주소(공인IP주소)가 다른 것을 통해 각각 확인해볼 수 있다.

또한 실제 네트워크 세상의 외부 네트워크 대역에서는 공인 IP만 확인되고 사설 IP 대역은 보이지 않는다.

 

 

5) 특수한 IP주소

 

- 0.0.0.0 : Wildcard 

나머지 모든 IP . "나머지"라는 단어가 매우 중요하다. 그냥 모든 IP주소를 말하는 것이 아닌, 사용하고 있는 IP주소가 아닌 "나머지"를 의미한다.

 

- 127.0.0.1 : 자기 자신

 

- 게이트웨이 주소 : 사설IP에서 공인IP(외부)으로 나갈 때 필요한 IP주소. 

 

 

 

3.  3계층 프로토콜


1) ARP프로토콜

 

같은 네트워크 대역에서 통신을 할 때 필요한 MAC주소를  IP 주소를 이용해 알아오는 데에 사용되는 프로토콜. 

28byte

 

- 구조 

▶ Hardware type : 2계층에서 사용하는 프로토콜의 타입을 의미한다. 대부분 이더넷 프로토콜로 16진수로 0001이 많이 온다. (이더넷 프로토콜을 의미하는 값이 16진수로 0001)

 

Protocol type : Source Protocol Addresss의 타입을 의미하며 대부분 IPv4를 사용하므로 0800이 오는 경우가 많다.

 

Hardware Address Length : MAC주소의 길이를 의미하며 MAC주소는 6 byte이므로 06이 들어간다.

 

Protocol Address Length : IPv4 주소의 길이를 의미하며 4byte이므로 04가 들어간다.

 

Opcode : Operation code를 의미하며 상대방의 MAC주소를 요청 중인지 응답 중인지에 대한 정보가 들어간다. 요청할 때는 0001, 응답할 때는 0002가 들어간다.

 

▶ Source Hardware Address : 출발지의 물리적인 주소. 즉 출발지의 MAC주소를 의미한다.

 

Source Protocol Address : 출발지의 IP 주소

 

Destination Hardware Address : 목적지의 MAC주소

 

Destination Protocol Address : 목적지의 IP주소

 

 

 

- 통신과정

 

 A컴퓨터가 B컴퓨터의 IP주소는 알지만 MAC주소를 모르는 상태일 때.

 

① ARP요청 프로토콜 만들어 (이더넷 + APR프로토콜) 로 캡슐화하여 보낸다.

 

이 때, 한가지 의문이 생긴다. ARP주소는 상대방의 MAC주소를 알지 못해 알아내기 위한 프로토콜인데 구조에 목적지의 MAC주소가 들어가 있다. 마찬가지로 이더넷 프로토콜에도 목적지 MAC주소가 들어간다. 이 때는ARP 프로토콜의  MAC주소를 "00 00 00 00 00 00" 으로, 이더넷 프로토콜의 목적지 MAC주소에는" FF FF FF FF FF FF" 로 임의로 채워놓고 보내게 된다. 

 

② 같은 네트워크 대역의 모든 노드들은 목적지 MAC주소를 확인 후, Broad cast MAC주소인 걸 확인 후, 3계층 프로토콜을 확인한다. 

 

③ 3계층 구조의 IP주소와 각자 PC의 IP주소가 일치한지 확인 후, 일치하지 않으면 버리고 일치하면 응답을 한다.

이 때, 응답 ARP 프로토콜에 자신의 MAC주소를 입력하여 보낸다.

 

④ B컴퓨터의 응답을 받은 A컴퓨터는 B컴퓨터의 MAC주소를 알게 되고 이를 ARP 캐시테이블에 등록하여, 이후 다시 통신할 상황이 생기면  캐시테이블에서 B컴퓨터의 MAC주소를 찾아 통신한다.

 

 

cf. 통신 했던 컴퓨터들의 주소는 ARP테이블에 남아 있다. 하지만 일정 시간이 지나면 없어져서 다시 ARP 프토콜을 이용해 MAC주소를 알아오게 된다.

 

2)  IPv4 프로토콜

 

WAN에서 통신할 때 사용하는 프로토콜

네트워크 상에서 데이터를 교환하기 위한 프로토콜이다. 정확한 전달을 보장하지는 않는다.(이 역할은 4계층이 한다.) 따라서 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성이 있다.

 

 

- 구조

▶ version : 무조건 4가 들어간다. ( IPv4이므로)

 

▶ IHL(Header Length) : 헤더의 길이로 실제 Byte 값 / 4 값을 넣는다. (IP Option의 길이에 따라 크기가 달라지므로)

 

▶ TOS : 0으로 비워져 있다.

 

▶ Total Length : 뒤 페이로드까지의 길이가 들어간다.

 

▶ 쪼개진 데이터를 알아볼 수 있게 하는 값

  •  Identification  : 이 값이 같으면 같은 데이터임을 의미. 패킷이 뒤섞였을 때 같은 데이터임을 알아보게 하는 값.
  •  IP Flags : 3bit. 첫번째 값은 사용x. 두번째 값은 하나로 묶어 보낼 때 1 . 세번 째 값은 조각화해서 보낼 때 1이 입력된다. 즉, 데이터의 조각화 여부를 알 수 있다.
  • Fragment Offset : 데이터 순서를 표현하는 값. 데이터 패킷은 보낼 때 순서대로 보내더라도 받는 쪽에서는 뒤죽박죽 섞여서 받을 수 있다. 따라서 순서를 알아볼 수 있게 Offset을 지정한다.( 시작부분으로부터 얼마만큼 떨어져있는지의 값을 넣는다.) (그림 속 오타가 있다 ㅠㅠ .Fragment Offset이다..) 

▶ Time To Live(TTL) : 패킷이 살아있을 수 있는 시간을 지정한다. TTL이 지정되어 있지 않은 상태에서 데이터를 보내는 중간 장치에 목적지가 잘못 설정되어 패킷이 계속 순환되는 경우 네트워크 패킷이 계속 쌓이는 문제가 발생할 수 있다. 이 때 계속 패킷이 쌓이는 것을 방지하기 위해 언젠가 없어지도록 TTL을 설정해야 한다.

추가로, TTL 값을 가지고 운영체제를 확인할 수도 있다.( Window : 128 / 리눅스 64)

 

▶ Protocol : 상위 Protocol이 ICMP, TCP, UDP 중 어떤 건지에 대한 값이 입력된다.( ICMP : 01 / TCP : 06 / UDP : 07) 

 

▶ Header Checksum : 이 헤더에 오류가 있는지 확인하는 부분이다.

 

▶ Source Addresss : 

 

▶ Destination Address 

 

▶ IP Options : 최대 40byte까지 option이 추가될 수 있다.

 

 

3) ICMP프로토콜

 

Internet Control Message Protocol 의 약자. 

IP 패킷 전송 중에 발생하는 에러에 대한 메시지를 전송하거나 네트워크 상태를 진단해주는 프로토콜.

Type과 Code를 통해 오류메시지를 주고받는다.

 

- 구조 

 

▶ Type : ICMP 메시지의 유형(대분류)

 

▶ Code :  Type의 세부내용(소분류)

 

▶ Checksum : ICMP 메시지의 오류검사를 위한 값

 

▶ Additional header field : Type에 따라 추가되는 헤더로, 사용하지 않을 경우 0으로 가득 차 있다.

 

▶ Othe message specific information : 오류에 관한 메시지(데이터)

 

 

- 주요 Type과 오류 메시지들

 

 

 

4. 라우팅 테이블


네트워크 상의 목적지까지 거리와 가는 방법 등을 명시하고 있는 테이블

현실에 비유하면 길을 찾기 위한 지도에 해당된다.

 

데이터를 어디로 보내야하는 지 설정되어야 모르는 네트워크 대역까지 데이터를 전송할 수 있다.

 

 


본 게시글은 따라하면서 배우는 IT님의 영상을 보고 학습한 후 복습&추가 공부한 내용을 작성한 학습기록입니다.

혹시 내용 중 오류가 있다면 댓글 남겨주시면 수정하겠습니다.

 

[따라學IT] 01. 네트워크란 무엇인가? - YouTube