[네트워크]네트워크, 인터넷, DNS

김형주·2021년 8월 24일
0

Backend Study

목록 보기
7/19

네트워크(Network)

네트워크의 사전적 의미는 전선이나 혈관, 통로 등으로 이루어진 망형 조직이다. '네트워크'라는 용어는 방송사 네트워크, 인맥을 의미하는 휴먼 네트워크(Human Network) 등 다양한 의미로 사용하는데, 그 중 가장 많이 쓰이는 의미는 컴퓨터와 컴퓨터를 연결해주는 망이다.

컴퓨터와 컴퓨터를 연결한 네트워크는 이전보다 더 편리한 세상을 만들었다. 네트워크가 보편화되기 전에는 보고서를 제출하려면 직접 하드카피를 인쇄해 전달해야 했지만, 지금은 이메일(Email)이나 웹하드(Webhard), 클라우드(Cloud) 기반의 스토리지(Storage)를 통해 제출하는 것이 일반적인 상황이 되었다. 이처럼 네트워크는 이전과는 비교할 수 없는 편리함을 가져다줬다. 인터넷은 이런 네트워크 응용 서비스의 한 종류라고 할 수 있는데, 스마트폰을 통해 인터넷을 사용할 수 있는 것도 각각의 응용 서비스 모두가 네트워크로 연결되어 있기 때문에 가능한 것이다. 스마트폰에서 사용하는 모바일 네트워크는 WIFI, 4G LTE, 5G 등 무선 통신망을 이용한다.

네트워크를 구축하려면 컴퓨터 간의 연결 규격 즉, 프로토콜(Protocol)이라는 것이 필요하다. 여러 프로토콜 중 가장 대표적으로 널리 쓰이고 또한 인터넷에서 사용되고 있는 TCP/IP에 대해 자세히 알아보자!

TCP/IP


TCP/IP(Transmission Control Protocol/Internet Protocol의 약자)는 컴퓨터 간에 통신할 수 있도록 만든 프로토콜의 하나다. 이 프로토콜에 기반하고 있는 것이 인터넷인데, TCP/IP가 인터넷의 기반 프로토콜로 자리잡은 이유는 하드웨어(Hardware), 운영체제(OS), 접속 매체와 관계없이 동작할 수 있는 개방형 구조이기 때문이다. 원래는 TCP/IP는 OSI(Open Systems Interconnection) 7계층에 포함되는 프로토콜로, TCP/IP는 네 개의 계층으로 이루어져 있다.

계층설명
응용 계층WWW, FTP, Telnet, SMTP같은 네트워크 프로그램으로 구성된다.
전송 계층각 시스템을 연결하고 TCP 프로토콜을 이용하여 데이터를 전송한다.
인터넷 계층IP 프로토콜을 이용해서 데이터를 정의하고 경로를 배정한다.
물리 계층실제 네트워크를 접근할 수 있도록 하는 하드웨어적인 부분이다.

원래 OSI 7계층은 네트워킹을 위한 물리적 장비에서 실제 서비스를 제공하기 위한 애플리케이션에 이르는 단계를 계층화한 것을 말한다. 이러한 계층화를 통해, 상위 레벨에서는 하위 레벨에서 구현한 내용을 모르더라도 표준화된 인터페이스를 통해 네트워크 시스템을 개발하고 운영할 수 있다. TCP/IP는 OSI 7계층을 좀더 단순화해서 4계층으로 정의한 것이다.TCP는 데이터의 흐름 관리, 데이터 정확성 확인 등의 역할을 수행하고 IP는 데이터(패킷)을 목적까지 전송하는 역할을 담당한다. TCP/IP는 개방형 구조로서, 특정 운영체제나 하드웨어에 영향을 받지 않고 근거리와 원거리 모두 데이터를 전송할 수 있다.

IP(Internet Protocol)


IP 주소(IP Address)는 TCP/IP로 연결된 네트워크에서 각각의 컴퓨터를 구분하려고 사용하는 주소다. IP 주소는 숫자로 구성되어 있고, '123.123.123.123.'과 같이 네 개로 구분된 10진수를 사용한다. 사용할 수 있는 IP 주소 범위는 다음과 같다.

구분범위네트워크 수사용목적 / 네트워크당 주소
클래스 A1.0.0.0 ~ 127.0.0.0128대형 통신망 / 16,777,214개
클래스 B128.0.0.0 ~ 191.255.0.016,384중형 통신망 / 65,534개
클래스 C192.0.0.0 ~ 223.255.255.02,097,152소형 통신망 / 256개
클래스 D224.0.0.0 ~ 239.255.255.255-멀티캐스트
클래스 E240.0.0.0 ~ 225.255.255.255-실험 목적 / 배포 중지

이론적으로 컴퓨터가 TCP/IP 네트워크에 연결되려면 IP 주소가 있어야 하고, 인터넷에 연결된다면 전세계 모든 컴퓨터에 원격으로 접속할 수 있어야 한다. 하지만 수많은 컴퓨터에 각기 다른 고유한 IP주소를 할당하기에는 한계가 있다. 모바일 인터넷의 급속한 확산과 함께 IP 주소 고갈 문제가 심각해졌다. 그러나 현재는 초기 보다 문제가 어느정도 해결되었다. 네트워크 및 라우터의 발달로 사설 IP를 통해 대부분의 인터넷 서비스를 이용할 수 있게 되었기 때문이다. 따라서 모든 인터넷 클라이언트가 공인IP를 사용할 필요가 없고, 이를 해결하려고 고안된 방안인 IPv6의 보급은 다소 늦춰질 전망이다.

사설 IP는 일반적으로 10.x.x.x, 192.x.x.x 등 몇 가지 IP 블록을 사용하지만, 실제로는 모든 인터넷 IP를 사용할 수 있다. 다만 네트워크 구성상 직접 인터넷에 연결되지 않고 라우터 장비 등에서 제공하는 NAT(Network Access Translator) 기능을 이용해서 접속해야 한다. NAT를 이용해서 공인 IP로 대응하면 인터넷에 접속할 수 있다. 쉽게 생각하면 집에서 사용하는 유무선 인터넷 공유기를 생각하면 된다. 공유기에 연결된 컴퓨터나 스마트폰은 DHCP(Dynamic Host Configuration Protocol)라고 하는 동적 IP 할당 프로토콜에 의해서 사설 IP를 배정받게 되고, 공유기를 통해 인터넷 연결이 관리된다.

인터넷


인터넷 자체는 네트워크 인프라를 의미하고, 우리가 알고있는 WWW, Email 서비스 등은 인터넷 기반의 서비스다. 웹은 인터넷에 기반한 서비스이기 때문에 인터넷과 관련된 기본 기술과 용어, 동작원리들은 잘 이해하고 있어야한다.

인터넷 기반 서비스

인터넷 기반의 대표적인 서비스는 웹(WWW) 이외에도 이메일(Email), FTP, Telnet, DNS, News 등이 있다. 인터넷 초창기에는 웹보다 다른 것들이 주된 서비스였으나, 지금은 웹이 절대적이다. 최근에는 이메일 서비스 조차도 독립적인 사설 웹 서비스 위에 올라가 있다. SNS 서비스가 등장하면서 웹 서비스 위에서 구동되는 서비스는 훨씬 더 다양해졌다. 아래 적혀진 모든 서비스의 프로토콜이 따로 되어있는데 모두 TCP/IP 라는 프로토콜로 물리적으로 연결되어 있다.

서비스기능프로토콜포트
웹(WWW)웹 서비스HTTP80
이메일(Email)이메일 서비스SMTP/POP3/IMAP25/110/143
FTP파일 전송 서비스FTP21
Telnet원격 로그인 서비스TELNET23
DNS도메인 이름 변환 서비스DNS53
News인터넷 뉴스 서비스NNTP119

프로토콜(Protocol)
프로토콜은 네트워크에 연결된 컴퓨터들간의 통신 규약

물리적인 네트워크 연결은 TCP/IP를 사용하지만, 응용 서비스를 위한 별도의 규격으로 이해하면 된다. 포트는 네트워크 서비스를 접속하기 위한 접점으로 하나의 컴퓨터에서 여러 개의 네트워크 서비스를 제공하는 경우 이들을 구분하기 위한 목적으로 사용한다. 은행에서 입출금, 대출, 신용카드, 보험 등 업무에 따라 창구를 구분해 놓은 것과 같은 개념으로 이해하면 된다. 해당 업무를 처리하지 않는 창구에서는 내가 원하는 서비스를 받을 수 없는 것과 마찬가지로 포트와 프로토콜이 일치하지 않는 경우에는 정상적으로 네트워크 서비스를 사용할 수 없다.

DNS(Domain Name System)


우리나라 국민이라면 다른 사람과 구별되는 고유번호인 주민번호가 있다. 컴퓨터도 마찬가지로 단말기마다 부여된 고유한 번호가 있는데, 그게 IP다. IP주소는 네트워크에서 사용하는 구분 번호다. 그런데, 사람들끼리 이름이 아니라 주민번호로 부르면 얼마나 힘들까? 그래서 만들어진게 도메인 이름 시스템이다. 고유번호에 이름을 만들어줘서 쉽게 구분지을 수 있도록 만든 것이다. www.naver.com, www.google.com 등의 인터넷 주소는 호스트(컴퓨터) 이름(www) + 도메인 이름(google.com)의 형태로 되어 있다. 여기서 도메인 이름은 전 세계적인 관리 체계가 있기 때문에 마음대로 붙일 수는 없고, 도메인을 관리하는 기관이나 업체에 일정 비용을 지불하고 사용할 수 있다.

우리가 일상적으로 사용하는 도메인 이름을 통한 웹 사이트 접속도 겉으로는 보이지 않지만, 내부적으로 도메인 이름을 IP Address로 변환하는 서비스를 이용하는 것이다. 이러한 서비스를 도메인 이름 시스템이라고 부른다.

DNS 처리 과정

  1. PC의 호스트 파일에 www.google.com에 대한 IP 주소정보가 있는지 확인한다.

    윈도우 : c:\windows\system32\drivers\etc\hosts
    리눅스 : /etc/hosts

  2. PC의 DNS캐시에 www.google.com에 대한 IP 주소가 있는지 확인한다.

  3. Local DNSwww.google.com에 대한 DNS query를 보낸다. Local DNS는 내 PC 에 설정되어 있는 네임서버다.
    예) 168.126.63.1 (KT DNS), 8.8.8.8 (google DNS) 등

  4. Local DNS의 DNS 캐시정보에 www.google.com에 대한 IP 주소가 있는지 확인한다.

  5. Local DNSRoot DNSwww.google.com에 대한 IP 주소를 요청하는 DNS query를 보낸다.

  6. Root DNS는 자신의 ZONE 파일에 정보가 있다면 IP 주소를 응답하고, 없다면 .COM의 DNS 서버 주소를 반환한다.

  7. Local DNSRoot DNS에서 받은 COM DNSwww.google.com에 대한 IP 주소정보를 요청하는 DNS query를 보낸다.

  8. COM DNS는 자신의 ZONE파일에 정보가 있다면 IP주소를 응답하고, 없다면 google.com의 DNS 서버 주소를 응답한다.

  9. Local DNSCOM DNS에서 받은 google.com DNS에 www.google.com에 대한 IP 주소 정보를 요청하는 DNS query를 보낸다.

  10. google.com DNS 는 ZONE 파일 정보를 확인하여 IP 주소를 응답해준다.

  11. Local DNSgoogle.com DNS에서 응답받은 IP 주소를 client에 응답한다. 그러면서 TTL 시간 동안 www.google.com 의 IP 주소를 캐싱한다.

  12. clientLocal DNS에서 받은 IP 주소(www.google.com)로 접속 요청을 한다. 그러면서 TTL 시간 동안 www.google.com의 IP 주소를 캐싱한다.

  13. www.google.com 서버www.google.com 첫 화면을 client에 전송한다.

profile
만물에 관심이 많은 잡학지식사전이자, 새로운 도전을 꿈꾸는 주니어 개발자 / 잡학지식에서 벗어나서 전문성을 가진 엔지니어로 거듭나자!

0개의 댓글