[Network] 네트워크 주소 체계(Port, MAC, IP Address)와 DNS
네트워크 주소 체계
우선 네트워크에서 사용되는 Port, MAC, IP 등 주소의 종류와 주소 형식 체계에 대해서 살펴보자
Port
컴퓨터 내에서 특정 프로세스를 식별하는 데 사용 -> 같은 IP 주소 상의 호스트들을 구분
TCP/IP 프로토콜에서는 포트 번호를 사용하여 특정 프로세스나 서비스를 식별한다. 예를 들어, 웹 서버는 보통 80번 포트를 사용한다.
포트 번호는 랜덤하게 생성되며, 특정 서비스에 대한 예약된 포트 번호를 제외하고 호스트의 프로세스에 할당된다.
Physical Addressing (MAC Address)
물리적 주소 체계는 네트워크에서 데이터 링크 계층에서 사용되며, 네트워크 인터페이스 카드(NIC)에서 실제로 사용되는 주소이다.
MAC(Media Access Control) 주소로 알려져 있다.
MAC 주소는 네트워크 장비가 네트워크에서 유일하게 식별되도록 하는 6바이트 길이의 고유한 주소이며 네트워크 어댑터에 영구적으로 할당되고 제조사에 의해 NIC에 할당될 때 고유하게 부여된다.
06 : 01 : 02 : 01 : 2C : 4B
MAC 주소는 보통 12자리의 16진수로 표현되며, 각각의 바이트는 콜론(:)으로 구분된다.
라우팅 및 데이터 전송에 관련된 모든 네트워크 장비는 이 MAC 주소를 사용하여 데이터를 올바른 위치로 전송한다.
즉 데이터 링크 레이어에서 네트워크 장비를 고유하게 식별하고, 데이터가 올바른 목적지로 전달되도록 할 때 사용된다.
MSB/LSB : 첫번째 바이트 06 -> 비트 변환 시 00000110 : 첫 번째 비트인 0이 MSB, 끝 비트인 0이 LSB
- LSB = 0이면 Unicast(목적지가 하나),
- LSB = 1이면 Multicast(목적지가 여러개)
Prefix : NIC 혹은 OUI, 왼쪽의 3byte가 이를 나타냄.
- OUI는 네트워크 인터페이스 카드(NIC)를 제조하는 조직 또는 회사를 식별하는 고유한 식별자로 MAC 주소를 가진 장치의 제조사를 식별할 수 있다. Apple, Intel 등의 각각의 제조사는 고유한 OUI를 가지고 있다.
Broadcast Address : 모든 비트가 전부 FF인 경우. 네트워크 상의 모든 장치에 데이터를 전송할 때 사용된다.
Logical addressing (IP Address)
주소를 지리적 위치가 아닌 논리적인 개념으로 할당한다.네트워크에서 각 장치를 식별하기 위해 사용되는 주소 체계로서 네트워크 계층에서 사용된다. 인터넷 프로토콜(IP) 주소가 그 예이다.
IPv4
라우터 장비의 인터페이스에 할당된 32비트 주소. 같은 시간에 다른 인터페이스에 할당 불가능. 동시에 유일해야 한다. 만약 같은 주소가 동시에 할당되면 충돌이 일어난다.
0.0.0.0 - 255.255.255.255 까지의 형태로 사용된다. 따라서 사용 가능한 주소는 2^32개이다.
Dotted-decimal-notation : 실제로 decimal이지만 이진수를 십진화해서 얻음 그리고 점을 찍어서 표현한다.
117.16.66.64
IP 주소는 네트워크 주소와 호스트 주소로 구분된다.
네트워크 주소 : 호스트들을 모은 네트워크를 지칭한다. 네트워크 주소가 동일한 호스트들이 속하는 네트워크를 로컬 네트워크라고 한다.
호스트 주소 : 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소이다.
서브넷 마스크 : IP 주소의 네트워크 부분과 호스트 부분을 구분하기 위해 사용되는 32비트 숫자이다. 서브넷 마스크는 일반적으로 255.255.255.0과 같은 형태로 표현되며, IP에서 네트워크 주소는 서브넷 마스크에서 1로 이루어진 부분이다.
게이트웨이 : 네트워크 간 통신 시 맨 처음 진입하는 라우터의 주소. 117.16.43.254처럼 보통 254로 끝난다.
<예시 1>
서브넷 마스크 : 255.255.255.0 ->11111111.11111111.11111111.00000000
IP 주소 :117.16.66.64 -> 01110101.00010000.01000010.01000000
<예시 2>
서브넷 마스크 : 255.255.254.0 ->11111111.11111111.11111110.00000000
IP 주소 :117.16.66.64 -> 01110101.00010000.01000010.01000000
(네트워크 주소, 호스트 주소)
IPv6
IPv4 주소 공간은 32비트로 제한되어 있어서, 인터넷의 확장과 기기 수 증가로 인해 주소가 고갈되는 문제가 발생했다. 이를 극복하기 위해 IPv6는 128비트 주소 공간을 제공하여 엄청난 양의 고유한 주소를 제공하였다.
IP Address의 할당 방법
1. Manual 할당(ex PC) : 임의로 정해서 주소 할당시킨다. -> 수동으로 해야하는 번거로움
2. Dynamic 할당(ex 노트북) : DHCP 프로토콜이 주소를 자동으로 할당 시켜준다. 필요할 때마다 주소 할당
Manual IP configuration의 번거로움을 피할 수 있고 IP주소는 Location과 연관이 있어서 장소에 따라 바뀌는 것이 유용하다.
Socket Addressing
네트워크 상에서 프로세스를 식별하기 위해 사용된다. 소켓은 통신하는 두 호스트 간에 열리는 가상의 통신 엔드포인트로, IP 주소와 포트 번호로 식별된다.
보통 "IP주소 : 포트번호"의 형식을 가진다.
Destination Addressing
DA(Destination Addressing)은 통신 중에 데이터를 보내는 데 명시적으로 사용된다.
IP 주소와 MAC 주소는 네트워크 통신에서 목적지 주소를 식별하는 데 사용되며, 이는 Destination Addressing의 일부분이다.
- IP 주소 : 네트워크 위치
- MAC 주소 : 물리적 장치를 식별
Specific Addressing
네트워크 통신에서 특정한 목적지나 그룹에 대한 특정 주소를 지정하는 것을 의미한다. 이는 통신을 보다 명확하고 효율적으로 관리하기 위해 사용하며, DNS가 예시가 될 수 있다.
DNS (Domain Name System)
DNS(Domain Name System)는 인터넷 상에서 도메인 이름과 IP 주소를 매핑하는 시스템이다.
흔히 인터넷 창에 검색하는 en.wikipedia.org라는 주소는 DNS 주소를 의미하며, 실제로는 해당 주소에 해당하는 IP 주소를 찾아서 자원에 접근하게 되는 것이다.
DNS는 계층적 Namespace를 잘 활용한 사례로 볼 수 있으며 아래의 내용을 참고해도 좋을 것 같다.
https://sjh9708.tistory.com/158
DNS 동작 방식
1. 사용자의 요청: 사용자가 웹 브라우저에 "https://en.wikipedia.org"를 입력하여 해당 웹 사이트에 액세스하려고 시도한다.
2. 로컬 DNS 질의: 사용자의 컴퓨터는 우선 로컬 DNS 서버에 "https://en.wikipedia.org"에 대한 IP 주소를 찾기 위해 질의를 보낸다.
- 로컬 DNS 서버는 사용자의 컴퓨터나 라우터와 같은 네트워크 장치에 설정되어 있다.
- 캐싱 : 만약 로컬 DNS 서버가 해당 도메인에 대한 주소 정보를 이전에 3~6 과정을 거쳐 가져온 적이 있다면 바로 반환한다. 만약 캐싱되지 않아 알 수 없는 도메인이라면 3~6 과정을 거친다.
사용자 컴퓨터: "https://en.wikipedia.org의 IP 주소는 무엇입니까?"
로컬 네임 서버: "모르겠습니다. 하지만 알고 있는 네임 서버에 확인해 보겠습니다."
3. 루트 DNS 서버 질의: 먼저 최상위 레벨 도메인(Top-Level Domain, TLD) 서버의 주소를 찾기 위해 루트 DNS 서버에 질의를 보낸다. -> ".org"의 TLD 서버의 IP 주소를 반환한다.
- 루트 DNS 서버는 DNS의 최상위에 위치한 서버이다. 이 서버들은 전 세계적으로 분산되어 있으며, 모든 DNS 쿼리의 시작점 역할을 한다.
로컬 네임 서버: "https://en.wikipedia.org의 IP 주소는 무엇입니까?"
루트 네임 서버: ".org의 TLD 서버 주소입니다."
4. TLD 서버 질의: TLD 서버에 질의하여 권한 있는 도메인 서버의 IP 주소를 가져온다. -> TLD 서버는 "wikipedia.org"의 권위 있는 도메인 서버의 IP 주소를 반환한다.
- TLD 서버 : 최상위 도메인(Top-Level Domain, TLD)을 관리하는 서버. 특정 최상위 도메인에 대한 DNS 정보를 저장하고 관리(.com, .net, .org, .edu, .gov, .info 등..)
로컬 네임 서버: "https://en.wikipedia.org의 IP 주소는 무엇입니까?"
TLD .org 서버: "wikipedia.org의 권한 있는 서버 주소입니다."
5. 권한 있는 도메인 서버 질의: 권한 있는 도메인 서버에 질의하여 "en.wikipedia.org"의 IP 주소를 질의한다 -> 권한 있는 도메인 서버는 "en.wikipedia.org"의 IP 주소를 반환한다.
- 권한 있는 DNS 서버 (Authoritative DNS Server) : 각 ISP(가정, 기업 등 인터넷 서비스 제공자)는 Authoritative DNS Server을 운영한다. 위임 권한을 가지고 있는 도메인에 대해서만 응답 해주는 DNS 서버를 의미한다. 해당 Domain에 해당하는 IP주소에 대한 최종 책임자.
로컬 네임 서버: "https://en.wikipedia.org의 IP 주소는 무엇입니까?"
권한 있는 en.wikipedia.org 서버: "en.wikipedia.org의 IP 주소는 168.126.63.1입니다."
6. IP 주소 반환과 엑세스: DNS 서버는 IP 주소를 컴퓨터에게 반환하고 사용자의 웹 브라우저는 이를 통해 "https://en.wikipedia.org"에 접속한다.
- 캐싱 : 해당 정보를 로컬 DNS 서버에 캐싱해둔다.
질의의 종류
Iterative query
클라이언트가 DNS 서버에 반복적인 쿼리를 보내는 방식
DNS 서버는 클라이언트의 쿼리에 대해 직접적인 응답을 하지 않고, 대신에 자신이 정보를 갖고 있지 않은 경우 다른 DNS 서버에 쿼리를 보낸다.
즉 정보를 전달하고 답변을 받는 과정을 클라이언트가 직접 수행한다.
이를 통해 유연한 질의와 분산 네트워크의 특성을 잘 활용할 수 있으나 응답 시간이 Recursive Query에 비해 오래 걸릴 수 있다.
Recursive query
클라이언트가 DNS 서버에 재귀적인 쿼리를 보내는 방식.
DNS 서버는 클라이언트의 쿼리를 처리하기 위해 필요한 모든 정보를 제공하기 위해 다른 DNS 서버에 쿼리를 보낸다.
클라이언트는 최종적으로 원하는 정보를 받을 때까지 DNS 서버의 쿼리 결과를 기다린다.
DNS 서버가 클라이언트를 대신하여 필요한 모든 정보를 찾고 반환하는 과정을 수행한다.
따라서 간편하고 응답이 빠를 수 있지만 서버의 Performance가 중요하며, 부하 및 SPoF의 단점이 있다.
https://en.wikibooks.org/wiki/Communication_Networks/DNS
응답의 종류
권한 없는 응답 (Non-authoritative response)
- DNS 서버가 요청된 도메인에 대한 정보를 직접적으로 관리하지 않는 경우에 반환된다.
- 캐시된 정보나 다른 DNS 서버로부터 받은 정보를 사용하며 해당 도메인의 권한 있는 DNS 서버로부터 직접적으로 가져온 것이 아니기 때문에 신뢰성이 낮을 수 있다.
- 대부분의 DNS 쿼리는 권한 없는 응답을 반환한다.
권한 있는 응답 (Authoritative response)
- 권한 있는 응답은 DNS 서버가 직접적으로 관리하고 있는 도메인에 대한 정보를 반환할 때 사용된다.
DNS 패킷 캡처
이번에는 Wireshark를 이용하여 DNS Query와 Response 과정에서 패킷을 캡처하여 분석해 보자.
다음은 "www.ietf.org"를 방문 후 나의 IP 주소를 filter처리하여 얻어낸 패킷의 목록이다.
Transport Layer 프로토콜 확인
Transport layer의 사용 프로토콜은 UDP로 UDP를 통해 Query와 Response를 Transport하는 것을 확인할 수 있었다.
출발 / 도착 포트 확인
DNS query message의 Destination port는 53이고 DNS response message의 Source port는 53으로 질의한 메시지가 응답 메시지의 포트로 전달된 것을 알 수 있다.
출발 / 도착 Address 확인
해당 패킷을 보면 DNS Query message를 보내는 IP 주소는 로컬 DNS 서버의 IP 주소와 동일하다는 것을 알 수 있다.
즉 로컬 컴퓨터에서 로컬 DNS 서버에 질의를 했다는 것을 알 수 있다.
DNS Query Message
DNS Query의 Type은 A이며 질의 메시지 이므로 아무런 응답(Answer)도 포함하지 않는다.
DNS Response Message
DNS Response Message에는 3개의 answer가 있었다.
Type은 도메인 이름에 대한 레코드였으며, CNAME 레코드는 해당 도메인이 다른 도메인으로 별칭을 지정하고 있음을 나타내고, 나머지 두 개의 A 레코드는 해당 도메인에 대한 두 개의 다른 IP 주소를 제공한다.
첫번째 answer에서는 type은 CNAME이고 CNAME www.ietf.org.cdn.cloudflare.net을 명시했다.
두번째 answer에서는 type은 A이고 Address 104.20.0.85을 명시했다.
세번째 answer에서는 type은 A이고 Address 104.20.1.85를 명시했다.
References
Data Communications and Networks, 4th Edition, Forouzan, McGraw-Hill
'CS > 운영체제 & 네트워크' 카테고리의 다른 글
[Network] NAT : 공인 IP와 사설 IP (+ 포트 포워딩 설정) (0) | 2024.02.24 |
---|---|
[Network] Network Layer : IP & DHCP & ICMP (0) | 2024.02.23 |
[Network] 데이터 전송 : 프로토콜과 OSI 7계층 및 Wireshark 패킷 분석 (0) | 2024.02.23 |
[Network] 네트워크 개념과 구성 (0) | 2024.02.23 |
[CS] 가상화 (Virtualization) (1) | 2024.01.05 |