고수만/네트워크

제 2강 네트워크 :DNS와 IP

JumBack2 2023. 8. 8. 15:15

 

우리는 어딘가에 편지를 보낼 때 위치를 기반으로 한 주소로 편지를 보낸다. 물론 우리가 직접 해당 위치까지 가서 편지를 상대방의 우편함에 넣을 수도 있겠지만 그렇게 한다면 편지의 의미가 없지 않은가?

 

우리의 디바이스들이 개별 식별자인 MacAddress를 가지고 있다 하더라도 이는 해당 주민등록번호 같은 것이지 해당 식별자를 가지고 있어도 해당 디바이스가 어디에 있는지 알 수가 없다. 이는 주민등록번호는 태어난 사람의 위치와 날짜를 기반으로 정해지기 때문에 현재 위치를 가지고 있지 않기 떄문이다. 

 

그렇다면 우리는 주민등록번호가 아닌 우리의 주소, 위치에 대한 정보 즉 지번을 알아야 한다. 대지에 위치한 정보값이 필요한 것이다.

이는 IP가 해결하여 준다. 

 

(기본)

IP란?

 

IP 주소(영어: Internet Protocol address, IP address, 표준어: 인터넷규약주소)는 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호이다. 만약 서버가 들어가지 않으면 IP가 안전하지 않다고 한다. 네트워크에 연결된 장치가 라우터이든 일반 서버이든, 모든 기계는 이 특수한 번호를 가지고 있어야 한다.

  -위키백과

 

IP는 서로를 인식하고 통신하기 위해 정해진 특수한 번호이고 인터넷 규약 주소이기에 전세계가 이 규약을 기준으로 번호를 만든다. 따라서 우리가 서울특별시 영등포구라고 하면 서울에서도 영등포 구라는 위치를 특정할 수 있고

무슨무슨 동 무슨무슨 건물이라고 하면 해당 건물위치 또한 알수 있고 그 위치까지 찾아갈 수 있는 것이다.

 

IP도 이와 같은 역할을 한다.

우리가 이전에 네트워크 7계층에서 보면 네트워크 계층인 4계층에서 IP를 사용하고 라우터를 사용하는

것을 알 수 있는데 바로 IP가 갈 곳의 정보들을 주소에 가지고 있기 떄문에 라우팅이 가능한 것이다.

 

자 그럼 라우팅은 무엇인가.

네트워크 계층에서 하는 일은 포워딩과 라우팅이다. 

일단 포워딩은 패킷을 다른 곳에 이동시키는 것을 의미한다. H1이라는 호스트에서 R1이라는 라우터 까지 

전송하는 것을 포워딩이라고 한다.(앞으로 나간다는 뜻)

 

그럼 라우팅은 무엇인가.

라우팅은 송신자가 수신자에게 패킷을 전달할 때 패킷을 어느 경로로 전송할 지를 정하여야 하고 이를 정하는 것을 라우팅이라고 한다. 부산으로 편지를 서울에서 전달해야 한다면 북한인 개성쪽으로 보내는 것이 아니라 대전쪽으로 내려보내야 빠르게 최적의 루트로 갈 수 있다는 것을 우리는 알수 있지만 컴퓨터는 알수가 없다. 따라서 라우터에 있는 라우팅 알고리즘을 토대로 라우팅을 하여 최적의 경로를 찾아내 보내는 것이다.

 

IP는 고정된 IP를 할당 받아 사용하는 방법도 있지만 DHCP를 이용하여 동적으로 IP를 할당 받는 방법도 있다. 이에 대한 이유는 IP는 한정적이기 때문이다.

과거 IP는 32비트를 기준으로 0~255사이의 십진수를 기반으로 하여 만들어 졌었다.

 

따라서 0.0.0.0 부터 255,255,255,255 까지의 주소로 이루어져서 이론적으로 42억9496만7296개의 IP가 존재한다.

IPv4

은 위와 같이 총 4개의 옥텟으로 이루어져있고 총 32비트이다. 42억이라는 수의 주소면 커버가 될 줄 알았지만 현대에는 1인당 여러 대의 디바이스를 사용하게 되면서 이 주소로는 가용 IP를 커버할 수 없게 되었다.

따라서 나온 것이 IPv6

 

IPv6

는 IPv4의 한계를 극복하기 위해 나온 새로운 주소 체계로 32비트인 IPv4와 다르게 128비트로 16비트씩 8부분으로 나누어

1조개 이상의 주소를 제공가능한 체계이다. 기본적으로 ip 클래스 별로 할당하는 것이 아니라 유니캐스트, 멀티캐스트, 애니캐스트 별로 주소를 할당한다.

 

그렇다면 IP 클래스란 무엇일까?

 

 

(심화)

IP 주소법

IP의 4개의 부분은 각각 8비트로 이루어져있는데 이는 Network 부분과 Host 부분으로 나누어진다.

Network ID부분은  IP Class를 나누기 위해 설정이 되는 부분이고 해당 Class가 설정 되고 나눠진 이후의 부분을 

사용자가 할당받아 사용하기에 Host ID 부분이라고 한다.

IPv4에서는 Class가 A,B,C,D,E로 나누어 지는데

위 그림과 같이 

A 클래스는 첫번째 옥탯까지가 Network ID B 클래스는 첫번째부터 두번째 옥탯 까지가 NetworkID로 이루어진다.

따라서

  • A Class : 0 ~ 127 (0.0.0.0 ~ 127.255.255.255)
  • B Class : 128 ~ 191 (128.0.0.0 ~ 191.255.255.255)
  • C Class : 192 ~ 223 (192.0.0.0 ~ 223.255.255.255)
  • D Class : 224 ~ 239 (224.0.0.0 ~ 239.255.255.255)
  • E Class : 240 ~ 255 (240.0.0.0. ~ 255.255.255.255)

와 같이 할당되어 사용이 된다.

그리고 할당 된 뒤 Host 부분으로 제공되는 ID 부분을 정하여 IP로 사용하게 된다.

이를  IP subnetting이라고 한다. 

 

IP subnetting을 알기 전에 CIDR를 먼저 알고 가야하는데

 

CIDR란

클래스 없는 도메인 라우팅 기법이다. 기존 ipv4는 네트워크 주소와 호스트 주소로 나누어져 있는데 기존에는 네트워크 주소가 클래스 기반으로 고정되어 나머지 호스트 부가 결정되는 방식을 취했다. 네트워크 주소부가 고정되버리면서 많은 주소들이 사용되어 질수 없었다. 때문에 네트워크 주소가 마지막에 추가되는 사이더 블록으로 유연하게 결정되어 Host 주소가 변할 수 있도록 주소를 정하여 라우팅 가능하도록 하였다.

 

예를 들어 192.28.89.0/24 라고 한다면

각 자리수는 8비트 자리수로 구성되어 있음으로 24비트 까지는 네트워크 주소부로 결정되며 나머지 0~255까지가 inter Domain에 할당되어 라우팅 되어진다.

이는 네트워크 주소부가 고정되어 Host 부분을 자유롭게 사용하지 못하는 단점을 보완하여 IPv4의 한계를 조금 커버해주었다.

 

IP subnetting이란

 

이미 할당된 네트워크를 여러 개의 서브넷으로 나누는 것을 의미한다. 네트워크 주소부는 네트워크와 호스트 주소로 나누어져있는데, 이미 할당 된 호스트 부를 서브넷으로 나누어 부분망으로 사용하는 것을 의미합니다. 예를 들어 C클래스의 경우 24비트까지는 네트워크 주소로 할당되고 나머지가 호스트 부로 할당 되어지는데 서브넷 마스크가 25일 경우 25비트까지가 네트워크 주소로 할당됨으로 기존 네트워크를 2가지의 부분망으로 나누는 것을 의미한다. 또한 26으로 할경우 25비트와 26비트까지를 네트워크 주소로 가용한다는 것으요 4개의 서브넷으로 나누어 사용한다는 의미이다.

 

 

 

 

(기본)

그럼 IP주로는 우리가 편지를 보내는 주소라는 것을 알았다. 하지만 우리는 네이버를 찾아갈 때 네이버의 IP주로를 찾아서 검색하지 않고 www.naver.com을  을 검색하여 찾는다.

이는 무엇일까?

 

이것이 바로 DNS이다.

도메인 이름 시스템(Domain Name Service)은 사람이 읽을 수 있는 도메인 이름(예: www.amazon.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환합니다.

 

 

DNS란

도메인 네임 시스템 (Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다. 특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해 준다. 도메인 네임 시스템은 흔히 "전화번호부"에 비유된다. 인터넷 도메인 주소 체계로서 TCP/IP의 응용에서, www.example.com과 같은 주 컴퓨터의 도메인 이름을 192.168.1.0과 같은 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다.-위키백과

 

 

DNS 의 구조

DNS는 계층형식으로 구성되어 있다.

가장 최상위인 루트 도메인(.)과

그 다음 레벨인 최상위 도메인(국가코드와,일반)

그 다음은 second level (co(일반),go(정부) 등등)

그 다음은 third level(실제 도메인이 IP와 매핑 권한이 있는 호스트의 이름을 제공)

 

 

(심화)

DNS 탐색 방법

현재 일반 네트워크는 IP주소를 바탕으로 서로의 주소를 찾아 요청을 수락하고 정보를 교환하는데 IP주소는 숫자를 기반으로 이루어져있다. 그러나 우리는 인간이 더 이해하기 쉽게 만들어진 도메인으로 이루어진 주소를 가지고 상대방 사이트에 접속하려고 한다. 우리는 진짜 IP주소를 찾기 위한 여러 절차가 필요하다.

  1. 먼저 브라우저의 dns 캐시를 참조하고 없다면
  2. 로컬 DNS 캐시 서버에서 해당 URL를 확인
  3. hosts.ics 파일 검사
  4. hosts 파일 검사
  5. 외부 DNS 서버 검색 (ISP 지정)

보통 가정 집 기준으로 Local DNS서버를 별도의 설정을 하지 않았다면 기본적으로 통신사에서 제공해 주는 DNS서버를 사용한다.

 

외부에 서버와 연결하기 위해선 IP가 중요한데 한번도 연결한 적이 없어서 IP가 없다면

클라이언트→ 브로드캐스팅 중인 AP를 찾아 AP 스캐닝→클라이언트 운영체제가 DHCP DISCOVER를 만들어서 UDP로 브로드캐스팅 하여 DHCP 서버에 전달하고 → DHCP 서버는OFFER 메시지→ 클라이언트는 DHCP 선택 후 → DHCP REQUEST을 보내고 →DHCP ACK 메시지를 브로드 캐스팅해 요청받은 설정 값을 승인한다.

https://hihighlinux.tistory.com/47

 

DNS란 무엇인가 재귀적,반복적 쿼리

안녕하세요 오늘은 DNS(Domain Name System)에 대해 알아보겠습니다. DNS서버 구축을 하기 위해 먼저 개념을 알고가는 것이 좋다고 생각해서 먼저 글을 작성해봅니다 시작해보겠습니다. DNS 란? 네트워

hihighlinux.tistory.com

 

자신의 단말의 부팅과 함께 DHCP 서버에서 할당 받은 자신의 IP를 바탕으로 자신의 주소 가장 가까운 DNS 서버에게 도메인의 정보를 얻기 위해 요청을 보낸다.

DNS는 계층적 속성을 가지고 있어서 해당 URL의 정보를 찾아내기 위해 재귀적으로 위에서 부터 찾아 들어간다.

 

제일 먼저

Root name server,

Top level Domain Nameserver,

Second-level (Third level)l name server

 

를 거쳐 해당 도메인의 IP주소 값을 찾아내어 로컬 DNS에게 전달한다.

그리고 해당 IP주소를 토대로 요청을 보내고 amazon.com 서버의 응답 값을 가져온다.

 

해당 주소를 가져오면

  1. 브라우저가 해당 서버와 TCP 연결을 시작한다.
  2. 브라우저가 웹서버에 HTTP 요청을 보낸다.
  3. 서버가 요청을 처리하고 응답을 보낸다.
  4. 서버가 HTTP 응답을 보낸다.
  5. 브라우저가 HTML 컨텐츠를 보여준다.

 

출처 아마존

 

 

 

 

 

https://peemangit.tistory.com/52

 

DNS (Domain Name System)란?

1. DNS (Domain Name System) 1) DNS 등장 배경 인터넷 표준 프로토콜은 TCP/IP이다. TCP/IP 프로토콜을 사용하는 네트워크 안에서 Host들을 식별하기 위한 목적으로 IP 주소를 사용한다. 사람의 경우 숫자보다

peemangit.tistory.com

http://korean-daeddo.blogspot.com/2015/12/ip.html

 

IP 주소체계와 클래스 구별법 (IPv4)

IPv4의 주소체계와 클래스 구별법에 대한 글입니다.

korean-daeddo.blogspot.com

https://jwprogramming.tistory.com/28

 

IPV4 와 IPV6 의 차이점과 문제점

IPv4와 IPv6에 대한 기본적인 설명 및 차이점, 문제점 등입니다.- 현재 네트워크 계층의 프로토콜은 IPv4(Internet Protocol, version 4)를 사용하고 있습니다.현재 IP주소는 버전4(IPv4)으로 네 도막으로 나눠

jwprogramming.tistory.com