업데이트:

3 분 소요

네트워크 계층과 TCP/IP 프로토콜 정리


데이터 링크 계층

  • LLC: 데이터 링크 계층의 상위 부분으로, 네트워크 계층과의 인터페이스를 제공하고 오류 제어 및 흐름 제어를 담당한다.
  • MAC: 데이터 링크 계층의 하위 부분으로, 실제 데이터의 전송을 담당하며 매체 접근 제어를 수행한다.

페이로드(Payload), 헤더(Header), 트레일러(Trailer)

  • 페이로드: 상위 계층에서 하위 계층으로 전달되는 실제 데이터
  • 헤더: 페이로드의 앞부분에 추가되는 제어 정보로, 데이터 전송에 필요한 정보를 포함한다.
  • 트레일러: 페이로드의 뒷부분에 추가되는 제어 정보로, 주로 오류 검출 등에 사용된다.

패킷 수집 및 분석

무차별 모드(Promiscuous Mode)

  • 정의: 네트워크 인터페이스 카드(NIC)가 자신에게 주소가 지정되지 않은 패킷을 포함하여 네트워크에 흐르는 모든 패킷을 수신하도록 설정된 모드
  • 동작 방식:
    • 일반적으로 NIC는 자신의 MAC 주소로 목적지 주소가 설정된 프레임만 수신하고 나머지는 버린다.
    • 무차별 모드에서는 모든 패킷을 수신하여 패킷 분석 등에 활용할 수 있다.
  • 사용 목적: 네트워크 모니터링, 패킷 스니핑, 네트워크 트래픽 분석 등에 사용된다.

스위치 환경에서의 스니핑 방법

스위치 환경에서는 패킷이 목적지 포트로만 전달되기 때문에 패킷 수집 범위가 제한된다. 이를 해결하기 위한 방법은 다음과 같다.

  1. 포트 미러링(Port Mirroring):
    • 특정 포트나 VLAN에서 흐르는 트래픽을 다른 포트로 복제하여, 모니터링 장비가 해당 트래픽을 수신할 수 있게 해준다.
    • 네트워크 트래픽 분석 및 모니터링에 효과적이다.
  2. 허빙 아웃(Hubbing Out):
    • 모니터링하고자 하는 구간에 허브를 설치하여 모든 트래픽이 허브를 통해 전달되도록 한다.
    • 허브는 수신한 패킷을 모든 포트로 전달하므로, 모니터링 장비에서 패킷을 수집할 수 있다.
  3. TAP 사용(Network TAP):
    • 네트워크 TAP는 네트워크 링크에 물리적으로 삽입되어 그 링크를 통과하는 모든 트래픽의 복사본을 생성한다.
    • 모니터링 장비로 트래픽의 복사본을 전달하여 정확하고 신뢰성 있는 패킷 분석이 가능하다.

TCP 프로토콜

연결 설정과 종료

3-Way Handshake (연결 설정)

  1. SYN: 클라이언트가 서버에게 연결 요청을 보낸다.
  2. SYN+ACK: 서버가 요청을 수락하고 응답한다.
  3. ACK: 클라이언트가 서버의 응답을 확인하고 연결이 성립된다.

데이터 전송 중 기능

  • 신뢰성 점검: 데이터의 정확한 전달을 확인한다.
  • 오류 점검: 체크섬 등을 통해 데이터 오류를 검출한다.
  • 흐름 제어: 수신 측의 처리 능력에 맞게 데이터 전송 속도를 조절한다.

4-Way Handshake (연결 종료)

  1. FIN: 클라이언트가 데이터 전송이 완료되었음을 알리고 연결 종료를 요청한다.
  2. ACK: 서버가 종료 요청을 확인한다.
  3. FIN: 서버도 데이터 전송이 완료되었음을 알리고 연결 종료를 요청한다.
  4. ACK: 클라이언트가 서버의 종료 요청을 확인하고 연결이 종료된다.
    • TIME_WAIT 상태: 클라이언트는 마지막 ACK를 보낸 후 일정 시간 동안 대기하여 지연 패킷을 처리한다.

TCP 헤더 구조

  • 헤더 크기: 기본 20바이트, 옵션 포함 시 최대 60바이트
  • 필드 설명:
  1. 출발지 포트 번호: 송신 측 애플리케이션의 포트 번호
  2. 도착지 포트 번호: 수신 측 애플리케이션의 포트 번호
  3. 시퀀스 번호: 데이터 바이트의 순서를 나타낸다.
  4. 확인 응답 번호: 다음에 기대하는 시퀀스 번호
  5. 데이터 오프셋: 헤더의 길이(데이터 시작 위치)를 나타낸다.
  6. 예약 필드: 미래 사용을 위한 예약된 필드
  7. 제어 플래그:
    • URG: 긴급 포인터 필드 유효함을 나타낸다.
    • ACK: 확인 응답 번호 필드 유효함을 나타낸다.
    • PSH: 즉시 상위 계층으로 데이터 전달을 요청한다.
    • RST: 연결을 강제로 재설정한다.
    • SYN: 연결 설정을 시작한다.
    • FIN: 연결 종료를 알린다.
  8. 윈도우 크기: 수신 측에서 수신 가능한 데이터의 최대량을 나타낸다.
  9. 체크섬: 오류 검출을 위한 값
  10. 긴급 포인터: 긴급 데이터의 끝 위치를 나타낸다.
  11. 옵션: 기능 확장을 위한 추가 필드
    • 예시:
      • MSS(Maximum Segment Size): 최대 세그먼트 크기를 지정
      • 윈도우 스케일링: 윈도우 크기를 확장하여 대역폭을 효율적으로 사용
      • SACK(Selective Acknowledgment): 선택적 확인 응답으로 손실된 패킷만 재전송하도록 한다.
  12. 패딩: 헤더를 32비트 배수로 맞추기 위한 필드

데이터 전송의 신뢰성 보장

  • 시퀀스 번호와 확인 응답 번호를 활용하여 데이터의 손실 및 중복을 방지한다.
  • 재전송 메커니즘: 손실된 패킷에 대해 재전송을 요청한다.
  • 흐름 제어: 윈도우 크기를 통해 송신 측의 데이터 전송량을 조절한다.

UDP 프로토콜

  • 특징:
    • 헤더 크기는 8바이트로 고정
    • 연결 설정 과정이 없다.
    • 신뢰성을 보장하지 않는다.
  • 사용 사례:
    • 실시간 스트리밍, VoIP 등 신속한 데이터 전송이 필요한 경우에 사용한다.

Ethernet 프레임

  • DIX 프레임 (Ethernet II 프레임):
    • 일반적인 PC에서 사용되는 이더넷 프레임 형식
    • 이더넷 타입 필드를 사용하여 상위 프로토콜을 식별
  • IEEE 802.3 프레임:
    • IEEE에서 제정한 표준 이더넷 프레임 형식
    • 길이 필드를 사용하며 LLC 헤더를 포함

추가로 알면 좋은 내용

TCP의 흐름 제어와 혼잡 제어

  • 흐름 제어: 수신 측의 버퍼 오버플로우를 방지하기 위해 송신 측의 데이터 전송 속도를 조절한다.
  • 혼잡 제어: 네트워크 혼잡을 방지하기 위해 송신 측에서 데이터 전송률을 조절한다.
    • 알고리즘: 느린 시작(Slow Start), 혼잡 회피(Congestion Avoidance), 빠른 재전송(Fast Retransmit), 빠른 회복(Fast Recovery)

TCP/IP 모델의 계층 구조

  1. 응용 계층: HTTP, FTP, SMTP 등 다양한 응용 프로토콜이 위치한다.
  2. 전송 계층: TCP, UDP 프로토콜이 위치하여 데이터 전송을 담당한다.
  3. 인터넷 계층: IP, ICMP, ARP 등이 위치하며 패킷의 전달과 라우팅을 담당한다.
  4. 네트워크 액세스 계층: Ethernet, WLAN 등의 프로토콜이 위치하여 물리적 전송을 담당한다.

주요 프로토콜의 포트 번호

  • HTTP: 80번 포트를 사용한다.
  • HTTPS: 443번 포트를 사용하여 보안 통신을 수행한다.
  • FTP: 데이터 전송에 20번, 제어에 21번 포트를 사용한다.
  • SMTP: 25번 포트를 사용하여 이메일 전송을 담당한다.
  • DNS: 53번 포트를 사용하여 도메인 이름 해석을 수행한다.

패킷 캡처 도구

  • Wireshark: 다양한 프로토콜을 해석하고 패킷을 분석할 수 있는 네트워크 프로토콜 분석 도구이다.
  • tcpdump: 명령줄 기반의 패킷 캡처 도구로, 실시간으로 트래픽을 모니터링할 수 있다.

보안 고려 사항

  • 스니핑 방지: 패킷 암호화(TLS/SSL)와 스위치 보안 설정을 통해 무단 패킷 수집을 방지한다.
  • 방화벽 설정: 불필요한 포트와 서비스를 차단하여 보안을 강화한다.
  • 네트워크 세분화: VLAN 등을 활용하여 네트워크를 분리함으로써 보안 영역을 구분한다.