목차
네트워크 주소의 표현
시스템을 설계할 때는 기능이나 목적과 함께 고유의 구분자 Identifier 를 부여하는 방법에 대해서도 먼저 고려해야 함.
디지털화된 컴퓨터에서는 구분자를 숫자로 된 주소로 표현할 수밖에 없다.
➡️ 이러한 주소 표현 방식은 일반 사용자에게 불편하므로 보통은 외우기 쉬운 기호 형식의 이름을 추가로 사용한다.
[구분자의 의미]
주소와 이름은 일대일(1:1) 관계가 이루어지며, 이들을 연결 하는 기능이 필요함.
대상을 유일하게 구별하는 구분자는 일반적으로 다음의 네 가지 특징이 있음
[구분자의 특징]
- 유일성: 구분자의 가장 중요한 역할은 대상 시스템을 서로 구분하여 지칭하는 것임. 따라서 서로 다른 시스템이 같은 구분자를 갖지 않는 유일성을 보장해야 한다.
- 확장성: 시스템은 시간이 흐르면서 이용자가 증가하는 보편화 과정이 진행되므로 자연스럽게 규모가 확장됨. 따라서 사용하는 구분자의 양도 증가된다. 시스템의 최대 수용 규모를 예측 하여 구분자의 최대 한계를 올바르게 설정하지 않으면, 표현할 수 있는 공간의 크기가 제한되어 시스템의 확장성도 제한받게 된다.
- 편리성: 시스템 설계 과정에서 부여되는 구분자는 시스템의 내부 처리 구조를 효율적으로 운용할수 있도록 해줘야함. 컴퓨터 시스템은 내부적으로 숫자에 기반해 처리되기 때문에 구분자의 체계도 숫자 위주임. 또한 배치, 검색 등을 원활하게 수행하기 위해 보통 일반인이 의미를 이해할 수 없는 형식을 갖는다. 이처럼 시스템 내부 동작에 종속된 구분자의 주소 체계는 사용자가 쉽게 이해하기 어려우므로 기호로 된 이름을 추가로 부여한다. 따라서 숫자로 된 주소와 문자로 된 이름을 모두 가지므로 이를 매핑 Mapping 하는 기능이 필요하다.
- 정보의 함축: 구분자는 응용 환경에 필요한 다양한 정보를 포함하는 경우가 많음. (예를 들어, 주민번호는 생년월일, 성별 등을 알 수 있는 숫자로 구성됨). 이처럼 구분자는 응용 환경에 적절히 대응할 수 있는 정보를 포함해야 함
주소와 이름
시스템을 지칭하는 구분자는 주소와 이름을 제공해야 한다.
- 주소 Address: 내부에서 처리되는 숫자 기반의 주소
- 이름 Name: 사용자의 이해와 편리성을 도모하는 기호로 된 이름
일반 사용자는 내부 주소를 몰라도 이름만으로 시스템에 접근할 수 있어야 함
이름과 주소를 연결하는 방법은 시스템 내부적으로 처리되어야 한다.
네트워크의 규모가 크지 않아서 관리하는 시스템의 개수가 적은 경우에는 이를 관리하는 시스템도 크게 복잡하지 않음.
➡️ 간단한 형식의 주소와 이름을 사용할 수 있으므로
➡️ 그러나 관리 대상이 많아지면 주소와 이름의 공간이 커지고, 이를 관리하는 시스템의 기능도 복잡해짐
네트워크에는 여러 종류의 주소와 이름이 존재한다.
➡️ 이는 각 계층의 기능을 담당하는 프로토콜마다 주소를 독립적으로 관리하기 때문이다.
➡️ 예를 들어, IP 프로토콜은 호스트를 구분하기 위하여 IP 주소를 사용하며, 데이터 링크 계층에서는 LAN 카드별로 MAC 주소를 따로 부여 한다. 전송 계층을 수행하는 TCP에서는 호스트에서 수행되는 네트워크 프로세스마다 별도의 포트 Port 주소를 할당하고 관리한다.
IP 주소(IP Address)
네트워크 계층의 기능을 수행하는 IP 프로토콜이 호스트를 구분하기 위하여 사용하는 주소 체계임.
임의의 호스트를 인터넷에 연결하려면 반드시 IP 주소를 할당받아야 함.
IP 주소는 32비트의 이진 숫자로 구성되는데, 보통 8비트씩 네 부분으로 나누어 십진수로 표현한다.
[IP 주소의 표현]
- 32비트의 이진수 11010011 11011111 11001001 00011110은 일반 사용자가 외우기 쉽지 않음
➡️ 따라서 이를 네 개의 십진수로 변환한 후 각각을 점(.)으로 구분한 211.223.201.30으로 표기한다.
👀 진수 변환 코드 보기
# 10진수 -> 2진수
b = bin(211)
print(b) # 0b11010011
# 2진수 -> 10진수
a = int('11010011', 2)
print(a) #211
IP 주소는 유일성을 보장하기 위해서 국제 표준화 기구가 전체 주소를 관리하고 할당하기 때문에 중복 주소의 사용을 원천적으로 차단함.
IP 프로토콜이 처음 개발될 당시에는 현재처럼 폭넓게 활용되리라 예측하지 못했음.
➡️ IP 주소로 표현할 수 있는 최대 주소 공간의 크기를 32비트로 제한함으로써 확장성에 많은 문제점이 야기되고 있음.
➡️ 이를 해결하기 위하여 새로운 프로토콜인 IPv6 Internet Protocol Version 6 에서는 주소 표현 공간을 128비트로 확장함.
➡️ 그리고 현재의 IP 프로토콜은 IPv6과 구분하기 위해 IPv4로 표현함
IP 주소는 임의로 할당되는 것이 아니라, 특정 규칙에 따라 인접한 숫자를 그룹으로 묶어 관리.
➡️ IP 주소는 경로를 선택할 때 중요한 기준이 됨
- 네트워크 1: IP 주소가 211.223.201로 시작하는 호스트들이 있음
- 네트워크 2: IP 주소가 211.223.202로 시작하는 호스트들이 있음
➡️ 왼쪽의 인터넷에서 임의의 호스트가 보낸 패킷이 중간의 라우터에 도착한 경우,
이 패킷의 목적지 주소가 211.223.201.30이라면 당연히 네트워크 1로 중개해야 함.
이처럼 인터넷에서 IP 주소는 패킷의 경로를 결정하는 데 중요한 역할을 한다.
호스트 이름
인터넷에서 특정 호스트와 연결하려면 반드시 해당 호스트의 IP 주소를 알아야 함
➡ 그런데 숫자로 된 IP 주소는 기억하기 힘들다.
➡ 그래서 의미 파악이 쉬운 문자로 된 호스트 이름을 사용하는 것이 일반적임
[일반 사용자가 문자로 된 호스트 이름을 사용하였을 때 IP 주소로 변환되는 과정]
- 네트워크 계층의 IP 프로토콜: 호스트를 구분하는 용도로 IP 주소만 사용함
- 네트워크 응용 프로그램: 중간 계층에서 이를 변환
일반적으로 FTP, 텔넷과 같은 네트워크 응용 프로그램은 실행 과정에서 사용자로부터 호스트 이름을 명령어 인수로 입력받음
DNS Domain Name System 라는 이름과 주소 변환 기능을 이용해서 IP 주소를 얻음 - 일반 사용자: IP 주소보다는 문자로 된 호스트 이름을 사용함
[DNS 시스템]
은 호스트 이름을 국가 도메인, 단체 종류, 단체 이름, 호스트라는 네 계층 구조로 나누고, 이들을 점(.)으로 구분해서 표기함
<호스트>.<단체 이름>.<단체 종류>.<국가 도메인>
예를 들어, zebra.korea.co.kr과 같은 호스트 이름은 대한민국(kr)에 있는 일반 회사(co) 중에서 korea라는 이름의 회사에 소속된 zebra라는 호스트를 의미한다.
국가 도메인은 호스트가 위치한 국가의 이름을 두 글자의 약자로 표시함
나라마다 고유한 국가 도메인이 존재함
- kr: 한국
- jp: 일본
- us: 미국
단체 종류는 기관의 성격에 따라 부여함
단체 이름은 보통 단체를 상징하는 이름을 사용함
예를 들어, 회사는 회사명을, 학교는 학교 이름을 사용.
- co: company 회사
- ac: academy 교육기관
- go: government 정부 소속 기관
주소 정보의 관리
도메인 이름 Domain Name: 일반 사용자가 호스트를 지칭할 때 사용하는 호스트 이름
인터넷에서는 이를 IP 주소로 변환하는 작업이 필요함.
초기 인터넷에서는 아주 간단한 방법으로 호스트 이름과 IP 주소를 변환하였으나, 지금은 DNS라는 분산 데이터베이스 시스 템을 사용해서 보다 체계적인 방법으로 관리하고 있음
호스트 파일
[호스트 이름과 IP 주소를 변환하는 간단한 방법]
- 특정 파일(예 UNIX 시스템의 /etc/hosts) 에 호스트 이름과 IP 주소의 조합을 기록, 관리하는 것이다.
- 장점: 네트워크 응용 프로그램에서는 사용자가 입력한 호스트 이름을 이 파일에서 검색하여 일대일로 대응된 IP 주소 정보를 쉽게 얻을 수 있음.
- 호스트 파일은 한 줄에 하나의 호스트 정보가 기록되며, 일반 텍스트 문서 형식 으로 보관됨. 즉, 아래 그림을 예로 들면 호스트 이름이 white.korea.co.kr인 시스템의 IP 주소는 211.223.201.27임.
[네트워크 갱신]
네트워크 관리자는 관리 대상이 되는 모든 컴퓨터의 호스트 정보를 주기적으로 갱신하고, 이정보를 네트워크에 있는 모든 컴퓨터가 복사하도록 함으로써 정보의 일관성을 유지해야 해야함.
위 그림은 네트워크 관리자가 white.korea.co.kr에서 호스트 정보를 갱신할 때 갱신 정보를 다른 네 개의 호스트가 복사하여 저장하는 모습을 보여줌.
호스트 파일을 갱신하고 복사하는 작업은 보통 시스템 관리자가 수작업으로 한다.
호스트가 추가되거나 삭제되면 먼저 네트워크 관리자의 호스트에서 갱신 작업이 이루어진다.
그런데 호스트 파일 갱신은 생각보다 자주 발생하지 않기 때문에 호스트 파일을 복사하는 작업도 흔치않음.
또한 시스템 관리자가 잦은 변경을 원하지 않아서 급하지 않은 갱신은 부분적으로 늦추기도 함.
DNS
[기존 방법의 문제점]
- 호스트 파일로 주소와 이름 정보를 관리하는 것은 간단한 반면 대부분 수동으로 작업해야 한다는 단점이 있다.
- 따라서 호스트 수가 증가할수록 네트워크 관리자가 호스트 파일을 갱신하고 복사하는 작업에 많은 시간과 노력을 들여야 함.
- 특히 인터넷처럼 전 세계 컴퓨터가 연결된 네트워크 환경에서는 호스트 파일에 의한 주소와 이름의 변환 작업이 사실상 불가능하다고 볼 수 있음.
[문제 해결: DNS]
- 이러한 문제점을 해결하기 위하여 고안된 DNS Domain Name System는 주소와 이름 정보를 자동으로 유지하고 관리하는 분산 데이터베이스 시스템임.
- 호스트 주소와 이름 정보는 네임 서버 Name Server 라는 특정한 관리 호스트가 유지하고, 주소 변환 작업이 필요한 클라이언트는 네임 서버에 요청해서 IP 주소를 얻음
[DNS의 구조]
- DNS는 하나의 집중화된 네임 서버가 전체 호스트의 정보를 관리하지 않고, 여러 네임 서버에 분산하여 관리 하도록 설계됨.
➡ 네트워크가 커지면 네임 서버에 보관되는 정보의 양도 자연스럽게 많아지기 때문 - 계층 구조로 연결된 네임 서버는 자신이 관리하는 영역에 위치한 호스트 정보만 관리하며, 정보를 상호 교환하는 협력 관계를 통해서 전체 호스트 정보를 일관성 있게 유지한다.
기타 주소
네트워크에서 사용하는 주소는 이를 사용하는 환경에 따라 다양하다. OSI 7계층 모델의 각계층에서도 목적에 따라 여러 형태의 주소가 사용됨.
인터넷에서 일반 사용자가 접할 수 있는 대표적인 주소는 다음과 같다.
[MAC 주소]
- MAC 주소는 계층 2의 MAC Medium Access Protocol 계층에서 사용
- 일반적으로 LAN 카드에 내장되어 있음.
- 물리 계층을 통해 데이터를 전송할 때는 MAC 주소를 이용해서 호스트를 구분
- 따라서 네트워크 계층에서 데이터 링크 계층으로 데이터를 전송할 때는 먼저 IP 주소를 MAC 주소로 변환해야 함
[IP 주소]
- 네트워크 계층의 기능을 수행하는 IP 프로토콜에서 사용되며, IP 패킷이 지나가는 경로를 결정하는 라우팅의 기준이 된다.
[포트 주소: Port Address]
- 전송 계층에서 사용함
- 호스트에서 실행되는 프로세스를 구분해줌
- TCP와 UDP가 독립적으로 포트 주소를 관리하며, 포트 번호 또는 소켓 주소라는 용어를 사용하기도 한다.
[메일 주소]
- 메일 주소는 응용 계층의 메일 시스템에서 사용자를 구분하려고 사용한다. yerim@korea.co.kr처럼 사용자 이름과 호스트 이름을 @ 문자로 구분해 표기함.
요약
아래 키워드를 보고 뭘 배웠는지 생각해보고 키워드를 눌러 내가 생각한 내용과 같은지 확인해보자
📜 용어의 이해
네트워크는 전송 매체를 매개로 서로 연결되어 데이터를 교환하는 시스템의 모음이며, 시스템과 전송 매체의 연결 지점에 대한 규격을 인터페이스라 한다. 또한 시스템이 데이터를 교환할 때는 임의의 통신 규칙을 따르는데, 이를 프로토콜이라 한다. 프로토콜의 기능과 같이 서로 다른 시스템을 상호 연동해 동작시키려면 연동 형식의 통일이 필요하고, 이 통일을 표준화라 한다.
📜 OSI 7계층 모델
국제 표준화 단체인 ISO에서는 OSI 7계층 모델을 제안하여 네트워크에 연결된 시스템이 갖추 어야 할 기능을 상세히 정의하고 있다. 이에 따르면 네트워크에 연결된 호스트들은 7개 계층(물리 계층, 데이터 링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층, 응용 계층)으로 모듈화된 통신 기능을 갖추어야 한다.
📜 인터네트워킹
네트워크와 네트워크의 연결을 인터네트워킹이라 하며, 인터네트워킹 기능을 수행하는 시스템을 일반적으로 게이트웨이라 부른다. 게이트웨이는 기능에 따라 종류가 다양하지만 리피터, 브리지, 라우터 등이 가장 일반적인 구분 방식이다. 리피터는 물리 계층의 기능을 지원하며, 브리 지는 리피터 기능에 데이터 링크 계층의 기능이 추가된 것으로 물리 계층에서 발생한 오류를 해결해준다. 라우터는 물리 계층, 데이터 링크 계층, 네트워크 계층의 기능을 지원한다.
📜 데이터 단위
네트워크 프로토콜을 사용해 데이터를 교환할 때는 먼저 데이터를 특정 형태로 규격화하는 작업이 필요하다. 계층에 상관없이 사용할 때는 통칭하여 PDU라 부른다. 특별히 네트워크 계층 에서는 패킷, 데이터 링크 계층에서는 프레임이라는 용어가 사용된다.
📜 주소의 표현
시스템을 설계할 때는 기능이나 목적과 함께 고유의 구분자를 부여하는데, 디지털화된 컴퓨터 에서는 숫자로 된 주소로 표현할 수밖에 없다. 그러나 이러한 주소 표현 방식은 일반 사용자에게 불편하므로 보통은 외우기 쉬운 기호 형식의 이름을 추가로 사용한다. 주소와 이름은 일대일 관계가 이루어지며, 이들을 연결하는 기능이 필요하다. 구분자는 유일성, 확장성, 편리성, 함축성이라는 네 가지 특징을 갖는다.
📜 IP 주소
IP 주소는 네트워크 계층의 기능을 수행하는 IP 프로토콜이 호스트를 구분하기 위하여 사용하는 주소 체계이다. 임의의 호스트를 인터넷에 연결하려면 반드시 IP 주소를 할당받아야 한다. IP 주소는 32비트의 이진 숫자로 구성되는데, 보통 8비트씩 네 부분으로 나누어 십진수로 표현 한다. IP 주소는 유일성을 보장하기 위해서 국제 표준화 기구가 전체 주소를 관리하고 할당하기 때문에 중복 주소의 사용을 원천적으로 차단한다.
📜 DNS 서비스
인터넷에서 호스트와 연결하려면 해당 호스트의 IP 주소를 알아야 한다. 그런데 숫자로 된 IP 주소는 기억하기 힘들어서 의미 파악이 쉬운 문자로 된 호스트 이름을 사용하는 것이 일반적이 다. FTP, 텔넷과 같은 네트워크 응용 프로그램은 실행 과정에서 사용자로부터 호스트 이름을 명령어 인수로 입력받는다. 따라서 가장 먼저 수행할 작업은 DNS라는 이름과 주소 변환 기능을 이용해서 IP 주소를 얻는 것이다.
📜 다양한 주소의 종류
네트워크에서 사용하는 주소는 이를 사용하는 환경에 따라 다양하다. OSI 7계층 모델의 각 계층에서도 목적에 따라 여러 형태의 주소가 사용된다. MAC 주소는 계층 2의 MAC 계층에서 사용하며, 일반적으로 LAN 카드에 내장되어 있다. 물리 계층을 통해 데이터를 전송할 때는 MAC 주소를 이용해서 호스트를 구분한다. IP 주소는 네트워크 계층의 기능을 수행하는 IP 프로토콜 에서 사용되며, IP 패킷이 지나가는 경로를 결정하는 라우팅의 기준이 된다. 포트 주소는 전송 계층에서 사용하며, 호스트에서 실행되는 프로세스를 구분해준다. 메일 주소는 응용 계층의 메일 시스템에서 사용자를 구분하려고 사용