-
네트워크의 기능
- 애플리케이션 목적에 맞는 통신 방법 제공
- 신뢰할 수 있는 데이터 전송 방법 제공
- 어플리케이션 사이 어떻게 안정적인 데이터를 전송할지
- 네트워크 간 최적의 통신 경로 결정
- 목적지로 데이터 전공
- 어플리케이션 동작하는 host 사이를 어떻게 전송할지
- 노드 사이 데이터 전송
- 목적지로 가며 거치는 노드들 사이에서 어떻게 데이터를 전송할지
-
네트워크 프로토콜 : 네트워크 통신을 하기 위해 통신에 참여하는 주체들이 따라야 하는 형식, 절차, 규약
-
네트워크의 모든 기능을 하나의 프로토콜로 구현할 수 없음
- 구현한다 하더라도 유지보수의 어려움 존재
- 하나의 class에서 모든 기능을 구현하는 것과 같음
- 모듈화 필요(기능별 분리)
- 어플리케이션끼리 어떻게 통신할지, 데이터를 어떻게 보낼지, 노드 사이에 데이터를 어떻게 보낼지 등 계층별로 기능이 동작하는 것 같아 계층구조로 모델링
-
OSI model(7 Layer) : 범용적인 네트워크 구조
-
TCP/IP stack(4 layer) : 인터넷에 특화된 네트워크 구조
-
각 레이어에 맞게 프로토콜이 세분화돼서 구현
- 각 레이어의 프로토콜은 하위 레이어의 프로토콜이 제공하는 기능을 사용하여 동작(network layer : data link layer의 기능 사용하여 기능 구현)
-
application layer : 애플리케이션 목적에 맞는 통신 방법 제공
- HTTP, DNS, SMTP, FTP 등
- 실제로 애플리케이션간 데이터를 보내는 것은 하위 계층 어딘가에서 진행하는 것으로 application layer에서 신경쓸 대상이 아님
-
presentation layer : 애플리케이션 간의 통신에서 메시지 포맷 관리
- 인코딩 <-> 디코딩 / 암호화 <-> 복호화 / 압축 <-> 압축 풀기
-
session layer : 애플리케이션 간의 통신에서 세션을 관리
- RPC(remote procedure call)
-
위 3개는 application layer로 보는게 좋을 듯
-
transport layer : 애플리케이션 간 통신 담당
- 목적지 애플리케이션으로 데이터 전송하기 위한 통신 방법
- 실제로 목적지까지 찾아가는 것은 관심사가 아님(Network Layer의 관심사)
- 안정적이고 신뢰할 수 있는 데이터 전송 보장 TCP
- 필수 기능만 제공 UDP
-
newtwork layer : 호스트 간 통신 담당(IP)
- 목적지 호스트로 데이터 전송
- 데이터를 목적지까지 찾아갈 수 있는 프로토콜
- 네트워크 간의 최적의 경로 결정
- 경로를 담당하는 것이지 각각의 노드들이 어떻게 전송할지는 관심사가 아님
-
data link layer : 직접 연결된 노드 간의 통신 담당
- MAC 주소 기반 통신
- ARP : IP -> MAC 주소 변환 프로토콜
-
physical layer : bit 단위로 데이터 전송
-
encapsulation : 포장 / decapsulation : 포장 풀기