네트워크/네트워크 핵심이론 - 기초

Ch03. L3 수준에서 외울 것들 - 캡슐화와 패킷

webmaster 2024. 10. 9. 19:34
728x90

IPV4 주소의 기본 구조

IPv4 -> 32Bit로 구성되어 있으며, 8Bit * 4로 되어있다.(최대 0~255를 2진법으로 나타낸 수가 4개)

IP 주소 구조

  • ipconfig를 통해, 현재 내 IP 주소를 알 수 있다.
  • 8Bit씩, (.)도트 값을 통해 구분한다.
  • IP 주소는 크게 Network ID(24 Bit), Host ID(8 Bit)로 구분한다.
    • Network ID를 주소, Host ID를 번지로 외우자
    • Network ID를 가지고 주소로 이동시킨 뒤, HostID를 통해 상세 주소로 이동하는 것으로 생각하면 외우기 쉽다.

L3 Packet

Packet 구조

  • Packet이라는 말은 L3 IP Packet으로 외우자
  • Header와 Payload로 나뉘며, 이는 상대적인 분류이다.
  • 최대 크기는 MTU 이다.
    • MTU는 Header + payload이다. -> 1500byte(1.4kb) 정도밖에 안 된다.
    • Packet을 크기가 매우 작기 때문에 택배 상자로 생각하면 이해하기 쉽다.
    • Header는 송장(전송할 위치) Payload가 내용물이다.
  • Wireshark를 통해 Packet을 분석할 수 있다.

Encapsulation

Encapsulation

  • 택배 상자에 물건을 넣어 밀봉하는 것과 동일하며, 특정한 것을 단위화 한 것을 Encapsulation이라고 한다.
  • Encapsulation은 즉, 특정 데이터를 Payload에 포장(Header/Payload)하고, Header를 와 함께 밀봉하는 것으로 생각하자

패킷의 생성과 전달

패킷 전달 과정(택배의 비유)
패킷 전달 과정

  • 어느 발신자/ 수신자(Process)가 물건(Data)을 전달할 때, 택배(Packet)로 만든 후, 택배 기사(GateWay)에 전달을 하게 되는데, 택배(라우팅)를 통해 집(Host)까지 도착을 하게 될 것이고, Port 번호를 보고 수신자에게 전달을 해준다.
  • Data가 Socket을 Send 하여 TCP -> IP -> Driver를 통과하여 Encapsulator가 되고, 해당 데이터가 전달이 된다.

계층별 데이터 단위

계층별 데이터 단위

  • User Mode에서는 데이터 단위가 Stream이며, Socket을 통해 커널 계층으로 전달된다.
    • 보통 Stream Size가 MSS/MTU 보다 크기 때문에 전달할 때 보통 나눠서(쪼개서) 전달하게 된다.
  • TCP는 데이터 단위가 Segment이며, 최대 크기는 MSS(Max Segment Size)이다.
  • IP는 데이터 단위가 IP이며, 최대 크기는 MTU이다.
  • H/W 에서는 데이터 단위가 Frame이다.

TCP/IP 송.수신 구조

송신

송신

  • User mode에서 전달해야 하는 데이터를 Stream이라고 부른다. 
  • Stream 데이터를 쪼개서 Buffer에 담고, 이를 다시 쪼개어서 TCP 계층으로 전달하는데, 이때 단위가 세그먼트이다.
  • 해당 세그먼트를 IP 계층으로 보낼 때, 다시 택배 박스에 담듯이 포장을 해야 되는데, 이때 IP 계층으로 보내는 단위가 즉, 패킷이다.
  • 패킷을 다시, H/W 영역으로 전달할 때(비유하자면 트럭) 단위를 Frame이라고 하며, 물건을 전송할 때 하나의 트럭에 보내지 않듯이 여러 Gateway를 거쳐서 전달한다.(트럭이 바뀔 수 있다)
  • 송신하는 과정에서는 항상 Encapsulation이 일어난다.

수신

수신

  • Frame에서 Packet을 꺼내고, 해당 Packet에서 Segment를 뽑아서 Socket I/O Buffer에 채운다. 
    • TCP에서는 받은 세그먼트를 잘 받았다고 응답을 보내야 하고 이를 ACK라고 한다(이때 I/O Buffer의 여유 공간도 같이 보낸다)
    • 이때의 여유 공간을 Window Size라고 하며, 이 공간이 없어 Full이 나면 Zero Window 오류가 발생한다.(해당 이슈는 End-point에 Application에서 오류가 발생한 것으로 확신할 수 있다.)
  • 수신하는 과정에서는 항상 Decapsulation이 일어난다.
728x90