2024. 5. 22. 16:52ㆍCS/네트워크
참고 자료 : 널널한 개발자님의 외워서 끝내는 네트워크 핵심이론 - 기초
IPv4주소의 기본 구조
IPv4주소는 32bit로 이루어져있으며 8bit씩 온점으로 구분된다.
그리고 8bit는 0부터 255까지의 수를 표현할 수 있다. 이 말은 총 4개로 나누었을 때 각각의 값이 255를 넘을 수 없다는 말이다.
중요한 것은 IPv4주소가 Network ID와 Host ID로 구분된다는 것이다. 맨 뒤 8bit는 Host ID에 해당하며 호스트를 식별하는데 사용된다. 비유하면 강남구 역삼동 82번지라는 주소가 있을 때, 강남구 역삼동에 해당하는 것이 Network ID이고 세부적인 번지가 바로 Host ID이다.
L3 Packet
L3 IP Packet은 Header와 Payload로 나뉘며 이는 상대적인 분류이다.
최대 크기를 MTU(Maximum Transmission Unit)라고 하며, 네트워크에 연결된 장치가 받아들일 수 있는 최대 데이터 패킷 크기를 의미한다. 그림에서 헤더부터 페이로드까지가 MTU이다. 보통 1500byte(1.4xKB)정도의 크기이다.
헤더는 시작주소와 도착주소가 명시되어있다.
En/Decapsulation
Encapsulation은 단위화를 시키는 과정이고 Decapsulation은 단위화된 데이터를 뜯어보는 과정이라고 생각하면 된다.
L7에서 L1으로 내려오면서 데이터의 단위는 Stream ➡ Segment ➡ Packet ➡ Frame 으로 단위가 변화한다.
이때 Segment는 IP Packet의 Payload에 들어오고, 다시 IP Packet은 L2 Frame의 Payload로 들어오는 구조를 갖게된다.
이 과정이 Encapsulation이다. 마치 마트료시카의 작은 인형을 큰 인형 안에 넣는 과정이라고 생각하면 된다.
이 과정과 반대로 Payload 안에 겹겹히 포장되어있는 데이터를 하나씩 뜯어보는 과정이 Decapsulation이다.
패킷의 생성, 전달, 소멸
해당 그림의 플로우에 중점을 맞춰 어떤 흐름으로 생성되고 전달되며 소멸하는지를 파악하자.
강의에서도 반복적으로 다루는 그림이다. 네트워크 플로우를 운영체제의 구조와 함께 익히는 것이 매우 중요하다.
이 과정은 데이터를 전송하는 입장에서 바라본 플로우이다.
우선 User mode의 Process가 Data를 전송한다고 생각해보자. 이 때 Kernel mode로 진입하기 위해서는 Socket을 거쳐야한다.
Socket은 TCP/IP를 User모드의 Application프로세스가 접근할 수 있도록 File형식으로 추상화한 인터페이스이다.
그리고 Kernel mode에 TCP와 IP protocol이 있고, L4 계층부터 Data에 TCP Header가 붙게 된다. 이 데이터의 단위를 Segement라고 한다. 그리고 L3 계층에서 IP Header가 붙어 Packet으로 데이터 단위가 변경된다. 그 다음에 L2계층에서 ethernet Header가 붙어 Frame이 된다. 그 후 하드웨어 영역에 접근하게 되면 NIC가 데이터를 받아 L2 Access 스위치로 전송되고 후에 라우터를 거쳐 인터넷 세상으로 데이터가 나가게 된다.
계층별 데이터 단위
그렇다면 위의 플로우에 따라 계층별로 데이터의 단위가 어떻게 변경되는지 흐름을 잡아보자.
우선 Chrome 브라우저가 실행되고 해당 프로세스는 Stream이라는 데이터 덩어리를 전송하게 된다. 이 Stream은 연속적인 긴 데이터의 형태라고 보면 된다. Stream이 Socket에 write되고 Kernel mode로 넘어가게되면 이 연속적인 데이터 덩어리를 단위에 맞게 잘라주어야한다. Segment 같은 경우에는 최대 크기가 MSS(1460byte)로 규정되어있고, IP Packet인 경우에는 앞전에 설명한 것처럼 MTU(1500byte)로 규정되어있다. 따라서 분할이라는 과정을 거쳐 Stream을 MSS에 맞게 잘게 분할한다. 그리고 Segment는 다시 MTU에 맞게 분할의 과정을 거친다.
요약
- L5 ~ L7 : Stream
- L4 : TCP Segment
- L3 : IP Packet
- L1 ~ L2 : Frame
그 외에 UDP protocol인 경우 Datagram이라는 단위로 표현되기도 하는데 참고사항으로 알아두자.
'CS > 네트워크' 카테고리의 다른 글
L3 ▶ Subnet Mask (0) | 2024.05.23 |
---|---|
L3 ▶ IPv4 Header 형식 (0) | 2024.05.23 |
✨중요✨ TCP/IP 송수신 구조 (0) | 2024.05.22 |
L2 ▶ NIC, L2 Frame, LAN 카드 그리고 MAC 주소 (0) | 2024.05.22 |
OSI 7 layer 식별자와 Host와 스위치 (0) | 2024.05.21 |