2022. 4. 4. 00:40ㆍNetwork
- Version(4bits)
IP버전을 나타내고 IPv4, IPv6가 올 수 있음
IPv4의 바이너리 패턴은 0100[4]
- IHL(4bits)
IPv4 헤더 길이를 나타냄
헤더의 길이는 추가된 옵션의 수에 따라 다르기 때문에 모든 IPv4 헤더의 길이가 동일 X (옵션은선택사항)
헤더의 길이는 4바이트 블록 수로 계산. 길이를 계산하기 위해 바이트 수를 4로 나누면 됨.
ex) 20바이트가 포함된 경우 4바이트 블록의 헤더 길이 -> 5 = (20/4)
필드값이 5이면 헤더의 길이 -> 5 * 4 =20바이트, 필드값이 10이면 헤더의 길이는 -> 10 * 4 = 40바이트
IPv4 옵션이 길이가 4바이트의 정수배가 아닌 경우 나머지 바이트는 패딩 옵션을 통해 채워짐
IPv4 헤더의 최소 크기는 20바이트, 모든 옵션을 포함한 헤더의 최대 크기는 60바이트
이 값에 5를 곱한 바이트 단위 크기가 전체 IP 헤더의 크기
- Type of Service(8bits)
서비스 품질 기능을 제공하기 위한 정보를 전달됨
높은 값을 우선으로 처리하기 때문에 음성 -> 영상 -> text순으로 처리함 [TCP의 Urgent Pointer과 유사함]
P|P|P|D|T|R|C|0
8bits중 앞 3bits(P) 우선순위, D(delay)->지연(0->정상지연, 1->낮은지연), T(troughput)->처리량(0->정상처량, 1->높은처리량), R(reliability)->신뢰성(0->정상신뢰도,1->높은신뢰도), C(cost)->비용(0->정상비용,1->최소비용), 마지막bit는사용 X
- Total Length(16bit)
IPv4 데이터그램의 길이(바이트)를 식별하는 16비트 필드이고 헤더의 길이+헤더가전달하는 데이터가 포함됨
IPv4 데이터그램의 최소 길이는 20바이트(IP 헤더의 최소 크기는 20바이트 = 데이터가 없는 IPv4 헤더의 경우), 최대 길이는 65,535바이트(16비트의 경우 가능한 최대 값)
TCP와 달리 실제의 데이터길이를 예측할 수 있음[Total Length - IP Header(HLEN*5)]
- Identification(16bit)
식별 필드는 16비트를 사용하며 조각에서 재조립될 때 특정 패킷을 식별하는 데 도움이 되도록 발신자가 고유하게 설정패킷이 하나만 있고 단편화되지 않은 경우 해당 특정 식별 값을 가진 유일한 패킷이 됨. 조각난 패킷의 경우 값은 모든조각에서 동일하며 대상 장치에서 데이터를 재조립하는 데 사용됨
- IP FLAGS(3bit)
3개의 비트로 이루어져 있음
첫번째 비트 -> 0[항상사용X]
두번째 비트 -> DF[0으로 설정되면 IPv4 데이터그램이 조각화, 1은 조각화X]
세번째 비트 -> MF[더 많은 조각이 진행 중임을 나타내는 플래그. MF가 0 -> 더 이상 조각을 보낼 필요가 없음, 1->조각 더 있음]
- Fragment Offset(13bit)
쪼개진 패킷들의 순서들을 알려줌[쪼깨진 패킷들의 순서는 상대적임]
8바이트로 쪼개지며 첫번째 패킷은 offset에 0이라고 표시됨
만약 오리지널 데이터 4000바이트를 3개로 단편화할경우 각각 단편화된 앞자리의 주소값들이 있을거임. 그 주소값과 8을 나누면 그게 Fragment Offset값이 되고 단편화 수가 많아 질수록 값이 누적해서 증가함.
cf) 2번째라인 필드[Identification ~ Fragment Offset]을 단편화하는 필드라고함.
3개의 필드를 정리해보면 아래그림처럼 나온다.[A(Identification), 녹색(IP FLAGS), 노란색(Fragment Offset)]
- TTL(8bit)
ip 패킷의 생존시간을 나타냄
-> 홉 수를 나타내며 해당 홉까지 데이터가 안나오면 드롭시킴
라우터를 거칠때마다 패킷의 값이 1씩 감소해 0이 되면 drop시킴 - > 라우팅 루프를 방지할 수 있음
- Protocal(8bit)
IP 데이터그램의 데이터(페이로드)에 담겨져 있는 상위 계층의 프로토콜을 알려줌
대표적으로 UDP, TCP 등이 해당됨
- Header Checksum(16bit)
헤더에 에러가 있는지 검사를 함
헤더패킷을 16비트단위로 잘라서 체크섬과 비교한 후 일치하지않으면 패킷을 폐기함
패키헤더체크섬 계산방법으로는 16비트씩 자른값[체크섬이 16비트니이니깐]을 모두 더한 후 체크섬에 들어갈 수 있는 16비트 값이 넘어가면 초과된 값은 16비트로 세팅된 값 뒤에 둔다음 2의 비트로 변환하여 1의 보수로 변경함
-> 즉 계산방식은 version 필드 값부터 마지막 필드인 목적지 IP 필드값까지 모두 더함 - Version 필드~ 목적지 IP 필드( Checksum 필드 제외) -> 16진수 인코딩된 값[체크섬이 16비트니이니깐]들을 2진수로 변경 -> 1의 보수로 변경
- Source Address(32bit)
패킷을 보내는 ip adress
- Destination Address(32bit)
패킷의 목적지의 ip adress
- IP Option
필드는 주로 테스트, 디버깅 및 보안에 사용되는 여러 선택적 헤더 설정을 지원함
- Padding
ip헤더는 4바이트단위로 잘라야 되는데 IP Option값에 따라 4바이트로 잘라지지 않을때
4바이트로 만들어 줄 수 있음
'Network' 카테고리의 다른 글
TCP header (0) | 2022.04.05 |
---|---|
Ipv6 header (0) | 2022.04.04 |
Proxy (0) | 2022.03.27 |
Portforwarding (0) | 2022.03.26 |
NAT (0) | 2022.03.26 |