어떤 학문을 배울 때 용어가 중요하다는 것은 누구나 알고있는 사실이다.
특히나 컴퓨터 네트워크란 학문은 개념적 학문이 아닌 실제로 구현되고 동작하는 컴포넌트들의 집합으로 설명되기 때문에 용어 하나하나의 의미에 민감할 수 밖에 없다.
따라서 공부를 시작하기에 앞서 용어 정리를 좀 하고나서! 진행하면 어떨까 해서...
네트워크는 활용되는 만큼이나 많은 용어들이 생기고 사라지고 하는 것 같다.
새로운 용어를 표현할 때 기존의 단어를 재활용 하거나 문자의 축약형을 사용하는 경우도 많이 보았다.
(IP = Internet Protocol 같은 경우라던가...)
있는 그대로의 사전적 의미보다 올바른 용어의 활용처를 아는 것이 중요하겠다.
컴퓨터 네트워크
컴퓨터 네트워크란 시스템들이 프로토콜을 이용해 통신하는 집합체이다.
시스템들은 전송매체와 인터페이스로 연결돼있고 시스템들 사이에 통신을 하기 위해선 프로토콜이 필요하다.
네트워크끼리 통신하기 위해선 경로를 정해주는 라우터라는 중개장비가 필요하다.
시스템이란 내부 규칙을 가지고 능동적으로 움직이는 대상을 말한다.
물리적 대상(컴퓨터)뿐만 아니라 논리적 대상(프로세스나 프로그램)또한 시스템이라고 할 수 있다.
시스템은 작은 시스템이 모여 큰 시스템을 이루기도 하므로 크기를 기준으로 분류를 하지 않는다.
이러한 시스템들이 소통을 하려면 이들을 이어주려는 '무언가'가 필요하다.
이 무언가를 해주는 것이 전송매체이다.
전송매체는 케이블, 공기, 무선전파등이며 이를 통해 시스템들끼리 소통한다.
그러나 시스템들이 모두 동일한 규격을 가지고 있는 것은 아니기 때문에 전송매체들이 시스템에 접근할 수 있도록 해주는 통일된 접근점(Access Point)이 필요하다. 우리는 이를 인터페이스라고 한다.
인터페이스는 시스템을 연결하기 위한 '표준화'된 접근 방식으로, 상호간 데이터 교환을 위한 논리적 규격과 물리적 규격을 표준화시킨 것이다.
인터페이스는 능력과 권한이 같은 시스템 사이일 수도, 서비스를 주고받는 상하관계가 있는 계층사이일 수도 있다.
그런데 시스템끼리 연결하는 것 까진 좋다. 그런데 시스템이 규격이 달라서 전송매체를 인터페이스를 통해 접촉시켰는데... 시스템이 생각하는 방법도 다르지 않을까?
이런 생각방식의 차이를 하나로 규정해 시스템끼리 통신할 수 있도록 정한 규칙을 프로토콜이라고 한다.
프로토콜과 인터페이스 둘 다 규칙이긴 하나 인터페이스와 달리 프로토콜은 주고받는 정보의 형식과 그 절차에 무게를 둔다. 또한 프로토콜은 주종관계가 존재하지 않는다.
정리
컴퓨터 네트워크는 전송매체를 매개로 서로 연결해 데이터를 교환하는 시스템의 모음이다.
시스템 - 전송매체 사이의 접촉 규격을 인터페이스라 하며 시스템의 데이터 교환에 쓰이는 통신규칙을 프로토콜이라고 한다.
흔히 사용하는 인터넷이란 네트워크는 IP프로토콜이라는 표준화된 Layer3 프로토콜을 사용하는 네트워크 집합체이다.
시스템
컴퓨터 네트워크는 시스템과 전송매체로 이루어져있다. 즉 큰 틀인 네트워크를 이해하기 위해선 그 안의 작은 나사들인 시스템을 이해하는 것이 중요하다.
네트워크 시스템은 수행기능에 따라 노드, 호스트, 클라이언트, 서버로 구분될 수 있다.
노드는 인터넷에 연결된 시스템을 가장 일반화하여 호칭하는 것이다. 호스트는 컴퓨팅 기능이 있는 시스템을 의미한다.
보통 우리가 응용프로그램을 사용할 때 호스트의 응용프로그램을 사용하므로 사용자가 네트워크에 접근할 수 있게 해주는 창구 역할을 한다.
호스트는 여기서 좀 더 세분화 되어서 클라이언트와 서버로 나뉜다.
무언가를 요청하면 클라이언트, 응답하면 서버이다.
이때 이 클라이언트 호스트와 서버 호스트는 고정된 것이 아니라 호스트 사이의 관계에 따라 결정된다.
네트워크 기능
이전에 서로다른 시스템들끼리 통신하기 위해서 프로토콜을 정해야 한다고 했었다. 하지만 네트워크가 커져가고, 더 많은 다른 네트워크와 통신하면서 세분화된 통신규격이 필요해졌음을 느꼈고, ISO라는 단체에서 OSI 7계층 모델이란 것을 선보였다.
OSI 7계층모델은 시스템이 7개의 계층으로 모듈화 된 통신기능을 갖추어야 한다.
모듈화는 각 기능이 다른 모듈에 영향을 받지 않고 독립적으로 실행할 수 있도록 만드는 것이다.
시스템이 데이터를 전송할 때, 응용계층 -> 표현계층 -> 세션계층을 통해 데이터를 Kernel 영역에 넘겨준다.
Kernel 영역에서 전송계층 -> 네트워크계층 -> 데이터링크계층 -> 물리계층을 통해 데이터를 상대 호스트로 넘겨준다.
응용계층은 사용자 프로그램이다.
표현계층은 데이터의 의미를 해석해서 호스트간 표준화된 방식으로 데이터를 연결하게 해준다.
그리고 데이터를 보호하는 기능을 지원하는데 이에 대표적인 것이 암호화와 압축이 있다.
세션계층은 응용환경상의 사용자간 대화 개념의 연결을 지원한다.
위 세개의 계층은 사용자 프로그램 영역에서 존재하며 전송계층 이하의 계층에 서비스를 받기 위해 System call을 이용한다.
전송계층은 송수신 호스트가 아닌 송수신 프로세스간 연결을 지원한다. 여기서 송수신 프로세스란 최종적인 데이터 교환 주체이며 전송계층은 데이터 전송의 최종적 경로상의 양 끝단 연결을 지원한다. 연결형 송신을 지원하는 TCP와 비연결형 송신을 지원하는 UDP가 있다.
네트워크계층은 송수신 호스트들이 데이터를 전송하려면 전송 루트가 필요한데 IP와 라우터의 중개기능을 이용해 올바른 경로를 찾을 수 있도록 지원해준다. 특정 지역에 데이터가 몰리면 이 루트를 피해가야 하는데 이런 혼잡제어 기능 또한 네트워크 계층에서 처리한다.
네트워크계층 vs 전송계층
우편부가 편지를 보낼 때 사람 이름이 아닌 집 주소를 보고 배달한다. 여기서 집 주소를 보는 것이 네트워크 계층.
이제 집에 도착한 편지를 어머니께서 보고 아들에게 줄지 딸에게 줄지 고민하는데 이를 결정하게 해주는 것이 전송 계층.
데이터링크계층은 데이터 전송이 외부 요인에 의해서 오류가 발생할 수 있는데 이 오류를 처리하거나 인지하기 위한 기능을 지원한다. 오류는 데이터 변형과 데이터 손실이 있는데 호스트들이 이 사실을 인지해야 한다. 수신 호스트는 패킷이 분실되어서 안오는 건지, 아얘 안보내서 안오는 건지 알 수 없다. 따라서 보통 송신 호스트가 패킷 분실에 대한 오류 처리를 담당하며 재전송을 통해 오류를 해결한다.
물리계층은 호스트를 전송매체와 연결하기위한 인터페이스와 전송매체의 특성을 다룬다.
프로토콜과 인터페이스
위에서 서로 다른 호스트 사이의 통신을 지원하기 위해서 전송매체와 호스트 사이의 연결을 위한 인터페이스와 데이터 전송 규칙인 프로토콜을 사용한다고 했었다. 여기서 인터페이스는 호스트와 전송매체 사이의 접근점 뿐만 아니라 서로 다른 계층사이의 연결도 지원한다.
예를들어 네트워크 계층과 전송 계층사이의 통신은 인터페이스를 통해 이루어진다. 특별히 하위 계층(네트워크)이 상위 계층(전송)에게 제공하는 인터페이스를 서비스라고 하며 두 계층은 서비스를 주고 받으며 통신한다고 생각해도 된다.
프로토콜은 서로 다른 호스트 사이에서 데이터를 전송할 때 유기적,독립적으로 소통하기 위해 정해진 규칙으로 상하계층은 서비스를 통해 소통하는 반면에 같은 계층끼리는 프로토콜을 통해 소통한다.
여기서 주의해야 할 점은 같은 계층끼리 프로토콜을 통해 소통한다는 것은 직접 소통이 아니라 간접 소통이라는 점!
호스트 A의 3계층이 호스트 B의 3계층에게 프로토콜을 통해 소통하려면, 2계층 1계층의 서비스를 통해서 아래로 아래로 그리고 위로 위로 명령을 전달해서 이루어지는 간접적인 방식!
그러면 호스트사이의 데이터전송은 프로토콜을 이용하는데 위에서 우리는 네트워크끼리의 통신은 라우터라는 중개장비를 이용한다고 했다.
서로 다른 네트워크가 서로 유기적으로 연결되어 소통가능한 구조를 인터네트워킹이라고 한다. 두 개의 네트워크가 꼭 서로 같은 프로토콜을 사용할 필요는 없는데, 두 호스트 사이의 인터네트워크시스템이 호스트들의 물리적, 논리적 인터페이스를 모두 지원하기 때문이다.
인터네트워크 시스템은 게이트웨이라고 불리며 리피터, 브릿지, 라우터 세 개가 있다. 이 세 개는 각각 1계층, 2계층, 3계층까지의 기능을 지원한다.
리피터(L1) : 물리계층 - 단순 증폭
브릿지(L2) : 링크계층 - 오류 검출
라우터(L3) : 네트워크 계층 - 경로 선택 기능 (라우팅 테이블에 호스트 정보 저장)
데이터 단위
지금까지 우리는 호스트가 소통할 수 있도록 하는 연결 규격과 통신규칙에 대해서 알아보았다. 그러면 이런 규격과 규칙을 통해 전달되는 데이터는 날 것의 데이터로 전송되는 것일까?
아니다! 프로토콜을 통해 데이터 교환시 규격화 과정이란 것이 필요하다. 이런 규격화된 데이터를 통상 PDU라고 부르고 계층마다 그 이름이 다르다.
TPDU - 전송계층에서 사용하며 TCP는 세그먼트, UDP는 데이터그램 이라고 부른다.
NPDU - 네트워크계층에서 사용하며 패킷이라고 부른다.
DPDU - 데이터링크계층에서 사용하며 프레임이라고 부른다.
네트워크 주소
호스트와 네트워크 사이 통신 규격과 데이터에 대해서 알아보았는데... 호스트끼리 데이터를 전송하고 주고 받는데 문제가 안되는데 이제 누구한테? 보낼지 그리고 호스트를 어떻게 구분할 지를 안정했다..! 이는 아주 중요하다.
시스템 설계시에 고유한 구분자 설정도 고려해야 한다. 주소와 이름은 1:1 매칭되며 구분자는 '유일성', '확장성', '편리성', 정보의함축' 이 필요하다.
네트워크주소에서 특히 두드러지는 것이 편리성이다.
시스템 내부 처리 구조에 의해 주소가 처리되기 위해서는 숫자로 된 주소가 필요하다. 하지만 사람들은 숫자로 된 주소보다 기호로 된 주소(문자열)이 더 편하기 때문에 이러한 기호로된 주소와 숫자로 된 주소의 일대일 매칭이 필요하다. 이러한 것을 편리성이라고한다.
IP주소
IP주소는 네트워크 계층에서 사용하는 구분자(주소) 이다. 현재 IPv4를 사용하며 32bit의 주소공간을 가진다.
현재 공간의 부족으로 IPv6도 사용하는데 이는 128bit의 주소공간을 가지며 거의 무한대의 호스트를 수용할 수 있다.
이 IP주소는 각 호스트마다 유일해야 하기 때문에 OSI기구가 전체 IP주소를 관리하고 할당하며 유일성을 보장한다!
또한 IP주소는 숫자 형식이기 때문에 사람이 사용하기에 편리성이 부족하다. 따라서 숫자 주소를 호스트이름, 도메이이름이라 하는 문자열 주소를 사용해서 받아와야 하는데 이러한 주소 변환 기능을 DNS가 실행해준다.
사용자가 상위 계층에서 네트워크 계층에 주소를 보내기전, 상위 계층에서 DNS에 호스트이름을 전송해주면, DNS는 이에 맵핑되는 숫자주소를 건내주고, 이 주소를 통해 호스트는 다른 호스트와 통신할 수 있다.
DNS는 호스트파일에 IP와 호스트이름을 1:1로 매칭시켜놓는데 DNS가 없었다면 네트워크 관리자가 이를 수작업으로 진행했어야 했다. 그러나 오늘날의 인터넷에서 이를 진행하기는 사실상 불가능하기 때문에 분산데이터 시스템인 DNS가 등장하게 된 것!
이제 이 호스트 파일은 DNS의 네임서버가 관리한다. 클라이언트는 네임서버에 요청해 IP를 받는다.
네임서버의 수가 많으므로 정보를 분산하여 저장하고 상호교환하는 협력의 관계를 유지하며 서비스를 유지한다.
기타주소
MAC 주소 : 데이터링크계층의 MAC계층에서 사용하는 주소로 주로 LAN카드에 내장되어있음. 물리계층에서는 IP주소가 아닌 MAC주소로 호스트를 구분하기 때문에 네트워크계층에서 전송시 주소변환이 필요함.
IP 주소 : IP패킷이 지나가는 경로를 설정하는 라우팅의 기준
포트 주소 : 전송계층에서 호스트를 구분하는 기준. TCP/UDP에서 각각 독립적으로 관리하며, 포트 번호, 소켓 주소 라고도 함.
메일 주소 : 응용계층에서 사용자 구분용으로 사용한다.
2021-11-06
'Computer Science > Computer Network' 카테고리의 다른 글
데이터 링크 계층 (0) | 2021.11.24 |
---|---|
MAC 계층 (0) | 2021.11.18 |
데이터 전송의 기초 (0) | 2021.11.17 |
네트워크 기술 (0) | 2021.11.12 |
네트워크 모델 (0) | 2021.11.09 |