네트워크란 무엇이고
네트워크에서 사용하는 용어들은 무엇일까?
네트워크(Network)란?
--
네트워크는 여러 개의 장치들이 서로 연결되어서 정보를 주고받을 수 있는 시스템이다.
위 그림처럼
네트워크는 렌선 케이블로 물리적으로 연결되어 있으며
이 물리적인 케이블을 가지고 전기 신호를 통해서 정보를 주고받을 수 있게 되는 것이다.
즉, 네트워크는 여러 장치(컴퓨터)들이 서로 데이터를 주고 받을 수 있도록 연결된 시스템이다.
--
IP 주소 (Internet Protocol Address)란?
--
택배나 편지를 보낼 때 상대방의 주소가 필요하듯이
네트워크에서도 정보를 보내기 위해서는 IP 주소가 필요하다.
즉, IP 주소는 네트워크 상에서 장치(컴퓨터)들을 식별하기 위한 고유한 주소다.
(컴퓨터가 인터넷에 연결할 때 고유한 IP 주소를 할당 받는다.)
IP는
정적 IP로 고정적인 IP를 받아서 사용할 수도 있고
동적 IP로 변경될 수 있는 IP를 받아서 사용할 수도 있다.
보통 가정용 인터넷은 동적 IP를 할당받아서 사용하기 때문에
시간이 지나면서 집에 할당된 IP 주소가 변경될 수 있다.
(보통 통신사의 인터넷에 가입하면 회선당 하나의 IP를 할당받아서 사용하게 된다.)
IP는
공인 IP와 사설 IP로 분리할 수 있다.
인터넷에 가입한 회선당 IP가 하나씩 할당된다고 했는데 해당 IP가 공인 IP이다.
일반적으로 집에서 하나의 인터넷 회선으로 스마트폰, 노트북, TV와 같이 다양한 기기로 인터넷을 사용하고 있다.
이렇게 하나의 IP(공인 IP)로 여러 기기가 인터넷을 사용하려면 사설 IP를 활용해야 한다.
비유를 하자면
- 공인 IP = 집 주소
- 사설 IP = 해당 집 안의 방 번호
공인 IP는 전 세계에서 유일한 주소이고
사설 IP는 특정 공인 IP에 속한 기기 내에서만 유일한 주소이다.
공인 IP 안에서 사설 IP로 나누기 위해서는 네트워크 장비가 필요한데
가정에서는 해당 네트워크 장비를 일반적으로 공유기를 사용한다.
일반적으로 공유기를 보면
공인 IP를 받는 인터넷 선을 꽂는 부분인 WAN 포트 1개가 존재하고
여러 기기에 연결하여 사설 IP를 분배하는 부분인 LAN 포트 여러 개가 존재한다.
즉, 할당받은 공인 IP(WAN 포트)를 여러 개의 사설 IP(LAN 포트)로 분배하여 여러 기기가 분배된 사설 IP를
각자 연결하여 사용한다.
사설 IP 주소의 범위(대역)는 정해져 있다.
- 10.0.0.0 ~ 10.255.255.255 (Class A)
- 172.16.0.0 ~ 172.31.255.255 (Class B)
- 192.168.0.0 ~ 192.168.255.255 (Class C)
즉, 위 IP 주소 범위에 해당하는 주소는 모두 사설 IP 주소라고 보면 된다.
(일반적으로 192.168 대역의 IP 주소를 사설 IP로 가장 많이 사용한다.)
기업에서 운영하는 인프라 환경
공인망 : 공인 IP를 사용하는 네트워크 통신망
사설망 : 사설 IP를 사용하는 통신망
기업에서 사용하는 IP가 124.111.46.91 이라고 하면
해당 IP를 각각의 사내 서버로 분배해 주는 장비가 라우터다.
라우터는 공유기와 비슷한 역할을 수행하지만 대상이 다르다.
공유기 : 로컬 네트워크 내에서 여러 기기들을 연결하여 데이터를 주고받음
라우터 : 서로 다른 네트워크 간에 연결하여 데이터를 주고받음
비유
공유기 : 같은 건물 안에서 방을 연결하는 복도 역할
(각 방에 있는 사람들이 서로 소통할 수 있게 해 줌)
라우터 : 건물(네트워크)과 건물(네트워크)을 연결하는 다리 역할
(A건물에 있는 사람이 B건물에 있는 다른 사람과 소통할 수 있게 해 줌)
사실 기업에서 구성하는 네트워크는 가정에서 구성하는 네트워크보다 더 복잡하지만
전체적인 구조는 동일하다.
--
네트워크의 인터페이스와 포트
--
네트워크 인터페이스는
인터넷에 연결하기 위해서 컴퓨터에 장착하는 부품 중의 하나이다.
(기기나 네트워크에 연결하여 데이터를 송수신할 수 있도록 하는 부품)
이 네트워크 인터페이스는 IP를 가지게 된다. (할당받은 사설 IP 주소)
즉, 특정 기기에 인터넷을 연결하기 위해 네트워크 장비(공유기, 라우터 등)와 랜선으로 연결하여 IP를 할당받을 수 있게 만들어 주고 데이터를 주고받을 수 있는 기기로 만들어준다.
네트워크의 인터페이스는 무선기능을 지원하는 것과 유선기능을 지원하는 것이 있다.
- 유선 인터페이스 : 직접 기기와 네트워크 장비를 랜선으로 연결
- 무선 인터페이스 : 기기와 네트워크 장비를 와이파이로 연결
하나의 기기에는 한 개 이상의 네트워크 인터페이스를 장착할 수 있으며
일반적으로 무선 인터페이스와 유선 인터페이스 총 두 개가 장착되어 있다.
포트는
서버(컴퓨터)에서 실행되는 특정 소프트웨어의 위치를 가리키는 번호이다.
보통 서버(컴퓨터)에서는 여러 개의 소프트웨어가 실행되는데
이 중에서 특정 원하는 소프트웨어로 데이터를 전달하기 위해서는 해당 소프트웨어를 가리키는 무언가가 필요하다.
이때 어떤 소프트웨어로 데이터를 전달할지 지정하는 것이 포트 번호이다.
포트 작성 법
IP 뒤에 `:` 클론을 붙이고 포트 번호를 추가로 작성하면 된다.
192.168.0.5:80
(192.168.0.5 IP를 사용하고 있는 서버(컴퓨터) 내부에서 80번 포트를 사용 중인 소프트웨어를 가리킨다.)
포트는
물리적으로 존재하는 것이 아니고 서버(컴퓨터) 안에서 정의하여 사용하는 것이다.
네트워크를 사용해야 하는 프로그램(소프트웨어)은 실행될 때 자신이 사용할 포트를 지정할 수 있다.
일반적으로 서버에서 실행 중인 웹 서버와 통신하고 싶을 때는 80 포트 또는 443 포트를 사용하며
SSH와 통신하고 싶을 때는 22 포트를
FTP로 통신하고 싶을 때는 21 포트로 지정하여 사용한다.
위 포트를 무조건 사용해야 하는 포트는 아니지만
이렇게 사용하기로 약속을 했기 때문에 되도록 해당 역할을 하는 것들을 약속한 포트를 사용하면 된다.
사전에 약속되어 있는 포트를 Well-Known 포트라고 부른다.
--
NAT와 포트포워딩
--
네트워크 통신은 크게 아웃바운드(OutBound)와 인바운드(InBound)로 나눌 수 있다.
- 아웃바운드 = 내 서버에서 출발하는 신호
- 인바운드 = 다른 클라이언트 or 외부 서버에서 출발하여 자신의 서버로 오는 신호
여기서 외부 서버와 내부 서버의 통신이 어떻게 이루어지는지를 생각해 보면 문제가 있다는 것을 알 수 있다.
외부 서버는 전 세계에서 유일한 IP인 공인 IP를 가지고 있는데
내부 서버는 사설망 안에서만 식별이 가능한 사설 IP를 가지고 있다.
즉, 이 외부의 공인 IP와 내부의 사설 IP가 어떻게 통신이 이루어질까?
이때 사용되는 기술이 바로 NAT와 포트포워딩 기술이다.
택배나 편지를 보낼 때에는 보내는 사람과 받는 사람에 대한 정보를 작성해줘야 한다.
그래야 누가 보냈고 보낸 이에게 다시 답장을 보낼 수 있기 때문이다.
네트워크 신호를 보낼 때에도 똑같이 출발지와 목적지에 대한 정보가 있어야 한다.
1. 내부 서버(사설 IP)에서 외부 서버(공인 IP)로 통신을 보내보자.
- OutBound
- (내부 서버 -> 외부 서버)
- 출발지 : 192.168.0.4
- 도착지 : 223.130.200.107
외부의 공인 IP가 전 세계의 유일한 주소이기 때문에 목적지에 문제없이 도착이 가능할 것이다.
2. 반대로 외부 서버(공인 IP)에서 출발지였던 내부 서버(사설 IP)로 통신을 보내보자.
- OutBound 응답
- (외부 서버 -> 내부 서버)
- 출발지 : 223.130.200.107
- 도착지 : 192.168.0.4
도착지에 작성된 IP 주소는 사설 IP 주소로 특정 공간의 내부에서만 사용하는 IP이기 때문에 찾을 수가 없다.
이를 해결하려면 도착지를 사설 IP 주소가 아닌 해당 사설 IP 주소가 존재하는 공인 IP 주소로 보내야 한다.
- 도착지 : 124.111.46.91
그러면 124.111.46.91 주소로 응답이 오면 자동으로 192.168.0.4 사설 IP로 전달하도록 추가적인 처리가 필요해진다.
바로 이때 사용되는 기술이 NAT 기술이다.
NAT (Network Address Transtation)
NAT은
공인 IP와 사설 IP를 맵핑해 주는 기술이다.
(사설망을 구성하는 라우터 장비에는 모두 NAT 기능을 가지고 있다.)
쉽게 설명하자면
공인 IP와 사설 IP를 맵핑하는 테이블을 만들고
어떠한 주소로 보내고 받는지에 대한 정보를 기록해 두는 것이다.
1. 내부 서버(사설 IP)에서 외부 서버(공인 IP)로 통신을 보내보자.
- OutBound
- (내부 서버 -> 외부 서버)
- 출발지 : 124.111.46.91:10001
- 도착지 : 223.130.200.107
외부 서버로 트래픽을 전달할 때에는 사설 IP인 192.168.0.4가 아니라 124.111.46.91로 공인 IP로 변경하고
포트번호를 10001번으로 수정하여 보내게 된다.
즉, 124.111.46.91:10001 주소는 사설 IP인 192.168.0.4 주소를 대체한 주소로 동일하다고 생각하면 된다.
(여기서 정해진 포트번호는 랜덤으로 정해지는 포트번호이다.)
이렇게 하면 도착지에서 다시 출발지로 답장을 할 때 보낼 수 있게 된다.
이때 해당 정보를 NAT 테이블에 기록하게 되며 해당 기록을 가지고 요청, 응답을 수월하게 할 수 있게 된다.
2. 외부 서버(공인 IP)에서 내부 서버(사설 IP)로 통신을 보내보자.
- InBound
- (외부 서버 -> 내부 서버)
- 출발지 : 223.130.200.107
- 도착지 : 124.111.46.91:10001
요청을 보낼 때에는 기본적으로 NAT 테이블의 규칙에 맞게 자동으로 생성되는 10001, 10002번 포트로 지정하여 요청을 전달하는 방법이 있지만
보통 외부에서 사내망으로 요청을 보내는 경우에는 포트를 랜덤으로 사용하는 것보다
미리 포트를 지정해 두고 사용하는 것이 자연스럽다.
(외부에서 사내 서버로 접근한다는 것은 사내 서버에서 제공하는 특정 서비스를 사용한다는 것을 의미)
NAT 테이블에 기록된 1번이 웹 서비스를 제공하면 80 포트로,
기록된 2번이 데이터베이스를 제공한다면 5432 포트로 접근하도록 하는 것처럼
랜더 한 포트가 아니라 사전에 정의되어 있는 포트를 제공하는 것이 훨씬 자연스럽다.
하지만
NAT 테이블은 동적으로 정보를 관리하기 때문에 외부에서 서버를 접근하는데 혼란이 생길 수가 있게 된다.
이때 외부에서 사내망으로 접근할 때에는 포트 포워딩이라는 기술을 사용한다.
포트 포워딩 (Port Forwarding)
포트포워딩은
외부 네트워크의 장치들이 내부 네트워크의 특정 장치나 서비스에 접근할 수 있도록 하는 기술로
NAT과 동일하지만 사용자가 직접 NAT 테이블과 같은 맵핑 정보를 관리하는 것이다.
위 그림처럼 포트포워딩을 사용하게 되면
이전에 랜덤으로 생성된 10001과 같은 포트번호를 사용하지 않고
사설 IP에서 사용하는 포트번호 그대로 공인 IP에 포트번호를 사용하여 사용할 수 있게 된다.
--
DNS (Domain Name System)
--
일반적으로 웹 브라우저에서 네이버 or 구글 같은 웹 사이트에 접근할 때
주소창에 주소를 입력하여 접근한다.
네이버는 "www.naver.com"
구글은 "www.google.com" 이렇게 주소를 입력하여 접근을 하지
직접 네이버, 구글의 IP 주소를 입력하여 접근하지 않는다.
이렇게 IP 주소를 영문으로 된 글씨로 대체한 것을 도메인 주소라고 부른다.
DNS 서버라고 존재하는데
해당 서버에는 도메인 주소와 IP 주소를 맵핑 데이터를 가지고 있는 시스템이다.
(외부 서버에서 요청을 도메인 주소로 요청 보내면 DNS 서버를 거쳐서 IP 주소로 변경되어 요청이 전달된다.)
--
'Terminology' 카테고리의 다른 글
SOLID 원칙 ( 객체 지향 설계 원칙) (1) | 2024.10.26 |
---|---|
객체지향 프로그래밍 (OOP, Object-Oriented Programming) (0) | 2024.10.25 |
CI / CD 파이프라인 (0) | 2024.07.05 |
DevOps (Development Operations) 란? (0) | 2024.07.04 |
동기와 비동기 & 블로킹과 논-블로킹 (0) | 2024.05.09 |