IP
- IP주소체계를 이용하여 인터넷에 연결된 모든 호스트들과 데이터 통신 가능
- 네트워크 계층에 해당
IP 데이터그램의 형식, 기능
- IP에서 사용하는 패킷을 데이터그램이라 함
- IP데이터그램은 헤더 부분과 사용자 데이터 부분으로 구분
- IP데이터그램의 길이는 가변적, 기본 헤더 크기20byte
옵션 영역을 사용시 최대 60byte 확장가능
버전(VER)
- IP 프로토콜의 버전을 나타내기 위한 영역
- IPv6의 사용이 점점 증가하는 추세
헤더 길이 영역(HLEN)
- 4바이트를 기본 단위로 하여 헤더 부분의 길이 규정
차별화된 서비스(Differntiated Services=Tos)
- 데이터의 전송 목적에 따라 서로 다른 우선권을 설정하기 위한 영역
- 네트워크를 통한 데이터 전송 시 사용자의 데이터마다 우선권을 부여
- 우선권이 높은 데이터가 먼저 서비스를 받도록 허용하며 차별화된 서비스를 위한 영역으로 사용할 수 있도록 규정
- 서비스 유형(8bit)
- 3bit 우선순위, 4bit 서비스 유형
- 혼잡과 같은 문제가 발생하였을 경우 데이터그램의 우선 순위 정의
Total Length
- 바이트 단위로 헤더를 포함한 전체 패킷의 길이를 규정
(IP 데어터그램의 총 길이)
- 16비트로 헤더와 데이터를 포함한 전체 길이
- 데이터 길이 = 전체 길이 - 헤더 길이
- 2^16byte이고 헤더는 20~40byte
데이터그램 식별자(idenification)
- 단편화시 식별자 id를 줘 나중에 조립할 때 같은 id끼리 한다
- 패킷 분할(fragmentation)시 이 영역 값을 참조하면, 어느 원본 데이터 그램으로 부터 분할되었는지를 구분 가능
플래그(flag)
- 전송되는 패킷이 분할된 패킷인지 아닌지 여부
- 분할시: 1 아닐 시: 0
단편화 옵셋(fragmentation offset)
- 8바이트 단위로, 분할된 패킷의 일부분을 나타냄
- 8로나누어 계산
time to live
프로토콜
- IP계층의 서비스를 사용하는 상위 곛으 프로토콜을 정의
- ICMP, IGMP, TCP, UDP 등이 있다
검사합(checksum)
발신지,목적지 주소
문제
-
EX) 처음 8bit다음과 같은 IP패킷 도착
01000010 폐기한 이유는?
Sol) 0100 ver(ipv4) 0010(길이) 최소 20바이트 되야함
-
EX) HLEN의 값이 2진수로 1000이다 옵션은 몇 바이트?
Sol) 8x4 =32byte 헤더는 20byte이므로 추가 옵션은 12byte가 된다
-
EX) HLEN의 값이 16진수로 5이고 전체 길이 필드 값이 16진수로 0028이다 몇 바이트의 데이터 전송하는가
Sol) 5x4=20byte이고 전체 길이 필드가 40byte이므로 20byte 데이터 전송한다
-
EX) 처음 16진수 값들이 다음과 같은 패킷이 도착
45000028000100000102...
- 이 패킷이 폐기되기 전에 몇 홉을 지날 수 있나?
- 이 패킷은 어떤 상위 계층 프로토콜 데이터를 전송하고 있는가?
Sol)
- 수명필드 전까지는 64bit이므로 8byte 16개 자리지나면 수명필드 8bit 01 한개의 홉 지남
- 다음 8bit가 프로토콜 이므로 02 = IGMP
IPv6 데이터그램 기본 헤더
- 기본헤더와 페이로드로 구성
- 기본헤더는 40byte로 고정
페이로드에서 헤더 확장이 필요시 확장헤더에서 추가
버전
- 4bit 필드는 IP의 버전 정의 IPv4:4, IPv6:6
트래픽 클래스(Traffic Class)
- 8bit필드는 서로 다른 전달 요구 사항을 갖는 페이로드를 구분하는데 쓰임
- IPv4의 서비스 클래스 필드를 대신
흐름 레이블(Flow label)
- 20bit
- 특정 데이터의 흐름을 특별하게 제어하기 위해
페이로드 길이(payload length)
- 2byte
- 기본 헤더를 제외한 IP 데이터그램 전체길이
- 8bit
- 상위 계층 프로토콜위한 헤더
- IPv4의 프로토콜과 같다
홉 제한(hop limit)
발신지, 목적지 주소
단편화
- MTU만큼 잘라서 단편화 한다
- 자세한건 아래 실습에
와이어샤크 실습
IP ver(4bit)
HLEN(4bit)
- Header은 보통 0101로 패킷 데이터 영역에서는 5로 표기
마지막 필드인 options 값에 따라 길이가 가변적일 수 있다
TOS(8bit)
- type of service로 서비스 종류 및 혼잡 알림
- Differentiated service code point
요구되는 서비스 우선 순위에 대한 유형을 나타내어 해당 패킷이 라우터에서 어떻게 처리해야 하는지 정의
- Explict congestion notification
혼잡을 알리는 필드 라우터가 패킷을 즉각 폐기 않고 최종노드에 혼잡 알리는 용도
Total Length(16bit)
- IP의 헤더(보통 20bytes)+캡슐화된 데이터 길이 최대 65,535bytes
Identification(16bit)
- 대부분 네트워크 환경은 이더넷 환경이기에 MTU가 1500bytes로 통용
MTU이상인 경우 단편화 하는데 단편화된 임의의 패킷이 어떠한 데이터인지 구분하기 위해서 고유번호 할당 이것이 Identification이다
Flags(3bit) + Fragment offset(13bit)
- 단편화에 대한 필드이며 패킷데이터 영역에서는 이 두개의 필드가 결합된 값으로 나온다
Flags는 단편화된 추가 패킷 여부 알려준다
- DF가 1이면 분할된 패킷이 아니다. 0이면 분할(0x40은 분할된 패킷이 아니다)
- MF가 1이면 분할된 패킷이 더 있다. 0이면 더이상 없다
Fragment offset(13bit)
- 분할된 패킷을 수신측에 재배열 시 패킷 순서 파악하는데 사용
- 재배열 기준은 헤더 크기를 뺀 캡슐화된 데이터 크기
EX) 만약 5000bytes ICMP패킷 전송 시
첫번쨰는 0이고 MTU(이더넷) 1500bytes이므로 IP헤더 20bytes제외 나머지 1480bytes가 데이터 사이즈가 된다
그렇게 두번째는 0+1480 세번쨰는 0+1480+1480 네번째에 4480된다.
네번째 패킷의 offset 4480보고 마지막을 예측한다.
TTL(8bit)
- 라우터 통과할 수 있는 최대 홉 수를 지정하고 만약 0이 된다면 라우터에서 폐기하여 패킷이 네트워크에 있는거 방지
상위계층 프로토콜(8bit)
- IP헤더에 따라오는 상위 프로토콜 알려주며, TCP, UDP,ICMP 등을 ID로 판별 가능
CheckSum
- 체크섬 확인할 때 16bit씩 잘라 체크섬을 제외하고 다 더한다 이후 1의 보수를 해주어 체크섬과 같은지 확인
같다면 손상x
발신지 주소
목적지 주소