개요
네트워크 계층에서 패킷은 데이터그램이라고 불림.
데이터그램
- IP 계층의 패킷을 데이터그램이라고 함
- 가변 길이 패킷으로 헤더와 데이터 부분으로 구성
- 헤더 20~60 바이트
- 라우팅과 전달에 필요한 정보를 포함
- TCP/IP에서는 헤더를 4 바이트 단위로 표시
인터넷 프로토콜
- TCP/IP 프로토콜이 사용하는 전송 메커니즘
- 신뢰성이 없고 최선의 노력 전달 서비스 제공
헤더 내의 필드
VER (4 bits) | IP 프로토콜의 버전을 표시 |
---|---|
LEN (4 bits) | - 데이터그램 헤더의 전체 길이 4 바이트 단위로 표시 |
- Option을 포함한 헤더의 길이 | |
- 옵션이 추가되지 않으면 20 바이트, 옵션이 추가된 경우 최대 60 바이트 | |
Service Type (8 bits) | - 데이터그램이 어떻게 처리되어야 하는가를 정의 |
Total Length (16 bits) | - 헤더와 데이터를 포함하는 IP 데이터그램의 전체 길이 |
- IP 데이터그램의 전체 길이를 바이트로 표현 | |
- 데이터 길이 = 전체기이 - 헤더길이 | |
Identification (16 bits) | - 식별, 단편화를 위해 사용 |
- 호스트가 보낸 각 데이터그램을 유일하게 식별 | |
- 단편화가 생기면 플래그 필드오 단편화 옵셋을 사용 | |
flags (3 bits) | 단편화를 위해 사용 |
fragmentation offset(13 bits) | 단편화된 조각들을 하나의 데이터 그램으로 합칠 때, 전체 데이터그램에서의 상대적인 위치를 표시 |
time to live (8 bits) | - 데이터그램은 인터넷을 통하여 전달되는 동안 제한된 수명을 가짐 |
- 대략 두 호스트 사이에 있는 라우터 수의 두 배로 설정 | |
- 방문되는 라우터에 의해 감소되고 이 필드의 값이 0이 되면 데이터그램은 폐기 | |
protocol (8 bits) | IP 계층의 서비스를 사용하는 상위 계층 프로토콜을 정의 |
checksum (16 bits) | 오류 확인을 위한 검사합 |
source address (32 bits) | IP 데이터그램이 발신지에서 목적지까지 전달되는 동안 이 값은 변해서는 안됨 |
destination address (32 bits) | IP 데이터그램이 발신지에서 목적지까지 전달되는 동안 이 값은 변해서는 안됨 |
서비스 유형 (TOS)
6비트는 코드포인트 부필드이고, 2비트는 사용하지 않는다.
- 코드포인트 부필드(오른쪽 3비트가 0일 경우)
- 왼쪽 3 비트는 TOS에서의 우선순위와 같은 의미
- 우선순위는 혼잡과 같은 문제 발생 시 우선순위를 정의
- 코드포인트 부필드
Fragmentation (단편화)
네트워크가 사용하는 프로토콜에 따라 프레임 형식과 크기가 다르다.
MTU
- 각 네트워크에서 전달되는 최대 전송 길이
- 데이터그램이 프레임 속에 캡슐화 될 때 데이터그램의 크기는 이 최대 크기보다 작아야 함
단편화 : MTU 길이에 따라 나누어 보내는 것
Identification (16 bits)
- 발신지 호스트로부터 나온 데이터그램을 유일하게 식별
- 식별자와 발신지 IP 주소의 조합은 데이터그램이 발신지 호스트를 떠날 때 유일하게 정의
- 이러한 유일성을 보장하기 위해 IP 프로토콜은 카운터를 사용하여 데이터그램에 레이블을 붙임01
- 식별자는 목적지에서 데이터그램을 재조립하는데 도움이 됨
flag (3 bits)
- 처음 비트 : 사용 X
- 두 번째 비트 : do not fragment
- d이 값이 1이면 데이터그램을 단편화해서는 안 됨
- 세 번째 비트 : more fragment
- 이 값이 1이면 데이터그램은 마지막 단편이 아님
fragmentation offset (13 bits)
- 전체 데이터그램 내에서 단편의 상대적인 위치를 나타냄
- 원래의 데이터그램 내에서 데이터 옵셋을 8바이트 단위로 나타냄
Options
형식 : 유형필드와 길이필드, 그리고 가변길이 필드로 구성
TLV(type-length-value)라고 함
유형(Type)
- 복사(Copy) : 1비트, 단편화에 옵션을 포함시킬 것인지를 제어
- 0 : 옵션은 첫 번재 단편에만 복사
- 1 : 옵션이 모든 단편에 복사
- 클래스(Class) : 2 비트, 옵션의 일반적인 목적을 정의
- 00 : 옵션이 데이터그램의 제어에 사용
- 10 : 옵션이 디버그나 관리 목적
- 01, 11 : 아직 정의되지 않음
- 번호(Number) : 5 비트, 옵션의 유형을 정의
- 32개의 서로 다른 유형을 정의할 수 있지만 현재 여섯 유형만 정의되어 있음
길이(Length)
- 코드 필드와 길이 필드를 포함한 옵션의 전체 길이를 정의
- 이 필드는 모든 옵션 유형에 있지 않음
값 (Value)
- 특별한 옵션이 필요로 하는 데이터를 포함하고 있음
- 이 필드는 모든 옵션 유형에 있지 않음
옵션 유형
구분 | 옵션 이름 | 설명 |
---|---|---|
단일 바이트 옵션 | No Operation | - 1바이트 길이, 옵션들 사이의 여백을 채워주는 데 사용 |
End of Option | - 1바이트 길이, 옵션 필드 끝에 패딩으로 사용 - 마지막 옵션으로만 사용 가능 - 옵션 필드 경계를 맞추기 위해 필요 시 무연산 옵션(No Operation) 뒤에 사용 - 오직 하나의 옵션 종료만 사용 가능 |
|
다중 바이트 옵션 | Record Route | - 데이터그램을 처리한 인터넷 라우터들을 기록 - 헤더 최대 길이 60바이트 중 기본 헤더는 20바이트이므로 최대 9개의 IP 주소 기록 가능 - 발신지가 라우터 기록 공간을 미리 준비 - 포인터 필드는 기록할 바이트 번호를 포함하는 옵셋 정수 필드 - 라우터는 IP를 기록할 때마다 포인터 값을 4만큼 증가 |
Strict Source Route | - 데이터그램이 인터넷에서 거쳐야 할 경로를 미리 지정 - 발신지가 경로를 미리 지정하면 여러 경우에 유용 |
|
Loose Source Route | - Strict Source Route와 비슷하지만, 리스트 속의 각 라우터는 반드시 방문되어야 하며 리스트에 없는 라우터도 방문 가능 | |
TimeStamp | - 라우터가 데이터그램을 처리하는 시간을 기록 - 라우터 간 소요 시간을 추정 가능 - 인터넷의 물리적 구조를 알 수 없는 사용자는 사용할 수 없음 - 오버플로우 필드는 기록하지 못한 라우터 수를 기록 - 플래그 필드는 방문된 라우터 동작 지정 |
Timestamp에서 플래그 사용
0 : 각 라우터는 주어진 필드에 타임스탬프만 추가
1 : 라우터는 나가는 IP 주소와 타임스탬프를 기록
3: 라우터는 주어진 IP 주소와 데이터그램이 들어오는 IP 주소를 비교하고, 만약 이 둘이 같으면 라우터는 IP 주소에 자신의 나가는 IP주소를 덮어쓰고 타임스탬프를 추가
Checksum (검사합)
IP Package
- 헤더 추가 모듈
- 처리 모듈 : TTL 값이 0이 된 데이터 그램을 폐기
- 라우팅 테이블 : 패킷의 다음 홉 주소 결정하기 위해 포워딩 모듈에서 사용
- 포워딩 모듈 : IP 패킷과 다음 홉 주소 그리고 인터페이스 정보를 출력
- MTU 테이블
- 단편화 모듈 : 전달하기 위한 패킷의 크기를 결정하기 위해 MTU 테이블을 참조
- 재조립 테이블
- 재조립 모듈 : 단편들을 모아서 순서대로 정리
Security (보안)
1. Packet Sniffing (패킷 스니핑)
문제 설명:
패킷 스니핑은 네트워크를 통해 전송되는 데이터 패킷을 가로채어 읽는 공격입니다. 공격자는 네트워크 트래픽을 모니터링하여 민감한 정보를 탈취할 수 있습니다. 예를 들어, 로그인 자격 증명, 개인 정보, 금융 데이터 등이 노출될 수 있습니다.
해결책 : 암호화
데이터를 전송하기 전에 암호화하여 패킷 스니핑 공격을 방지할 수 있습니다. 이를 통해 공격자가 패킷을 가로채더라도 내용을 이해할 수 없게 됩니다. 일반적인 암호화 프로토콜로는 SSL/TLS, IPsec 등이 있으며, HTTPS를 사용하는 웹사이트는 이 방식으로 데이터를 보호합니다.
2. Packet Modification (패킷 수정)
문제 설명:
패킷 수정 공격은 공격자가 네트워크를 통해 전송되는 패킷의 내용을 변경하는 공격입니다. 이를 통해 데이터가 변조되어 잘못된 정보가 수신자에게 전달되거나, 공격자가 원하지 않는 행동을 유도할 수 있습니다.
해결책 : 데이터 무결성 (Data Integrity):
데이터 무결성을 보장하기 위해 해시 함수나 메시지 인증 코드(MAC) 등을 사용하여 데이터가 전송 중 변경되지 않았음을 확인할 수 있습니다. 예를 들어, HMAC(해시 기반 메시지 인증 코드)는 송신자가 데이터와 함께 해시 값을 전송하고, 수신자는 이를 검증하여 데이터의 무결성을 확인할 수 있습니다.
3. IP Spoofing (IP 스푸핑)
문제 설명:
IP 스푸핑은 공격자가 자신의 IP 주소를 다른 IP 주소로 위장하여 패킷을 전송하는 공격입니다. 이를 통해 공격자는 신뢰할 수 있는 사용자처럼 행동하여 네트워크에 접근하거나, 서비스 거부 공격(DoS) 등을 수행할 수 있습니다.
해결책 : 사용자 인증 (Authentication):
IP 스푸핑 공격을 방지하기 위해, 강력한 사용자 인증 메커니즘을 도입해야 합니다. 예를 들어, VPN, SSL/TLS 인증서, OAuth, 다중 인증(MFA) 등을 사용하여 사용자의 신원을 확인하고, 권한이 없는 접근을 차단할 수 있습니다. 이를 통해 공격자가 자신의 신원을 숨기고 접근하는 것을 방지할 수 있습니다.
이와 같은 보안 문제는 현대 네트워크 환경에서 매우 중요하며, 적절한 보안 조치를 통해 예방할 수 있습니다. 각 해결책은 서로 보완적인 역할을 하며, 종합적인 보안 전략의 일환으로 구현되어야 합니다.
'CS > 네트워크' 카테고리의 다른 글
Switch와 RESTful (0) | 2025.01.09 |
---|