네트워크
컴퓨터나 기타 기기들이 리소스를 공유하거나 데이터를 주고 받기 위해 유선 혹은 무선으로 연결된 통신체계
네트워크의 기능들
- 에플리케이션 목적에 맞는 통신 방법 제공
- 신뢰할 수 있는 데이터 전송 방법 제공
- 네트워크 간의 최적의 통신 경로 결정
- 목적지로 데이터 전송
- 노드 사이의 데이터 전송
네트워크 프로토콜
사람과 사람간의 제대로 된 대화를 하려면 같은 언어를 사용하는 것처럼
네트워크 간에도 통신 기능이 제대로 동작하기 위해서는 참여자들 사이에서 약속된 통신 방법이 있어야 한다.
네트워크 통신을 하기 위해서 통신에 참여하는 주체들이 따라야 하는 형식, 절차, 규약
즉, 네트워크 상에서 통신을 하기 위해서는 네트워크 프로토콜에 따라서 통신을 해야 한다는 것이다.
위에 보이는 네트워크의 기능들을 과연 단 하나의 프로토콜로 구현할 수 있을까?
이 모든 기능들을 단 하나의 프로토콜로 구현할 수 없다.
예를 들면, 우리가 백엔드 애플리케이션을 개발하는데 모든 기능을 하나의 클래스 파일안에서 구현하겠다는 것과 동일하다.
그렇게 구현한다면 유지보수도 힘들고 새로운 기능을 추가하는 것도 힘들 것이다.
그래서 모듈화를 진행해야 한다.그러면 어떤 구조로 모듈화를 해야할까?
1. 에플리케이션 목적에 맞는 통신 방법 제공
애플리케이션 사이에서 필요한 기능
2. 신뢰할 수 있는 데이터 전송 방법 제공
애플리케이션 사이에서 어떻게 안정적으로 데이터를 전송할지에 대한 기능
3. 목적지로 데이터 전송
어떻게 하면 실제로 데이터를 목적지로 보낼지에 대한 기능
4. 노드 사이의 데이터 전송
여러 노드들을 거칠 때 노드끼리 데이터를 전송하는 가눙
계층 구조
네트워크가 제공하는 기능들을 살펴보니 각 기능이 계층별로 동작하는 것 같다.
네트워크 기능을 계층 구조로 모델링하게 되고 그렇게 나온 모델이 아래의 모델들이다.
- OSI model (7 Layer): 범용적인 네트워크 구조
- TCP/ IP stack (4 Layer): 인터넷에 특화된 네트워크 구조
OSI 7 Layer
각 레이어에 맞게 트로토콜이 세분화 되어서 구현
각 레이어의 프로토콜은 하위 레이어의 프로토콜이 제공하는 기능을 사용하여 동작
즉, 네트워크 레이어에서 구현된 프로토콜은 아래 있는 Data Link 레이어을 사용해서 자신의 기능을 구현
Physical Layer (L1)
- bits 단위의 데이터 전송 기능
- 물리적인 매개체를 통해서 실제로 데이터를 전송
Data Link Layer (L2)
- 직접 연결된 노드 간의 통신 담당 기능
- MAC 주소 기반 통신 (ARP - IP 주소를 MAC 주소로 변환해줘야 함.)
- 하나의 노드에서 다음 노드로 데이터를 보낼 수 있음
Network Layer (L3)
- 호스트 간의 통신 담당 (IP 프로토콜) 기능
- 목적지 호스트로 데이터 전송 (IP 주소를 활용)
- 목적지 호스트의 IP 주소를 가지고 있음.
- 네트워크 간의 최적의 경로 결정
Transport Layer (L4)
- 애플리케이션 간의 통신 담당 기능
- 목적지 애플리케이션에 데이터를 전송하기 위해서 어떤 방식의 통신을 할 것인가?
- 목적지 애플리케이션으로 데이터 전송
- 안정적이고 신뢰할 수 있는 데이터 전송 보장 (TCP)
- 필수 기능만 제공 (UDP)
Session Layer (L5)
- 애플리케이션 간의 통신에서 세션을 관리 기능
- RPC(remote procedure call)
Presentation Layer (L6)
- 애플리케이션 간의 통신에서 메시지 포맷 관리 기능
- 인코딩 ⟷ 디코딩
- 암호화 ⟷ 복호화
- 압축 ⟷ 압출 풀기
Application Layer (L7)
- 애플리케이션 목적에 맞는 통신 방법을 제공 기능
- HTTP, DNS, SMTP, FTP..
- 만약 두 애플리케이션이 통신을 통해서 웹 페이지를 보여주고 싶다면 HTTP 프로토콜을 사용해서 통신
- 파일을 서버에 업로드하고 다운로드 하는 애플리케이션을 만들고 싶다면 FTP 프로토콜을 사용해서 통신
- google.com 처럼 도메인을 IP주소로 바꾸고 싶다면 DNS 프로토콜을 사용
'Network' 카테고리의 다른 글
[Network] HTTP 버전별 특징 (0) | 2024.11.24 |
---|---|
[Network] Stateful vs Stateless (2) | 2024.11.24 |
[Network] 멱등성이란? (0) | 2024.11.24 |
REST API 란? (0) | 2024.10.21 |
[Http] 캐시와 조건부 요청 (0) | 2024.04.28 |