본 카테고리는 컴퓨터 네트워크에 대해 공부한 내용을 정리하는 공간으로 활용할 예정이다. 기본적인 내용으로 처음부터 끝까지 훑고, 이후에 부족한 부분을 수정 및 보완하여 개선해 나갈 계획이다.
= 컴퓨터 네트워크의 종류 =
컴퓨터 네트워크는 사실 단 2대의 컴퓨터로도 만들 수 있다. 메시지나 파일 등의 데이터를 주고받을 수 있는 '엮임'이 형성되면 네트워크가 구성되었다고 말할 수 있다. 그리고 대수가 많아질수록 규모가 커지는 것이다.
LAN(Local Area Network)이나 WAN(Wide Area Network)같은 근거리, 원거리로 나누는 네트워크 구분이 있다. 여러 네트워크 중에서도 가장 큰 규모를 갖는 것이 바로 인터넷이다. 그 외에도 모바일 기기를 연결해주는 무선 네트워크(또는 모바일 네트워크)가 있다.
= 컴퓨터 네트워크의 역할 =
컴퓨터 네트워크는 개인적인 용도에서 비즈니스와 커뮤니티까지, 그리고 작은 파일에서부터 주변기기 공유까지 다양한 목적에 따라 많은 역할을 하고 있다.
- 이메일
- 채팅
- VoIP(인터넷 전화)
- 파일 공유
- 주변기기(프린터, 복합기 등) 공유
- 분산처리
- 파일 전송
- 원격 제어
- 웹
- 동영상 및 음악 스트리밍 서비스
= 서버와 클라이언트 그리고 P2P =
서버와 클라이언트는 서비스를 제공하느냐 받느냐의 역할에 따라 구분된다. 즉, 둘다 같은 컴퓨터다. 어떤 역할을 하느냐에 따라 서버가 되기도 하고, 클라이언트가 되기도 하는 것이다. 그래서 P2P(peer-to-peer) 방식의 통신방식에서는 각 컴퓨터가 서버와 클라이언트의 역할을 동시에 수행한다.
= 데이터 교환 방식 =
과거 아날로그 방식의 유선 전화나 3G 휴대폰은 회선 교환 방식을 사용했었다. 회선 교환 방식은 회선을 독점하기에 보안에 강하고, 절차 정보의 형식에 제약을 받지 않기에 통신경로 접속 시간이 짧다. 또한 안정적이고 고밀도 데이터 통신에 유리하다. 하지만, 두 시스템이 통신회선을 독점하기에 효율성이 크게 떨어지게 된다.
근래에 들어서는 다자간 통신이 필요한 경우가 대부분이기에 패킷 교환 방식을 사용한다. 패킷 교환 방식은 데이터를 잘게 쪼갠 후, 행선지를 표시하는 꼬리표(주소표시 등)를 붙여서 공용 회선에 흘려보내는 방식이다. 그래서 당연히, 회선 다중화로 효율성과 경제성이 크게 향상된다. 하지만 데이터 단위 길이 제한, 보안에 문제가 생길 수 있다는 점, 패킷의 양이 많아지면 속도가 느려질 수 있다는 점이 단점이 된다.
= 네트워크 계층 모델 =
컴퓨터 네트워크 구성에는 다양한 통신 장비와 프로그램이 어울리게 되는데, 각 역할에 따라 분류하고 추상화한 것을 계층 모델이라 한다.
계층 분류 | 역할 | 관련 키워드 | 비고 |
애플리케이션 계층 | 웹 서비스, 이메일 등의 서비스 | 서버, 클라이언트, HTTP, SMPT, FTP, SSH, POP3, ... | 서비스 제공 |
트랜스포트 계층 | 애플리케이션 계층과 인터넷 계층 사이에서 데이터 중계 | TCP, UDP | 데이터 통신에 관여 |
인터넷 계층 | 목적지의 IP주소로 데이터 전달 |
IP, IPv4, IPv6, ICMP, ... | |
네트워크 인터페이스 계층 | 네트워크 어댑터를 통해 데이터 전달 |
이더넷, 무선 LAN, MAC, ... |
두 개의 네트워킹 주체가 각자의 계층을 갖고 있고, 하나의 애플리케이션 계층에서 출발하여 가장 아래까지 내려간다. 그리고 상대의 가장 하단에서 그 주체의 애플리케이션 계층까지 올라가게 된다.
뭔가 이름도 생소하고 복잡해보이지만, 이해를 하게 되면 익히는 게 조금 더 수월해진다. 물류/택배 시스템에 비유하여 이해하면 도움이 많이 된다. 요즘에는 홈쇼핑이나 배송 주문을 하면, 재고 창고에서부터 시작해서 어느 영업소를 거쳐 어떤 물류센터에 모였다가 어디를 거쳐 배달이 되는지 아주 편리한 UI로 감상(?)할 수 있다. 계층 모델도 이와 유사하다. 애플리케이션 계층에서 주문/발주를 하면 각 계층에서는 정해진 역할에 따라 분담된 업무를 수행하는 것이다.
계층 | 네트워크 인터페이스 계층 | 인터넷 계층 | 트랜스포트 계층 | 애플리케이션 계층 |
정보 | 유선LAN에서 필요한 정보 | 목적지 컴퓨터 식별 번호 | 데이터 결합 순서와 데이터를 받을 프로그램 식별 번호 |
상대에게 보낼 데이터 |
설명 | 하드웨어에서 필요 | 수신 측의 컴퓨터를 식별 | 순서에 맞게 결합 및 목적지 프로그램에 전달 |
처리 |
다시 풀어보면, 데이터를 전송하기에 앞서 패킷으로 작게 분할하는데 이 패킷들의 송수신지 정보가 헤더에 붙어있는 것이다. 마치 택배 박스 위에 송장이 붙는 것처럼.
하나의 컴퓨터에서 데이터가 출발하면 목적지 컴퓨터에서는 역순으로 작업이 진행된다. 먼저, 네트워크 인터페이스 계층에서는 데이터를 수신하는 역할을 하고, 이후에 컴퓨터 식별을 위한 번호가 인터넷 계층에서 읽히고, 그 목적지 컴퓨터에서 모여진 패킷들이 재조합되고 데이터를 받을 프로그램을 찾는 역할이 트랜스포트 계층에서 일어나는 것이다. 몇몇 패킷이 누락되었다면 재전송 요청은 트랜스포트 계층에서 한다. 그래서 애플리케이션 계층에만 노출된 우리는 편리한 환경을 갖게 된다.
예시
- 애플리케이션 계층에서 www.destination.network에 요청
- 트랜스포트 계층에서 49153번 포트(출발지 컴퓨터의 포트)에서 80번 포트(목적지 컴퓨터의 포트)로 요청
- 인터넷 계층에서 (192.168.219.120)에서 (xxx.xxx.xxx.xxx)로 요청
- 네트워크 인터페이스 계층에서 이더넷 헤더 부착
= 통신규약과 프로토콜 =
네트워크 통신을 원활히 이루려면 정해진 절차나 규칙이 필요하다. 이를 프로토콜이라고 한다. 어떤 절차에 따라 무엇을 어떻게 전송할 것인지, 전송에 실패했을 때에 대한 대안은 무엇인지 등이 정의되어 있다.
웹 브라우저는 HTTP라는 프로토콜에 따라 동작하고, OS 내장 통신 프로그램은 TCP/IP를 사용하며, 네트워크 어댑터용 디바이스 드라이버, LAN케이블, 네트워크 허브 등은 이더넷이라는 프로토콜을 따르게 된다.
이처럼 각 계층별로 정해진 프로토콜에 의해 그 역할이 전문화 및 세분화되어 있다. 그래서 하나의 통신을 이루기 위해서는 이들이 모두 잘 조합되어야 한다.
아래의 표와 같이, 각 계층별로 자신의 프로토콜에 맞는 헤더를 부착하여 통신 패킷을 전달하게 된다.
웹페이지 조회 | 이더넷 헤더 | IP 헤더 | TCP 헤더 | HTTP 데이터 |
인터넷 전화 | IEEE 802.11 헤더 | IP 헤더 | UDP 헤더 | VoIP 데이터 |
과거에는 OS별로 통신 프로토콜이 맞지 않았고, ISP(internet service provider)별로도 프로토콜이 맞지 않았다고 한다. 즉, 바로 옆의 컴퓨터라도 하나는 윈도우고 다른쪽이 맥이라면 통신이 되지 않았다. 오늘날은 TCP/IP를 기반으로 통신을 하기에 이러한 문제가 모두 해결되었고, 이를 통해 더욱 유연한 네트워크를 구성할 수 있게 되었다.