///
Search

L3 Layer - 1

IPv4 주소의 구조

IP는 L3 레이어(네트워크 계층)
IP 주소는 기본적으로 32비트로 구성되며, 해당 비트를 8비트씩 4개로 나눕니다.
8비트는 28=2562^8 = 256 으로 구성되며,
만약 이진 비트가 1111111로 구성되면, Broadcast일 수 있습니다.

IP주소란 무엇인가?

기본적으로 host에 대한 식별자입니다.
IP(인터넷 프로토콜)를 사용하는 인터넷망에서 인터넷에 연결된 컴퓨터 한 대를 식별하기 위해 부여하는 고유 번호입니다.
Network 계층인 L3 계층의 IP는 IPv4로 가정했을 때, 32비트 주소 체계를 갖습니다.
32비트 = 8비트 * 4입니다.
8비트는 282^8이며, 총 256가지(0~255)의 경우의 수를 가집니다. 이때, 255는 11111111이므로 이는 broadcast일 수 있음을 고민해야 합니다.
32비트 주소 체계를 어떤 구성에 따라 쪼개서 관리를 하는데, 이 구성은 다음과 같습니다.

ipconfig(ifconfig)

8개의 비트씩 쪼갠 후, dot(.)을 통해 구분합니다.
.으로 구분되는 하나의 숫자 단위는 8비트이므로, 0~255까지의 숫자 범위를 갖습니다.
IP 주소는 기본적으로 총 32비트 중 24비트를 잘라서 이를 Network ID로 구분하고, 마지막 8비트Host ID로 구분합니다. 이를 우리 실생활에 빗대어 이해하면 서울시 강남구 역삼동 ~번지라는 주소가 있을 때, 읍면동까지의 주소가 Network ID가 되고 마지막 번지수가 Host ID가 되는 것입니다.
 주소를 통한 IP 구분
networkID
서울시 강남구 역삼동
택배를 보낼 때, 보낼 트럭을 구분
어느 네트워크로 보낼지 구분
HostID
번지
정확히 어디로 보낼 지 구분
네트워크에 속한 호스트 구분

L3 Packet

L3 패킷
패킷은 단위 데이터로 구성됩니다. (무엇인가를 감싸서 단위 데이터로 만듦)
16진수 덩어리로 구성됩니다.
L2에서는 프레임으로 불립니다.
프레임에서는 크기가 중요하지 않지만 패킷은 다릅니다.
패킷이라는 말은 L3 IP 패킷으로 외우는 것이 좋습니다.
패킷의 구조
헤더(header)페이로드(payload)로 나뉘며, 이는 상대적인 분류입니다.
헤더의 비유 : 송장
Src (출발지) : 출발지
Dst (목적지) : 목적지
페이로드 : 택배 상자
HTTP 메시지의 시작 줄과 HTTP 헤더를 묶어서 요청 헤드(head)라고 부르며,이와 반대로 HTTP 메시지의 페이로드는 본문(body)이라고 합니다.
패킷의 최대 크기는 MTU(Maximum Transmission Unit)
이는 1500byte
굉장히 작다.
Wireshark를 통해 네트워크를 읽어보기
분석 결과

Encapsulation, Decapsulation

Encapsulation(캡슐화)
러시아 목각 인형과 택배를 떠올리면
택배의 경우, 박스를 구해와서 내용물을 담고 박스 안에 넣은 후 포장을 합니다. 이 과정이 결국 캡슐화입니다.
단위화 : 포장해서 보이지 않게 함
어떤 단위화가 이루어지려면 포장이 필요하다. (이 경우 박스 단위로 바뀌었다.)
박스에 내용물을 넣으면 안의 내용물을 알 수 없다는 특징으로 보안적인 의미도 가진다.
IP(L3) 패킷은 모두 L2 프레임의 Payload가 됩니다.
L4 패킷L3 패킷(IP 패킷)의 Payload가 됩니다.
L4 패킷의 Payload, 즉 TCP 세그먼트 안에는 또 다른 것들이 포함됩니다.
TCP 안에서는 Stream이라는 것이 포함됩니다.
Decapsulation
외부(L2 Frame)의 Header을 제거해서 내부 L3의 IP packet을 드러낸다

패킷의 생성, 전달, 소멸

패킷의 생성, 전달, 소멸의 과정은 택배 전송 과정에 비유할 수 있다
port 번호 : 이름
host : 집
packet : 택배
header : 송장
만약 인터넷을 통해 어떤 데이터를 송신해야 할 프로세스가 있다면, 데이터를 패킷(Packet)으로 만들어 게이트웨이에 전달해야 합니다.
게이트웨이는 분류 체계에 따라 라우팅을 하고, IPv4의 목적지로 패킷을 전달한 후 포트 번호에 패킷을 전송합니다.
어떤 데이터가 있다고 가정할 때, 이 데이터를 TCP 소켓Write(Send)합니다. (소켓은 파일의 일종입니다)
이제 데이터가 하위 계층으로 내려가며 L4 - TCP를 만나게 되면 TCP(Header) + Data(Payload)의 덩어리가 되는데 이 한 덩어리를 '세그먼트(Segment)'라고 부릅니다.
이 세그먼트가 한 층 더 내려가면 앞단에 L3-IP 헤더가 추가되고, 한 계층 더 내려가면 L2 - 이더넷 프레임 헤더가 추가됩니다.
소켓 → L4 세그먼트 → L3 패킷 → L2 프레임
이더넷 프레임의 채로 타고 나가서 L2 Access Switch 등을 만난 후 라우트 게이트웨이를 만나 인터넷망으로 나가게 됩니다.

계층별 데이터 단위

Socket = File
User mode- Stream
연속적으로 이어진 크기를 정확히 알 수 없는 큰 데이터. 이 StreamSocket에 Write하는 것.
Kernel mode 단위
TCP - Segment
TCP(Header) + Data(Payload)
최대 단위 - MSS(Maximum Segment Size)
1460Bytes
IP - Packet
IP 헤더 + [TCP(Header) + Data(Payload)] - payload
최대 단위 - MTU(Maximum Transmission Unit)
1500Bytes
L1 ~ L2 수준의 단위 - Frame
Segmentation
Segment, Packet의 최대 단위는 약 1500 바이트 수준입니다. 그러나 Stream에서 전송하려는 데이터의 크기가 4MB라면 처리할 수 있는 최대 단위의 용량을 초과하게 됩니다. 이런 경우에는 TCP와 맞닿는 지점에서 분할이 이루어지며, 이를 Segmentation이라고 합니다.
즉, Stream으로 연속적으로 긴 데이터를 MSS 크기로 자른 후, 인터넷이라는 환경에서 유통되는 MTU 사이즈에 맞추는 구조입니다.