📑 본 글은 <그림으로 배우는 네트워크 프로토콜>을 읽고 정리한 글입니다.

1. 네트워크의 기초
네트워크(일반적 의미)
여러 사람 또는 사물을 그물 모양으로 연결한 상태 또는 연결된 것
컴퓨터 네트워크
컴퓨터와 네트워크 장치 등이 서로 연결되어 통신할 수 있는 상태나 시스템
네트워크(정보 통신 세계에서의 의미)
- 컴퓨터끼리 연결하는 통신 경로
단말기(클라이언트)
와 컴퓨터(서버)
사이를 연결한다.
🤔 호스트 vs 노드 vs 단말기
호스트
: 네트워크 상의 IP 주소를 가진 컴퓨터
노드
: 호스트에 네트워크 장치를 추가한 것
단말기
: 네트워크 상의 어떤 장치(약간 모호한 개념)
네트워크를 구성하는 요소
- 네트워크를 물리적으로 연결하는 케이블
- 수많은 벤더에서 만든 컴퓨터, 라우터, 스위치 등의 장치
- 프로토콜
- 어떤 벤더의 장치나 환경에서도 다룰 수 있도록 표준화시킴
2. 네트워크의 역사
2-1. 네트워크의 시작: stand-alone
stand-alone
- 한 대의 단말기가 독립적으로 존재
- 작업자는 차례를 기다려 사용하는 형태 → 한 번에 한 사람만 사용 가능
- 배치처리(일괄처리) 형식
- 지금도 네트워크에 연결되지 않은 장치를 가리킨다.
2-2. TSS의 등장
TSS(Time Sharing System)
- 한 대의 컴퓨터를 여러 사람이 공유해 사용하는 시스템
- 작업자는 각자 전용 단말기를 준비해서 컴퓨터에 접속할 수 있다. → 로컬 단말기에서 원격으로 액세스 가능
- TSS로 컴퓨터와 단말기를 연결하는 1:1 통신이 네트워크의 시작이 되었다.
2-3. 인터넷의 원조, ARPANET
1970년대 컴퓨터 성능 개선, 소형화, 가격 인하
→ 일반 기업에서 컴퓨터를 도입하기 시작함
→ 컴퓨터끼리 정보를 공유하면서 작업해야할 필요성 증가
→ 컴퓨터를 네트워크로 연결해 데이터를 교환하는 기술 개발
BUT! 처음에는 다른 벤더의 장치와 통신할 수 없었다. WHY? 통신 규칙이 달라서
이 때 등장한 것은 바로!
ARPANET(Advanced Research Projects Agency NETwork)
- 알파넷!
- 인터넷의 기원이 되는 네트워크
- 미국의 4개 대학과 연구소를 연결하는 네트워크
- 세계 최초의 패킷 교환 방식의 네트워크
2-4. 회선 교환과 패킷 교환
회선 교환 방식
- 컴퓨터끼리 통신할 때, 먼저 통신 경로를 확보하고, 통신 종료까지 그 경로를 전용으로 사용하는 방식
- 하나의 회선을 여러 컴퓨터가 동시에 사용할 수 없다.
- like 전화선
패킷 교환 방식(Packet Switching)
- 전송할 데이터를 패킷 단위로 작게 나누어 전송하고, 수신한 단말기에서 원래 데이터로 복원하는 방식
- 각각의 패킷에 목적지 주소와 데이터에 관한 정보 등을 포함한 헤더를 붙여 전송한다.
- 필요한 만큼만 회선을 이용할 수 있고, 여러 사람이 회선을 공유할 수 있다.
2-5. ARPANET에서 인터넷으로
당시 네트워크는 제조사마다 독자적인 기술을 사용했다.
→ 서로 다른 제조사의 장치 간 통신이 어려웠다.
→ TCP/IP 등장; 서로 다른 장치 간에도 정상적으로 통신할 수 있게 하는 통신 프로토콜
ARPANET에서 사용되던 프로토콜: NCP → TCP/IP
ARPANET이 연결된 곳: 4곳 → 점점 늘어남
NSFNET이라는 연구 네트워크에서 ARPANET 흡수
1990년대 전 세계의 TCP/IP 네트워크가 서로 연결됨
상업용 네트워크 연결 서비스를 제공하는 ISP(Internet Service Provider) 등장
ISP의 등장으로 기업이나 일반 가정의 컴퓨터도 네트워크에 연결할 수 있게 되었다.
‘The Internet’의 기원
원래는 TCP 프로토콜 사양을 정의한 RFC에서 inter-network를 줄인 말로 The Internet을 사용했다.
1980년대 후반에는 NSFNET을 가리키는 용어로 사용되었다.
결국 전 세계에 퍼져있는 네트워크 전체를 가리키는 말이 되었다.
3. 네트워크 프로토콜
3-1. 프로토콜이 뭘까?
프로토콜(protocol)
- 컴퓨터가 서로 통신하는 절차나 표준을 규정한 것
- 사양이나 약속
- 통신할 때 미리 정해진 사양에 따라 데이터를 만들어 송수신한다.
프로토콜의 계층 구조
- 프로토콜 스택 / 프로토콜 스위트
- 네트워크 프로토콜은 역할과 목적에 따라 여러가지가 있다.
- 이런 다양한 프로토콜을 모아 계층 구조로 만든 것
- 대화나 통신할 때는 각 게층에서 필요한 프로토콜을 선택한다.
- ex) OSI 참조 모델, TCP/IP 모델
3-2. OSI 참조 모델
OSI 참조 모델
- OSI(Open Systems Interconnection) Reference Model
- 특정 제조사나 장치에 의존하지 않는 표준화된 프로토콜 스택이 필요해서 만들어졌다.
- 국제 표준 모델로서 만들어졌지만, 조금 먼저 나온 TCP/IP 모델이 실제 표준 사양으로 보급되었다.
- OSI 참조 모델을 따르는 제품은 보급되지 않았다.
- BUT! OSI 참조 모델을 기반으로 문제를 해결하는 경우도 많다. 꼭 알아두자!
OSI 7 Layers
~상위 계층~
제7층) 응용 계층(Application)
- 각 어플리케이션이 어떻게 통신하는지 구체적으로 규정
- HTTP, SMTP, SSH 등 애플리케이션의 통신 기능을 프로토콜로 정의한다.
제6층) 표현 계층(Presentation)
- 암호화나 압축, 문자 코드나 파일 형식 등 데이터 형식을 규정
- 다른 애플리케이션, 단말기 간에도 데이터를 올바르게 취급할 수 있도록 표준 형식으로 변환한다.
제5층) 세션 계층(Session)
- 애플리케이션 간 통신의 시작, 유지, 종료 등을 규정
- 각 애플리케이션의 통신이 섞이지 않도록 각각의 논리적 경로를 제어한다.
~하위 계층~
제4층) 전송 계층(Transport)
- 노드 간의 통신 신뢰성을 확보하기 위한 기능을 규정
- 상위 계층에 데이터를 전달하기 위한 포트 번호를 정의하고, 신뢰성을 확보하기 위한 메커니즘을 정의한다.
제3층) 네트워크 계층(Network)
- 다수의 네트워크 간 엔드 투 엔드 통신을 실현하는 기능을 규정
- 출발지에서 최종 목적지로 통신을 전달하기 위해 필요한 주소 체계나 라우팅 등을 정의한다.
제2층) 데이터링크 계층(Data Link)
- 직접 연결된 노드 간 통신을 실현하는 기능을 규정
- 물리적으로 연결된 장치 간에 통신을 하기 위한 주소 정의나 오류 검사 등을 한다.
제1층) 물리 계층(Physical)
- 통신 데이터를 전기 신호나 광 신호로 변환하는 등 물리적인 수단을 규정
- 데이터 링크 계층에서 받은 데이터를 전기 신호로 변환해 네트워크로 전송한다.
3-3. TCP/IP 모델
TCP/IP 모델
- 실용성을 중시한 모델
- 현재 사용되는 많은 제품과 대부분의 프로토콜이 TCP/IP 모델을 따른다.
제4층) 응용 계층(Application)
- 각 어플리케이션이 어떻게 통신하는지 구체적으로 규정
- OSI 참조 모델의 상위 계층과 거의 같은 기능을 제공한다.
제3층) 전송 계층(Transport)
- 노드 간의 통신 신뢰성을 확보하기 위한 기능을 규정
- OSI 참조 모델의 전송 계층과 거의 같은 기능을 제공한다.
제2층) 인터넷 계층(Internet)
- 다수의 네트워크 간 엔드 투 엔드 통신을 실현하는 기능을 규정
- OSI 참조 모델의 네트워크 계층과 거의 같은 기능을 제공한다.
제1층) 링크 계층(Link)
- 통신 데이터를 전기 신호나 광 신호로 변환하는 등 물리적인 수단을 규정
- OSI 참조 모델의 (물리 계층 + 데이터 링크 계층)과 거의 같은 기능을 제공한다.
4. 프로토콜과 데이터의 흐름
일반적인 컴퓨터와 네트워크 장치는 TCP/IP 프로토콜 스택을 지원한다.
TCP/IP에 따라 송수신할 때 데이터는 어떻게 흘러갈까?
프로토콜 계층 구조의 위에서부터 순서대로 처리한다.
- 응용 계층 프로토콜을 따른 데이터가 만들어진다.
- 전송 계층에서 출발지, 목적지 포트 번호와 같은 정보가 부가된다.
- 인터넷 계층에서 IP 주소 정보를 추가한다.
- 링크 계층에서 MAC 주소 정보를 추가하고, 데이터를 전기 신호로 변환하여 네트워크로 송출한다.
캡슐화
- 데이터를 프로토콜 스택의 위에서 아래로 전달하면서 계층별로 필요한 데이터를 덧붙이는 것
헤더
페이로드
PDU(Protocol Data Unit)
비캡슐화
- 데이터를 수신한 쪽에서 수행하는 캡슐화의 반대 작업
- 전기 신호를 프레임으로 변환한 뒤, 링크 계층부터 응용 계층으로 올라간다.
5. 네트워크를 구성하는 장치
리피터(Repeater)
- OSI 참조 모델의 물리 계층에서 동작하는 장치
- LAN 케이블에 흐르는
전기 신호
를 복구 및 증폭해 전송 거리를 연장
- 리피터 허브(Repeater Hub)
- 여러 개의 포트를 가진 리피터
- 하나의 포트에서 수신한 전기 신호를 증폭해 다른 모든 포트로 전송한다.
L2 스위치(L2 Switch)
- OSI 참조 모델의 데이터 링크 계층에서 동작하는 장치
- 전달된 전기 신호를 데이터 링크 계층의
프레임
으로 변환 → 프레임 헤더에 포함된 MAC 주소
정보로 목적지를 판단해 전송
- 수신한 프레임에 포함된 출발지 MAC 주소를 이용해
MAC 주소 테이블
을 작성하고 목적지 정보를 작성한다.
- 스위칭(Switching) : MAC 주소 테이블에서 해당하는 대상을 찾아서 전송
- 일반적으로 포트 많음 → 다수의 단말기 연결 가능
- 브릿지(Bridge)
- L2 스위치와 동일한 기능
- BUT! 포트 수가 적음 → 사용 잘 안 함
라우터(Router)
- OSI 참조 모델의 네트워크 계층에서 동작하는 장치
- 여러 네트워크 연결 → 다른 네트워크에 있는 단말기와 통신 할 수 있도록 함(End-to-end 통신 수행)
- 패킷의 IP 헤더를 확인하고, 목적지
IP 주소
를 자신의 라우팅 테이블
에서 검색한 후 목적지 네트워크를 판단해 전송한다.
- 라우팅(Routing) : IP 주소를 기반으로 패킷을 전송하는 것 / 서로 다른 네트워크를 연결
- 암호화, 필터링, NAT 등 다양한 기능 지원
- ISP와 연결하는 데 필요한 기능 갖추고 있음 → WAN과 LAN을 연결할 때 사용함
L3 스위치(L3 Switch)
- 라우터처럼 네트워크 계층에서 동작하고, 라우팅 기능도 있다.
- BUT! L2 스위치처럼 인터페이스 수가 많고, WAN 기능이 없다.
방화벽(Firewall)
- 네트워크의 경계에 설치해 허가되지 않은 내부 ↔ 외부 통신을 차단하는 보안 장치
- 전송된 패킷의 출발지/목적지 IP 주소, 출발지/목적지 포트 번호를 확인하여 판단한다.