network protocol
업데이트:
네트워크 프로토콜과 관련된 개념 정리
IP 헤더 필드
Protocol (8비트)
- 설명: 상위 계층 프로토콜 정보를 저장하며, IP 패킷에 실려 있는 데이터의 프로토콜 유형을 나타낸다.
- 예시: TCP(6), UDP(17), ICMP(1) 등의 프로토콜 번호를 사용한다.
Service Type (Type of Service, ToS)
- 설명: 데이터의 품질 요구 사항을 포함하며, 우선순위와 서비스 품질(QoS)을 지정한다.
- 구성 요소:
- 우선순위 비트
- 지연, 처리량, 신뢰성 등의 요구 사항을 표시하는 비트
Identification
- 설명: 전송되는 데이터그램의 고유 식별 번호이다.
- 역할: IP 단편화가 발생할 경우, 원본 데이터그램을 식별하고 재조립하기 위해 모든 단편에 동일한 Identification 번호를 부여한다.
Flags
- 설명: 단편화 관련 제어 정보를 포함하는 3비트 필드이다.
- 구성 요소:
- Reserved: 예약 비트로 항상 0이다.
- DF (Don’t Fragment): 1이면 단편화를 하지 않음을 나타낸다.
- MF (More Fragments): 1이면 뒤에 더 많은 단편이 있음을 나타낸다.
Fragmentation Offset
- 설명: 단편화된 패킷의 원본 데이터에서의 위치를 나타낸다.
- 역할: 수신 측에서 단편들을 올바른 순서로 재조립하는 데 사용한다.
- 단위: 8바이트 단위로 오프셋을 표시한다.
TTL (Time To Live)
- 설명: 패킷의 수명을 제한하기 위한 값이다.
- 역할: 패킷이 네트워크에서 무한 루프에 빠지는 것을 방지한다.
- 동작 방식: 각 라우터를 지날 때마다 TTL 값이 1씩 감소하며, TTL이 0이 되면 패킷은 폐기된다.
MTU와 단편화
MTU (Maximum Transmission Unit)
- 설명: 네트워크 매체를 통해 전송될 수 있는 최대 데이터 크기이다.
- 역할: 한 번에 전송할 수 있는 최대 IP 패킷의 크기를 결정한다.
- 단편화 발생 조건: IP 패킷의 크기가 MTU보다 큰 경우 단편화가 필요하다.
단편화 (Fragmentation)
- 설명: 큰 IP 패킷을 MTU 크기에 맞게 작게 분할하는 과정이다.
- 실행 계층: 주로 3계층인 IP 계층에서 수행된다.
- 단편화 확인 방법: IP 헤더의 Identification, Flags(MF 비트), Fragmentation Offset 필드를 확인한다.
MSS (Maximum Segment Size)
- 설명: TCP에서 한 번에 전송할 수 있는 최대 데이터 크기(페이로드)를 의미한다.
- 계산 방법:
- MSS = MTU - IP 헤더 크기 - TCP 헤더 크기
- 예시:
- MTU: 1500바이트
- IP 헤더: 20바이트
- TCP 헤더: 20바이트
- MSS = 1500 - 20 - 20 = 1460바이트
단편화 과정
4계층 단편화
- TCP의 경우 MSS보다 큰 데이터는 송신 측에서 분할하여 전송한다.
3계층 단편화
- IP 계층에서 MTU보다 큰 패킷은 단편화된다.
주의점
- UDP는 전송 계층에서 단편화를 수행하지 않으므로, IP 계층에서 단편화가 필요하다.
- 단편화는 네트워크 성능에 부정적 영향을 미칠 수 있으므로 최소화하는 것이 좋다.
ICMP 메시지 종류
분류
- 오류 메시지
- 목적지 도달 불가 (Destination Unreachable): 목적지에 도달할 수 없을 때 발생한다.
- 시간 초과 (Time Exceeded): TTL이 0이 되어 패킷이 폐기될 때 발생한다.
- 검사합 오류 (Checksum Error): 패킷의 오류를 검출할 때 발생한다.
- 재지정 (Redirect): 더 나은 경로로 라우팅하도록 유도할 때 사용한다.
- 질의 메시지
- 에코 요청 및 응답 (Echo Request and Reply): 연결 상태 확인을 위해 사용한다.
- 시간 정보 요청 및 응답 (Timestamp Request and Reply): 시간 동기화를 위해 사용한다.
- 주소 마스크 요청 및 응답 (Address Mask Request and Reply): 서브넷 마스크 정보를 획득하기 위해 사용한다.
코드 (Code) 필드
- 설명: 각 메시지 타입 내에서 세부 사항을 나타낸다.
- 역할: 오류의 원인이나 질의의 종류를 세분화하여 전달한다.
ARP 캐시 테이블 생성 과정
- ARP 캐시 확인
- 호스트는 자신의 ARP 캐시 테이블을 확인하여 대상 IP 주소에 대한 MAC 주소 매핑이 있는지 확인한다.
- 매핑 정보가 있다면 해당 MAC 주소를 사용하여 통신한다.
- ARP 요청 브로드캐스트
- 캐시 테이블에 매핑 정보가 없다면 ARP 요청 패킷을 브로드캐스트(FF:FF:FF:FF:FF:FF)로 전송한다.
- ARP 요청에는 송신자의 IP 주소와 MAC 주소, 그리고 대상의 IP 주소가 포함된다.
- ARP 응답 수신 및 캐시 테이블 업데이트
- 대상 IP 주소를 가진 호스트는 ARP 요청을 수신하면 자신의 MAC 주소를 포함한 ARP 응답 패킷을 송신자에게 유니캐스트로 전송한다.
- 송신자는 ARP 응답을 수신하면 해당 IP 주소와 MAC 주소의 매핑 정보를 자신의 ARP 캐시 테이블에 저장한다.
- 이렇게 업데이트된 캐시 테이블을 통해 이후 통신에서 빠르게 MAC 주소를 확인할 수 있다.
추가로 알면 좋은 내용
IP 헤더의 기타 필드
- Version: IP 프로토콜의 버전을 나타낸다(IPv4에서는 4).
- IHL (Internet Header Length): IP 헤더의 길이를 32비트(4바이트) 단위로 표시한다.
- Total Length: IP 헤더와 페이로드를 합한 전체 패킷의 길이를 바이트 단위로 나타낸다.
- Header Checksum: IP 헤더의 오류 검출을 위한 값으로, 전송 중 헤더의 무결성을 확인한다.
- Source IP Address: 패킷의 송신자 IP 주소이다.
- Destination IP Address: 패킷의 수신자 IP 주소이다.
Path MTU Discovery
- 설명: 송신 측에서 목적지까지의 경로에서 가장 낮은 MTU 값을 발견하여 단편화를 피하고 최적의 패킷 크기를 결정하는 방법이다.
- 동작 방식:
- 송신 측에서 DF(Don’t Fragment) 비트를 설정한 패킷을 전송한다.
- 경로 중 MTU보다 큰 패킷이 전달되지 못하면 ICMP ‘Fragmentation Needed’ 메시지를 수신한다.
- 이를 통해 송신 측은 패킷 크기를 조정한다.
- 장점: 단편화를 피하여 네트워크 효율성과 성능을 향상시킨다.
TCP와 UDP의 단편화 차이
TCP
- MSS를 기반으로 송신 측에서 패킷 크기를 조절하여 단편화를 최소화한다.
- 흐름 제어와 혼잡 제어를 통해 전송 효율을 높인다.
UDP
- 데이터그램의 크기가 MTU를 초과할 경우 IP 계층에서 단편화가 발생한다.
- 단편화된 UDP 패킷은 신뢰성이 낮으며 손실되기 쉬우므로 주의가 필요하다.
IP Fragmentation의 문제점
- 성능 저하:
- 단편화된 패킷은 추가적인 헤더 정보를 가지며 재조립 과정이 필요하여 처리 부담이 증가한다.
- 패킷 손실 위험:
- 단편 중 하나라도 손실되면 전체 데이터그램을 재전송해야 한다.
- 보안 위험:
- 단편화를 악용한 공격(IP Fragmentation Attack)이 발생할 수 있다.
ICMP와 Traceroute
Traceroute 도구
- 네트워크 경로를 추적하기 위해 사용한다.
- TTL 값을 증가시키며 ICMP ‘Time Exceeded’ 메시지를 수신하여 경로상의 라우터 정보를 수집한다.
동작 원리
- 첫 패킷의 TTL을 1로 설정하여 첫 번째 라우터에서 TTL이 만료되어 ICMP 메시지를 반환한다.
- TTL을 하나씩 증가시켜 다음 라우터의 정보를 얻는다.
ARP 스푸핑 및 보안 대책
ARP 스푸핑 공격
- 공격자가 허위의 MAC 주소 정보를 ARP 캐시 테이블에 주입하여 통신을 가로채거나 중단시키는 공격이다.
대책
- 정적 ARP 테이블 설정:
- 중요 호스트의 ARP 매핑을 수동으로 설정하여 변조를 방지한다.
- 동적 ARP 검사(DAI):
- 스위치에서 ARP 패킷을 검사하여 유효성을 확인한다.
- 보안 프로토콜 사용:
- SSH, HTTPS 등 암호화된 통신을 사용하여 민감한 정보 보호한다.