네트워크의 사전적 의미는
전선이나 혈관, 통로 등으로 이루어진 망형 조직
이다. '네트워크'라는 용어는 방송사 네트워크, 인맥을 의미하는휴먼 네트워크(Human Network)
등 다양한 의미로 사용하는데, 그 중 가장 많이 쓰이는 의미는컴퓨터와 컴퓨터를 연결해주는 망
이다.
컴퓨터와 컴퓨터를 연결한 네트워크는 이전보다 더 편리한 세상을 만들었다. 네트워크가 보편화되기 전에는 보고서를 제출하려면 직접 하드카피를 인쇄해 전달해야 했지만, 지금은 이메일(Email)이나 웹하드(Webhard), 클라우드(Cloud) 기반의 스토리지(Storage)를 통해 제출하는 것이 일반적인 상황이 되었다. 이처럼 네트워크는 이전과는 비교할 수 없는 편리함을 가져다줬다. 인터넷은 이런 네트워크 응용 서비스의 한 종류
라고 할 수 있는데, 스마트폰을 통해 인터넷을 사용할 수 있는 것도 각각의 응용 서비스 모두가 네트워크로 연결되어 있기 때문에 가능한 것이다. 스마트폰에서 사용하는 모바일 네트워크는 WIFI, 4G LTE, 5G
등 무선 통신망을 이용한다.
네트워크를 구축하려면 컴퓨터 간의 연결 규격 즉, 프로토콜(Protocol)이라는 것이 필요하다. 여러 프로토콜 중 가장 대표적으로 널리 쓰이고 또한 인터넷에서 사용되고 있는 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 주소(IP Address)는 TCP/IP로 연결된 네트워크에서 각각의 컴퓨터를 구분하려고 사용하는 주소다. IP 주소는 숫자로 구성되어 있고, '123.123.123.123.'과 같이 네 개로 구분된 10진수를 사용한다. 사용할 수 있는 IP 주소 범위는 다음과 같다.
구분 | 범위 | 네트워크 수 | 사용목적 / 네트워크당 주소 |
---|---|---|---|
클래스 A | 1.0.0.0 ~ 127.0.0.0 | 128 | 대형 통신망 / 16,777,214개 |
클래스 B | 128.0.0.0 ~ 191.255.0.0 | 16,384 | 중형 통신망 / 65,534개 |
클래스 C | 192.0.0.0 ~ 223.255.255.0 | 2,097,152 | 소형 통신망 / 256개 |
클래스 D | 224.0.0.0 ~ 239.255.255.255 | - | 멀티캐스트 |
클래스 E | 240.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) | 웹 서비스 | HTTP | 80 |
이메일(Email) | 이메일 서비스 | SMTP/POP3/IMAP | 25/110/143 |
FTP | 파일 전송 서비스 | FTP | 21 |
Telnet | 원격 로그인 서비스 | TELNET | 23 |
DNS | 도메인 이름 변환 서비스 | DNS | 53 |
News | 인터넷 뉴스 서비스 | NNTP | 119 |
프로토콜(Protocol)
프로토콜은 네트워크에 연결된 컴퓨터들간의 통신 규약
물리적인 네트워크 연결은 TCP/IP를 사용하지만, 응용 서비스를 위한 별도의 규격으로 이해하면 된다. 포트
는 네트워크 서비스를 접속하기 위한 접점
으로 하나의 컴퓨터에서 여러 개의 네트워크 서비스를 제공하는 경우 이들을 구분하기 위한 목적으로 사용한다. 은행에서 입출금, 대출, 신용카드, 보험 등 업무에 따라 창구를 구분해 놓은 것과 같은 개념
으로 이해하면 된다. 해당 업무를 처리하지 않는 창구에서는 내가 원하는 서비스를 받을 수 없는 것과 마찬가지로 포트와 프로토콜이 일치하지 않는 경우에는 정상적으로 네트워크 서비스를 사용할 수 없다.
우리나라 국민이라면 다른 사람과 구별되는 고유번호인 주민번호가 있다. 컴퓨터도 마찬가지로 단말기마다 부여된 고유한 번호가 있는데, 그게 IP다. IP주소는 네트워크에서 사용하는 구분 번호다. 그런데, 사람들끼리 이름이 아니라 주민번호로 부르면 얼마나 힘들까? 그래서 만들어진게 도메인 이름 시스템이다. 고유번호에 이름을 만들어줘서 쉽게 구분지을 수 있도록 만든 것이다. www.naver.com
, www.google.com
등의 인터넷 주소는 호스트(컴퓨터) 이름(www) + 도메인 이름(google.com)의 형태로 되어 있다. 여기서 도메인 이름은 전 세계적인 관리 체계가 있기 때문에 마음대로 붙일 수는 없고, 도메인을 관리하는 기관이나 업체에 일정 비용을 지불하고 사용할 수 있다.
우리가 일상적으로 사용하는 도메인 이름을 통한 웹 사이트 접속도 겉으로는 보이지 않지만, 내부적으로 도메인 이름을 IP Address로 변환하는 서비스를 이용하는 것이다. 이러한 서비스를 도메인 이름 시스템
이라고 부른다.
PC의 호스트 파일에 www.google.com
에 대한 IP 주소정보가 있는지 확인한다.
윈도우 : c:\windows\system32\drivers\etc\hosts
리눅스 : /etc/hosts
PC의 DNS캐시에 www.google.com
에 대한 IP 주소가 있는지 확인한다.
Local DNS
에 www.google.com
에 대한 DNS query
를 보낸다. Local DNS는 내 PC 에 설정되어 있는 네임서버다.
예) 168.126.63.1 (KT DNS), 8.8.8.8 (google DNS) 등
Local DNS
의 DNS 캐시정보에 www.google.com
에 대한 IP 주소가 있는지 확인한다.
Local DNS
는 Root DNS
에 www.google.com
에 대한 IP 주소를 요청하는 DNS query
를 보낸다.
Root DNS
는 자신의 ZONE 파일에 정보가 있다면 IP 주소를 응답하고, 없다면 .COM
의 DNS 서버 주소를 반환한다.
Local DNS
는 Root DNS
에서 받은 COM DNS
에 www.google.com
에 대한 IP 주소정보를 요청하는 DNS query
를 보낸다.
COM DNS
는 자신의 ZONE파일에 정보가 있다면 IP주소를 응답하고, 없다면 google.com
의 DNS 서버 주소를 응답한다.
Local DNS
는 COM DNS
에서 받은 google.com DNS
에 www.google.com에 대한 IP 주소 정보를 요청하는 DNS query
를 보낸다.
google.com DNS
는 ZONE 파일 정보를 확인하여 IP 주소를 응답해준다.
Local DNS
는 google.com DNS
에서 응답받은 IP 주소를 client
에 응답한다. 그러면서 TTL 시간 동안 www.google.com 의 IP 주소
를 캐싱한다.
client
는 Local DNS
에서 받은 IP 주소(www.google.com)로 접속 요청을 한다. 그러면서 TTL 시간 동안 www.google.com의 IP 주소
를 캐싱한다.
www.google.com 서버
는 www.google.com
첫 화면을 client
에 전송한다.