• TCP/IP 스택 구현

    • TCP/IP 스택을 직접 구현하는 것은 복잡한 작업처럼 보일 수 있음.
    • TCP의 핵심 사양은 TCP 헤더 파싱, 상태 기계, 혼잡 제어 및 재전송 시간 초과 계산으로 구성됨.
    • 이 블로그 시리즈에서는 Linux에서 최소한의 사용자 공간 TCP/IP 스택을 구현할 예정임.
    • 이 게시물과 소프트웨어의 목적은 네트워크 및 시스템 프로그래밍을 더 깊이 배우기 위한 교육적 목적임.
  • TUN/TAP 장치

    • Linux 커널에서 저수준 네트워크 트래픽을 가로채기 위해 TAP 장치를 사용함.
    • TUN/TAP 장치는 사용자 공간 프로그램에서 설정하기 쉽고 OpenVPN과 같은 다양한 프로그램에서 사용됨.
    • TAP 장치를 사용하여 이더넷 버퍼에 데이터를 읽고 쓸 수 있음.
  • 이더넷 프레임 형식

    • 이더넷은 LAN에서 컴퓨터를 연결하는 다양한 네트워킹 기술의 기반임.
    • 이더넷 표준은 1980년 처음 발표된 이후 크게 발전해 왔음.
    • 이더넷 프레임 헤더는 C 구조체로 선언될 수 있으며, DMAC, SMAC, Ethertype 및 페이로드 필드를 포함함.
  • 이더넷 프레임 파싱

    • GNU C 컴파일러가 구조체 메모리 레이아웃을 최적화하지 않도록 packed 속성을 사용함.
    • 이더넷 프레임을 파싱하고 처리하는 전체 시나리오는 간단함.
  • 주소 결정 프로토콜 (ARP)

    • ARP는 48비트 이더넷 주소를 프로토콜 주소로 동적으로 매핑하는 데 사용됨.
    • ARP 패킷 형식은 비교적 간단하며, 하드웨어 유형, 프로토콜 유형, 하드웨어 크기, 프로토콜 크기, opcode 및 데이터 필드를 포함함.
  • 주소 결정 알고리듬

    • ARP의 결과를 저장하기 위해 translation table을 사용하여 중복 ARP 요청을 피함.
    • ARP 구현의 궁극적인 테스트는 ARP 요청에 올바르게 응답하는지 확인하는 것임.
  • 결론

    • 이더넷 프레임 처리 및 ARP의 최소 구현은 비교적 쉬우며 몇 줄의 코드로 가능함.
    • 프로젝트의 소스 코드는 GitHub에서 확인할 수 있음.
    • 다음 게시물에서는 ICMP 에코 및 응답(핑) 및 IPv4 패킷 파싱 구현을 계속할 예정임.