네트워크 통신의 간략한 추상화 구조
4단계로 나눈 네트워크 구조 분석
네트워크는 간단하게는 4부분으로 나눌수 있다.
•
User:
사용자 공간으로서, 이는 일반적인 애플리케이션이 실행되는 공간이다. 여기서 실행된 애플리케이션이 커널을 통해서 하드웨어 및 시스템 리소스에 접근한다.
◦
웹브라우저, 이메일 클라이언트 같은 응용프로그램이 실행 되는 곳
•
Kernel:
여기서 시스템 리소스, 하드웨어 인터페이스, 네트워크 스택 등이 관리된다.
커널공간은 운영 체제의 핵심 부분이 실행되는 영역이다.
◦
네트워크 통신, 메모리 관리, 프로세스 관리 등의 기능을 제공. 네트워크 계층에서 데이터를 전송하고 수신하는 주요 역할을 한다.
•
S/W:
소프트웨어 부분으로서 네트워크 통신을 지원하는 프로토콜 스택과 관련된 계층을 포함한다. 사실 L3 (Network Layer) 부터 L7 (Application Layer)까지를 포함한다.
◦
통신을 위한 경로 설정, 오류 제어를 담당한다. IP, TCP/UDP, HTTP, FTP 등의 프로토콜이 이 부분에 해당 된다.
•
H/W :
하드웨어 부분으로서 네트워크 통신을 물리적으로 수행하는 장치를 포함한다.
◦
실제 데이터 전송을 위한 물리적인 매체 (케이블, 라우터, 스위치 등)와 데이터 링크 계층에서 프레임 전송을 담당한다. MAC 주소를 이용해서 장치를 식별한다.
Department of Defense Model (DoD)
“DoD는 (Department of Defense)의 약자로, 미국 국방부를 의미한다. TCP/IP 모델이 처음 개발될 때, 미국 국방부의 프로젝트 (ARPANET)에서 유래했기 때문에 TCP/IP 모델을 DoD모델이라고도 부른다. DoD모델(TCP/IP 모델)은 네트워크 통신을 네 가지 계층으로 나누어 구분한다.” —Application Layer (응용 계층) —Transport Layer (전송 계층) —Internet Layer (인터넷 계층) —Access Layer (링크 계층)
•
Application Layer :
사용자가 직접 상호작용하는 애플리케이션이 위치하는 계층
◦
네트워크 서비스와 애플리케이션 간의 인터페이스를 제공한다. HTTP, FTP, SMTP, DNS 등의 프로토콜이 이 계층에 포함된다.
•
Transport Layer:
종단 간 데이터 전송을 담당하는 계층이다.
◦
데이터 세그먼트를 전송하고, 오류 검출 및 수정, 데이터 흐름 제어등을 수행한다. TCP와 UDP가 이 계층에 포함된다.
•
Internet Layer:
데이터를 목적지까지 전송하기 위한 경로 설정을 담당하는 계층이다.
◦
IP 주소를 사용하여 패킷을 라우팅하고 네트워크 간에 데이터를 전송한다. 이 계층에서는 IP가 주요 프로토콜이다.
•
Access Layer:
물리적인 데이터 전송 매체와 관련된 모든 것을 다루는 계층이다.
◦
데이터의 실제 전송을 위한 하드웨어 및 소프트웨어 인터페이스를 포함한다. 네트워크 인터페이스 카드(NIC), 드라이버, 이더넷과 같은 데이터 링크 프로토콜이 이 계층에 포함된다.
소켓 프로그래밍 작동 방식
위 그림은 소켓이 파일과 유사한 인터페이스를 통해 어떻게 프로세스간 통신을 지원하는지 간단히 나타내고 있다.
프로세스가 네트워크 통신을 수행하기 위해 소켓을 생성하고, 이를 통해서 TCP 또는 UDP 프로토콜을 사용하여 데이터를 주고 받는다. 이 데이터는 IP를 통해 네트워크를 통해 전달되고, 하드웨어 계층에서 실제적인 물리적 전송이 이루어진다.
•
Process (프로세스) :
프로세스는 실행 중인 프로그램의 인스턴스라고 보면 된다. 네트워크 통신을 위해서 프로세스는 소켓을 사용하여 다른 프로세스와 데이터를 주고 받는다.
◦
사용자 애플리케이션이 네트워크 통신을 수행하는 주체이다. (웹 브라우저 / 서버 어플리케이션)
•
File VS Socket :
그림에서는 파일과 소켓 인터페이스가 비교되고 있는데[, 소켓은 파일과 유사한 인터페이스를 가지지만 네트워크 통신을 위해 사용된다.
◦
파일은 로컬 파일 시스템과의 인터페이스를 제공하는 반면, 소켓은 네트워크 상의 다른 컴퓨터와의 통신을 가능하게 한다. 소켓을 통해서 프로세스가 데이터를 읽고 쓸 수 있다.
•
TCP / UDP :
TCP와 UDP는 전송 계층에서 사용되는 두 가지 주요 프로토콜이다.
◦
TCP - 신뢰성 있는 데이터 전송을 제공하며, 연결 지향적이다. 데이터는 순서대로 도착하고 오류없이 전달 될 수 있도록 보장한다.
◦
UDP - 비연결 지향적이며, 신뢰성보다는 빠른 전송이 중요할 때 사용된다. 데이터를 독립적으로 전송하며, 순서 보장이다 오류 수정 기능이 없다.
•
IP :
IP는 네트워크 계층에서 데이터를 목적지까지 전달하는 역할을 한다.
◦
데이터 패킷을 라우팅하고 네트워크 간에 전송한다. IP 주소를 사용하여 송신자와 수신자를 식별한다.
•
Driver 와 NIC (Network Interface Card) :
드라이버와 네트워크 인터페이스 카드는 네트워크 하드웨어와 통신하는 소프트웨어 구성 요소이다.
◦
드라이버는 운영 체제와 네트워크 하드웨어 간의 인터페이스를 제공하며, NIC는 실제 데이터 전송을 수행한다.