네트워크 계층 과 TCP/IP
업데이트:
네트워크 계층과 TCP/IP 프로토콜 정리
데이터 링크 계층
LLC(Logical Link Control)와 MAC(Media Access Control)
- LLC: 데이터 링크 계층의 상위 부분으로, 네트워크 계층과의 인터페이스를 제공하고 오류 제어 및 흐름 제어를 담당한다.
- MAC: 데이터 링크 계층의 하위 부분으로, 실제 데이터의 전송을 담당하며 매체 접근 제어를 수행한다.
페이로드(Payload), 헤더(Header), 트레일러(Trailer)
- 페이로드: 상위 계층에서 하위 계층으로 전달되는 실제 데이터
- 헤더: 페이로드의 앞부분에 추가되는 제어 정보로, 데이터 전송에 필요한 정보를 포함한다.
- 트레일러: 페이로드의 뒷부분에 추가되는 제어 정보로, 주로 오류 검출 등에 사용된다.
패킷 수집 및 분석
무차별 모드(Promiscuous Mode)
- 정의: 네트워크 인터페이스 카드(NIC)가 자신에게 주소가 지정되지 않은 패킷을 포함하여 네트워크에 흐르는 모든 패킷을 수신하도록 설정된 모드
- 동작 방식:
- 일반적으로 NIC는 자신의 MAC 주소로 목적지 주소가 설정된 프레임만 수신하고 나머지는 버린다.
- 무차별 모드에서는 모든 패킷을 수신하여 패킷 분석 등에 활용할 수 있다.
- 사용 목적: 네트워크 모니터링, 패킷 스니핑, 네트워크 트래픽 분석 등에 사용된다.
스위치 환경에서의 스니핑 방법
스위치 환경에서는 패킷이 목적지 포트로만 전달되기 때문에 패킷 수집 범위가 제한된다. 이를 해결하기 위한 방법은 다음과 같다.
- 포트 미러링(Port Mirroring):
- 특정 포트나 VLAN에서 흐르는 트래픽을 다른 포트로 복제하여, 모니터링 장비가 해당 트래픽을 수신할 수 있게 해준다.
- 네트워크 트래픽 분석 및 모니터링에 효과적이다.
- 허빙 아웃(Hubbing Out):
- 모니터링하고자 하는 구간에 허브를 설치하여 모든 트래픽이 허브를 통해 전달되도록 한다.
- 허브는 수신한 패킷을 모든 포트로 전달하므로, 모니터링 장비에서 패킷을 수집할 수 있다.
- TAP 사용(Network TAP):
- 네트워크 TAP는 네트워크 링크에 물리적으로 삽입되어 그 링크를 통과하는 모든 트래픽의 복사본을 생성한다.
- 모니터링 장비로 트래픽의 복사본을 전달하여 정확하고 신뢰성 있는 패킷 분석이 가능하다.
TCP 프로토콜
연결 설정과 종료
3-Way Handshake (연결 설정)
- SYN: 클라이언트가 서버에게 연결 요청을 보낸다.
- SYN+ACK: 서버가 요청을 수락하고 응답한다.
- ACK: 클라이언트가 서버의 응답을 확인하고 연결이 성립된다.
데이터 전송 중 기능
- 신뢰성 점검: 데이터의 정확한 전달을 확인한다.
- 오류 점검: 체크섬 등을 통해 데이터 오류를 검출한다.
- 흐름 제어: 수신 측의 처리 능력에 맞게 데이터 전송 속도를 조절한다.
4-Way Handshake (연결 종료)
- FIN: 클라이언트가 데이터 전송이 완료되었음을 알리고 연결 종료를 요청한다.
- ACK: 서버가 종료 요청을 확인한다.
- FIN: 서버도 데이터 전송이 완료되었음을 알리고 연결 종료를 요청한다.
- ACK: 클라이언트가 서버의 종료 요청을 확인하고 연결이 종료된다.
- TIME_WAIT 상태: 클라이언트는 마지막 ACK를 보낸 후 일정 시간 동안 대기하여 지연 패킷을 처리한다.
TCP 헤더 구조
- 헤더 크기: 기본 20바이트, 옵션 포함 시 최대 60바이트
- 필드 설명:
- 출발지 포트 번호: 송신 측 애플리케이션의 포트 번호
- 도착지 포트 번호: 수신 측 애플리케이션의 포트 번호
- 시퀀스 번호: 데이터 바이트의 순서를 나타낸다.
- 확인 응답 번호: 다음에 기대하는 시퀀스 번호
- 데이터 오프셋: 헤더의 길이(데이터 시작 위치)를 나타낸다.
- 예약 필드: 미래 사용을 위한 예약된 필드
- 제어 플래그:
- URG: 긴급 포인터 필드 유효함을 나타낸다.
- ACK: 확인 응답 번호 필드 유효함을 나타낸다.
- PSH: 즉시 상위 계층으로 데이터 전달을 요청한다.
- RST: 연결을 강제로 재설정한다.
- SYN: 연결 설정을 시작한다.
- FIN: 연결 종료를 알린다.
- 윈도우 크기: 수신 측에서 수신 가능한 데이터의 최대량을 나타낸다.
- 체크섬: 오류 검출을 위한 값
- 긴급 포인터: 긴급 데이터의 끝 위치를 나타낸다.
- 옵션: 기능 확장을 위한 추가 필드
- 예시:
- MSS(Maximum Segment Size): 최대 세그먼트 크기를 지정
- 윈도우 스케일링: 윈도우 크기를 확장하여 대역폭을 효율적으로 사용
- SACK(Selective Acknowledgment): 선택적 확인 응답으로 손실된 패킷만 재전송하도록 한다.
- 예시:
- 패딩: 헤더를 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 모델의 계층 구조
- 응용 계층: HTTP, FTP, SMTP 등 다양한 응용 프로토콜이 위치한다.
- 전송 계층: TCP, UDP 프로토콜이 위치하여 데이터 전송을 담당한다.
- 인터넷 계층: IP, ICMP, ARP 등이 위치하며 패킷의 전달과 라우팅을 담당한다.
- 네트워크 액세스 계층: Ethernet, WLAN 등의 프로토콜이 위치하여 물리적 전송을 담당한다.
주요 프로토콜의 포트 번호
- HTTP: 80번 포트를 사용한다.
- HTTPS: 443번 포트를 사용하여 보안 통신을 수행한다.
- FTP: 데이터 전송에 20번, 제어에 21번 포트를 사용한다.
- SMTP: 25번 포트를 사용하여 이메일 전송을 담당한다.
- DNS: 53번 포트를 사용하여 도메인 이름 해석을 수행한다.
패킷 캡처 도구
- Wireshark: 다양한 프로토콜을 해석하고 패킷을 분석할 수 있는 네트워크 프로토콜 분석 도구이다.
- tcpdump: 명령줄 기반의 패킷 캡처 도구로, 실시간으로 트래픽을 모니터링할 수 있다.
보안 고려 사항
- 스니핑 방지: 패킷 암호화(TLS/SSL)와 스위치 보안 설정을 통해 무단 패킷 수집을 방지한다.
- 방화벽 설정: 불필요한 포트와 서비스를 차단하여 보안을 강화한다.
- 네트워크 세분화: VLAN 등을 활용하여 네트워크를 분리함으로써 보안 영역을 구분한다.