이번 시간엔 정말 중요한 패킷의 생성 원리와 캡슐화에 대해 조금 더 심층적으로 배워보는 시간을 가져보겠다.
네트워크에 대한 설명을 이해할 수 있는 기본지식이 있다는 걸 가정하고 설명하겠다.
먼저 설명에 앞서 전체적으로 이해를 위한 그림을 첨부하겠다.
글이 읽기 부담스러우면 마지막에 전체적인 과정을 재정리한 부분만 봐도 된다.
프로그램과 네트워크 통신의 시작
모든 네트워크 통신은 사용자 모드 애플리케이션 프로세스(User Mode Application Process)에서 시작된다.
예를 들어, 우리가 웹 브라우저를 사용할 때, 웹 페이지를 요청하는 것은 브라우저(사용자 모드 애플리케이션)가 서버에 데이터를 요청하는 과정에서 시작된다.
이 애플리케이션은 소켓을 통해 네트워크와 통신한다.
소켓은 네트워크와 상호작용하기 위한 인터페이스로, 프로세스가 데이터를 보내거나 받을 수 있는 창구 같은 역할을 한다.
소켓의 본질은 파일의 일종이다..
모든 프로그램은 이 파일에다 대고 읽던지 쓰던지 하는 것이다.
애플리케이션은 소켓을 통해 데이터를 "읽고 쓰는" 방식으로 네트워크에 접근한다고 이해하면 된다. 다른 말로는 입출력.
데이터 스트림과 TCP의 역할
네트워크 통신을 위해 애플리케이션은 데이터를 스트림(stream) 형태로 처리한다.
스트림은 시작은 있지만 끝은 정해져 있지 않은, 연속적으로 이어진 데이터의 흐름을 의미한다.
예를 들자면, 웹 페이지의 HTML 파일이나 동영상 파일이 스트림 형태로 전송될 수 있다.
애플리케이션이 소켓을 통해 데이터를 보내면, 이 데이터는 TCP에 의해 처리된다.
TCP는 데이터를 세그먼트 단위로 나누어 처리한다.
세그먼트들은 stream을 일정한 크기로 자르는 것이다. 이 데이터 조각들의 단위를 세그먼트라 한다.
이제 네트워크를 통해 전송될 준비가 된 상태인 것이다.
패킷과 인캡슐레이션
세그먼트는 네트워크 계층으로 전달되어 패킷이라는 형식으로 인캡슐레이션 된다.
인캡슐레이션이란, 데이터를 하나의 캡슐로 싸는 과정으로, 각 세그먼트는 네트워크 계층의 정보를 포함하는 헤더와 함께 패킷으로 변환된다.
패킷은 네트워크 상에서 데이터를 전송하기 위한 기본 단위로 사용된다.
패킷은 크게 두 부분으로 나뉜다
- 헤더(Header) : 택배의 송장처럼 데이터가 어디로 가야 하는지, 어떻게 전송되어야 하는지에 대한 정보(IP 주소, TCP 정보 등)를 포함한다.
- 페이로드(Payload) : 실제 전송하려는 데이터 내용이다. TCP 세그먼트의 데이터 부분이다.
일반적으로 패킷의 최대 크기(Maximum Transmission Unit)는 1500바이트고,
특별한 일이 없다면 IP헤더 20 바이트와 TCP 헤더 20바이트가 기본적으로 사용되므로 실제 데이터 페이로드는 최대 1460 바이트가 된다.
프레임과 데이터 링크 계층
패킷은 데이터 링크 계층으로 내려가 프레임으로 다시 인캡슐레이션된다.
프레임은 패킷을 포함한 데이터 링크 계층의 데이터 단위이다.
로컬 네트워크(ex: 이더넷, 와이파이)에서 사용된다.
프레임은 로컬 네트워크에서 데이터를 전송하기 위해 패킷에 추가적인 링크 계층 헤더(ex: MAC 주소 정보 등)를 붙인 것이다.
프레임의 구조는 헤더, 페이로드, 트레일러로 나뉜다.
- 헤더(Header): MAC 주소와 같은 데이터 링크 계층의 정보가 포함된다.
- 페이로드(Payload): 이 페이로드 부분에 패킷이 들어간다.
- 트레일러(Trailer): 데이터 무결성을 확인하기 위한 체크섬 같은 정보를 포함할 수 있다.
전체적인 과정 재정리
1. 애플리케이션 프로세스가 데이터를 소켓을 통해 보냄. 프로세스가 소켓에 입출력을 시도하면 그 때 메모리에 저장된 스트림 형식의 기다란 데이터를 일정단위로 끊는 것.
2. 4계층인 TCP는 데이터를 세그먼트로 나누고 각 세그먼트를 전송할 준비를 함.
3. 3계층인 네트워크 계층은 세그먼트를 패킷으로 인캡슐레이션함.
4. 2계층인 데이터 링크 계층은 프레임으로 인캡슐레이션하여 로컬 네트워크로 전송함.
세그먼트는 택배에 들어있는 내용물이다. 실제 전송하려는 데이터라고 할 수 있다.
내용물을 택배에 집어넣는 걸 인캡슐레이션.
감싸서 박스 안에 넣었다고 생각하면 된다.
패킷은 세그먼트를 담고 있는 택배 상자이다.
택배 상자에는 송장(헤더)과 내용물(페이로드)이 있다.
송장은 상자에 붙어 있어서 누구나 볼 수 있다.
프레임은 택배 상자가 실린 트럭이다.
트럭(프레임)에는 여러 개의 택배 상자(패킷)가 실릴 수 잇다.
트럭에는 택배 상자가 어디로 가야 할지 알려주는 정보(MAC주소 등)가 있다.
DPI
DPI(Deep Packet Inspection)는 심층 패킷 검사라고 한다.
네트워크 보안을 강화하기 위해 사용하는 고급 패킷 검사 기법이다.
택배 송장은 모두에게 공개되어 있고 택배 회사는 이 송장을 보고 어떤 택배가 어디로 가야 하는지 알 수 있다.
그러나 때로는 보안이나 규정 준수를 위해 택배 회사가 택배 상자 안의 내용물까지 확인하는 경우가 있다.
이걸 DPI라고 한다.
DPI는 일반적인 패킷 검사와 달리, 네트워크 트래픽을 분석하기 위해 패킷의 헤더뿐만 아니라 페이로드까지 검사하는 기술이다.
데이터가 네트워크를 통해 전송되는 과정에서 여러 계층을 거치며 인캡슐레이션되고, 마지막에 수신지에서 디캡슐레이션되어 원래의 데이터로 복원된다.
참고 자료 : https://www.youtube.com/watch?v=Bz-K-DPfioE&list=PLXvgR_grOs1BFH-TuqFsfHqbh-gpMbFoy&index=14
'Network' 카테고리의 다른 글
네트워크 관리사 2급 서브넷팅, 라우터 문제 풀어보기 (1) | 2024.11.05 |
---|---|
방화벽의 발전 과정 (6) | 2024.10.01 |
NAT란 무엇일까? (46) | 2024.08.09 |
프록시의 구조와 작동원리 (37) | 2024.07.28 |
라우터/L3 스위치: 3계층 장비 -2 (36) | 2024.07.27 |