IP 헤더의 크기는 일반적으로 20 바이트 크기를 사용하지만 경우에 따라
IP 추가 항목을 이용해 21 바이트 이상으로 사용이 가능하다.
ping/?를 cmd 창에 입력해보면 IP 헤더에서 제일 먼저 IPv4/IPv6 버전을 확인한다.
버전 다음으로는 헤더 길이로, IP 헤더의 크기가 들어간다. (일반적으로 20)
헤더 길이 다음에는 Type Of Service(TOS)로, 해당 패킷의 전송 우선 순위를 저장한다.
전체 길이 항목 다음으로 ID 항목과 플래그 항목과 플래그먼트 오프셋 항목은
MTU 에 따른 패킷 분항 정보를 담는 항목이다.
MTU란?
최대 전송 단위라는 의미. 각각의 프로토콜에서 정한 데이터 크기의 최대 범위를 의미한다.
이더넷 방식에서 MTU는 1500바이트이다. (최대 크기)
IP헤더의 플래그 항목은 TCP 헤더의 플래그 항목과 다르다는 것을 유의해야한다.
예를 들어, 이더넷 구간을 대상으로 1400바이트 크기의 패킷과 5900 바이트 크기의 패킷이 있다하자.
먼저 1400 바이트 크기의 패킷은 MTU 1500 바이트인 이더넷 구간을 통과할 수 있다. 패킷 분할이 불필요하다.
D비트가 1인 경우 ID 항목이나 플래그먼트 오프셋 항목은 의미가 없다.
D비트(Do Not fragment)와 M비(More fragments)
ID 항목 | 플래그 항목(D 비트) | 플래그 항목(M 비트) | 플래그먼트 오프셋 |
0 | 1 | 0 | 0 |
그렇지만 5900 바이트 크기의 패킷은 이더넷 구간을 통과할 수 없다. 패킷 분할이 필요하다는 것이다.
5900바이트에 100바이트 크기의 쓰레기 값을 채우는데 이러한 과정을 패딩이라고한다.
운영 체제는 쓰레기 값이 포함된 6000 바이트 크기의 패킷을 각각 1500 바이트로 분할한다.
D비트가 0이라는 것은 해당 패킷을 분할했다는 의미이고, M비트가 1인 경우는 해당 패킷 말고 또 다른 분할 패킷이 있다는 의미이다. 플래그먼트 오프셋을 보면 시작위치는 0이다.
ID 항목 | 플래그 항목(D 비트) | 플래그 항목(M 비트) | 플래그먼트 오프셋 |
1234 | 0 | 1 | 0 |
1234 | 0 | 1 | 1500 |
1234 | 0 | 1 | 3000 |
1234 | 0 | 0 | 4500 |
생존시간 항목은 라우팅 루프가 일어난 구간에서 패킷을 폐기하기 위한 용도로 사용한다. 예를 들어,
TTL(생존기간)이 10이면 해당 패킷은 10대의 라우터를 통과할 수 있고 그 이상은 통과할 수 없다는 의미다.
생족 시간 항목 다음에 있는 프로토콜 항목은 상위 계층에 속한 프토콜 번호를 저장한다.
송신 측에서 UDP 페이로드를 생성했다면 17로 설정하고 TCP 페이로드를 생성했다면 6으로 설정한다.
마지막으로 출발지 주소 항목과 목적지 주소 항목의 크기는 32 비트로서 출발지 IP주소와 IP 주소를 저장한다.
ICMP란?
화면 출력 메시지에 기반해 오류 통보기능과 질의 응답 기능 들을 수행하기 위한 프토토콜
오류 통보 : 전송 중 일어날 수 있는 목적지 도달 불가나 발신지 억제 또는 시간 초과나 매개 변수의 문제 등을 사용자 화면에 출력하기 위한 기능을 의미한다.
윈도우 계열에서는 ICMP 방식을 이용하고, 유닉스/리눅스 계열에서는 UDP 방식을 이용한다.
UDP 방식은 포트 번호 33435번을 이용한다.
'Network' 카테고리의 다른 글
[3] 전송 계층의 헤더 기능 (0) | 2021.04.02 |
---|---|
[2] 네트워크 계층 기반의 주요 공격 유형 (0) | 2021.03.27 |
ModSecurity 6장_응답 데이터 분석 (0) | 2021.03.07 |
ModSecurity 5장_요청 데이터 분석 (0) | 2021.03.06 |
ModSecurity 4장_평판 및 서드파티 연관성 (0) | 2021.02.27 |