티스토리 뷰

IPv4주소의 구조

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

![[IPv4 구성.png]]

.으로 구분되는 하나의 숫자 단위는 8bit이기 때문에 0~255까지의 숫자 범위를 갖는다. IP주소는 기본적으로 총 32bit 중 24bit를 잘라서 이를 Network ID로 구분짓고, 마지막 8bit를 Host ID라고 구분짓는다. 이를 우리 실생활에 빗대어 이해하면 서울시 강남구 역삼동 ~번지라는 주소가 있을 때, 읍면동까지의 주소가 Network ID가 되고 마지막 번지수가 Host ID가 되는 격이다.

L3 Packet

packet은 기본적으로 단위 데이터를 뜻한다. 하나의 택배 박스라고 생각하면 이해가 수월하다.

  • Packet이라는 말은 L3 IP Packet으로 생각하자.
    • 보통 packet이라고만 하지만 이렇게 생각하는 이유는 IP는 L3 계층이기 때문에 packet이라는 단어만 봐도 L3 IP라는 단어가 연관 검색어처럼 떠올라야 하기 때문이다.
  • HeaderPayload로 나뉘며 이는 상대적인 분류이다.
    • Header - Src(Source) -> Dst(Destination)으로 구성된다.
    • Payload - Header가 실어 나르는 내용이다. 택배의 내용물이라고 생각하자.
  • 최대 크기는 MTU(Maximum Trasmission Unit).
    • Header + Payload = MTU
    • 특별한 이유가 없다면 이 크기는 최대 1500Bytes(약 1.4KB)이다.

Encapsulation과 Decapsulation

가장 외벽의 경우 L2를 의미한다. L2의 Payload에는 또 다른 Header와 Payload가 존재한다. 이 첫번째 내부의 Header는 L3이며, payload는 IP이다. 그 내부는 L4와 TCP에 대한 정보가 담긴다. 이렇게 각 계층에 대한 정보가 캡슐화되어 저장된다.

Encapsulation(캡슐화)

  • 택배의 경우 박스를 구해와서 박스 안에 내용물을 넣은 후 포장을 한다. 이 과정이 결국 Encapsulation이다.
    • 박스에 내용물을 넣음으로써 어떤 단위화되었다. (이 경우 박스 단위로 바뀌었다.)
    • 박스에 내용물을 넣으면 안의 내용물을 알 수 없다. 이러한 특징으로 보안적인 의미도 가진다.
  • 이를 네트워크 방식으로 보면 다음과 같다.

    Decapsulation

  • Encapsulation의 캡슐 하나를 벗긴 것.

패킷의 생성과 전달

어느 process가 인터넷을 통해 어떤 data를 송신해야 한다면 data를 packet으로 생성하여 gateway에게 준다. gateway는 분류 체계에 의해 routing을 하고, IPv4의 Destination으로 전달한 후 Port 번호에 packet을 전달한다.

어떤 Data가 있다고 가정할 때, 이 데이터를 TCP Socket에 Write(Send)한다. 이제 Data가 하위 계층으로 내려가며 TCP를 만나게 되면 TCP(Header) + Data(Payload) 의 덩어리가 되는데 이 한 덩어리를 Segment라고 부른다. 이 Segment가 한 층 또 내려가면 앞단에 IP Header가 추가적으로 붙게되고, 한 계층 더 내려가면 Ethernet Frame Header가 붙는 것이다. 이 Ethernet Frame채로 타고 나가서 L2 Access Switch 등을 만난 후 Route Gateway를 만나 Internet망으로 나가게 되는 것이다.

계층별 데이터 단위

  • User mode - Stream
    • 연속적으로 어이진 크기를 정확히 알 수 없는 큰 데이터. 이 Stream을 Socket에 Write하는 것.
  • Kernel mode 단위
    • TCP - Segment
      • 최대 단위 - MSS(Maximum Segment Size)
      • 1460Bytes
    • IP - Packet
      • 최대 단위 - MTU(Maximum Transmission Unit)
      • 1500Bytes
  • L1 ~ L2 수준의 단위 - Frame

Segment, Packet의 최대 단위는 약 1500Bytes 수준이다. 하지만 Stream에서 전송하려는 데이터의 크기가 4MB라고 한다면 처리할 수 있는 최대 단위의 용량을 넘어선다. 이럴 경우 TCP와 맞닿는 지점에서 분할이 이루어지는데 이를 Segmentation이라고 한다.
즉, Stream이라고 하는 연속적으로 긴 데이터를 MSS 크기로 자른 후 이를 MTU 사이즈에 맞춰서 인터넷이라는 환경에서 유통하는 구조이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함