본문 바로가기

컴퓨터네트워크

네트워크층: 데이터전송 - 데이터그램(Datagram)

728x90
반응형

데이터그램 형식

데이터그램(datagram) : IP가 사용하는 패킷

데이터그램은 가변 길이 패킷으로 헤더와 페이로드(데이터)로 이루어져 있다.

헤더는 20~60 바이트이며 라우팅과 전달에 필수 정보를 가지고 있다.

TCP/IP에서는 헤더를 4바이트로 구분해서 표현하는 것이 일반적이다.

 

필드

 1) 버전 번호(version number, VER) : 4비트의 버전 번호 필드는 IP프로토콜의 버전을 정의한다. IPv4는 4의 값을 가진다.

 

 2) 헤더 길이(header length, HLEN): 4비트 길이의 헤더 길이 필드는 데이터그램 헤더의 전체 길이를 4바이트 단위로 표현한다. IPv4  데이터그램은 가변 길이 헤더를 가진다.

 

 3) 서비스 유형(service type) : 이 16비트 필드는 IP 데이터그램의 전체 바이트 수를 정의한다. 이 필드를 통해 수신자는 언제 패킷이 완전히 도착하는지 알 수 있다.

상위 계층에서 온 데이터 길이를 알기 위해서는 전체 길이에서 헤더 길이를 빼면 된다.

Length of data = total length - ((HLEN) * 4)

때때로 데이터그램이 프레임에 캡슐화 될 뿐만 아니라 패딩이 추가될 수도 있다. 

즉, 데이터그램을 역캡슐화할 때, 얼마만큼이 진짜 데이터이고 얼마만큼이 패딩인지를 결정하기 위해 전체 필드 길이를 조사할 필요가 있다.

 

 4) 식별자(Identification), 플래그(flag), 단편화 오프셋(Fragmentation offset) : 이 세 필드는 데이터그램의 크기가 사용하는 네트워크가 처리할 수 있는 크기보다 클 경우 필요한 IP 데이터그램의 단편화와 관련이 있다.

16비트의 식별자 필드는 데이터그램이 전송된 발신지 호스트를 구분한다.

3비트의 플래그 필드는 세 가지 플래그를 정의한다.

가장 왼쪽 첫 번째비트는 예약된 비트로 사용되지 않는다. 가운데 두 번째 비트(D비트)는 단편화 금지(do not fragment)필드로 만약 이 값이 1이면 데이터그램을 단편화해서는 안 된다. 가장 오른쪽 세 번째 비트(M비트)는  추가 단편화 비트(more fragment bit)로, 만약 이 값이 1이라면, 데이터그램은 마지막 단편이 아니고 다른 단편이 더 있음을 의미한다.

13비트의 단편화 오프셋 필드(fragmentation offset field)는 전체 데이터그램에서 해당 단편의 상대적인 위치를 나타낸다.

단편화 예제

오프셋 값은 8바이트 단위로 측정된다. 왜냐하면 오프셋 필드가 13비트 길이이고, 8191비트(2^13)보다 크 값은 나타낼 수 없기 때문이다.

 

5) 생존시간(TTL, Time-To-Live) : TTL 필드는 데이터그램이 방문할 수 있는 최대 라우터의 수를 정의한다.

라우팅 프로토콜의 잘못된 동작 때문에 인터넷에서 데이터그램이 목적지에 도착하지 못하고 몇몇 네트워크를 순환적으로 계속 전송되는 경우가 있다. 이런 경우 인터넷상에 추가적인 트래픽을 발생하게 한다.

데이터그램을 전달하는 각 라우터는 TTL 필드값을 1씩 감소하며 필드값이 0이 되면 라우터는 해당 데이터그램을 폐기시킨다.

 

6) 프로토콜(protocol) : TCP/IP에서 페이로드(payload)라 불리는 패킷의 데이터 부분은 다른 프로토콜의 전체 패킷을 전송한다.

7) 헤더 검사합(header checksum) : 전달받은 패킷이 잘 도착했는지 오류를 검출하기 위해서 존재한다. 검사합을 이용해 네트워크를 통해 전송항 데이터의 무결성을 검사할 수 있다.

<송신 측>

a) 16비트 검사합인경우, 모든 영역을 16비트로 나눈 후

b) 검사합 필드 값은 0으로 지정한다.

c) 모든 영역 비트 값들을 1의 보수 연산을 계속 덧셈한다.(이 때, 올림 수는 최하 비트로 더해진다.)

d) 마지막으로 1의 보수를 취한 값을 checksum 필드 값으로 설정한다.

<수신 측>

a) 수신한 패킷의 필드를 모두 16비트 단위로 나눈다.

b) checksum 필드를 포함한 16비트 영역을 계속 덧셈한다.(이 때, 올림 수는 최하 비트로 더해진다.)

c) 모두 더한 값에 1의 보수를 취한 값이 0이면 오류가 없다고 판단한다.

계산 정리를 잘 해놓은 블로그 https://velog.io/@hsshin0602/컴퓨터-네트워크-IP-Header-Option

 

[컴퓨터 네트워크] IP Header Option & Checksum

✔우리는 모든 옵션을 다 확인하지 않고 Multiple-Byte에서 Record route, Strict source route, Loose source route, Timestamp 이 4갸지만 볼 것이다. Record route 데이터그램를 다루는 인터넷 라우터를

velog.io

 

8) 발신지와 목적지 주소(source and destination address) : 32비트 발신지와 목적지 IP 주소

 

9) 옵션(option) : 데이터그램 헤더는 40바이트까지 옵션을 가질 수 있다. 옵션은 네트워크 테스트와 디버깅에 사용된다.

옵션이 IP 헤더에 필수적인 것은 아니지만 옵션을 처리하기 위해서는 옵션 처리를 위한 IP 소프트웨어가 필요하다.

 

10) 페이로드(payload) : 페이로드 혹은 데이터는 데이터그램을 만드는 중요한 이유이다. 패이로드는 IP를 사용하는 다른 프로토콜에서 오는 패킷이다. 

 

단편화

IP 단편화는 IP 패킷의 크기를 최대 전송 단위(MTU, Maximum Transfer Unit) 이하로 작게 분할해 전송할 수 있도록 처리하는 기법이다.

IP 데이터그램에서 단편화와 관련된 필드는 식별자, 플래그, 단편화 오프셋이다.

데이터 그램은 서로 다른 네트워크를 통해 전달될 수 있다.

각 라우터는 수신한 프레임에서 데이터그램을 역캡슈로하하고 처리한 후 다른 프레임으로 캡슐화한다.

수신한 프레임의 형식과 크기는 프렘이이 막 통과한 물리 네트워크에서 사용되는 프로토콜에 따라 다르다.

 

옵션들

옵션은 네트워크 테스트와 디버깅을 위해 사용 가능하다. IPv4헤더의 필수 부분이 아니기는 하지만, 옵션 처리에는 IPv4 소프트웨어가 필요하다. 옵션은 크게 한 바이트 옵션과 다중 바이트 옵션으로 나누어진다.

1) 한 바이트 옵션들 (2개)

a) 무동작(no-operation) 옵션은 옵션 중간에 채우기 용도로 사용되는 1바이트 옵션이다.

b) 선택사항 종료(end-of-option) 옵션은 선택사항 필드의 끝에서 패딩을 위해 사용되는 1바이트 옵션이다. 그러나 마지막 옵션으로만 사용 가능하다.

2) 다중 바이트 옵션들 (4개)

a) 경로 기록(record route) 옵션은 데이터그램을 처리하는 인터넷 라우터를 기록하기 위해 사용된다. 9개까지 기록이 가능하다. 주로 디버깅이나 관리에 사용한다.

b) 엄격한 발신지 경로(strict source route) 옵션은 인터넷을 통해 이동하는 데이터그램의 경로를 사전에 결정하기 위해 발신지에 의해 사용된다. 만약, 데이터그램이 엄격한 발신지 경로를 정희하면, 데이터그램은 옵션에서 정의된 모든 라우터를 거쳐 가야 한다.

c) 느슨한 발신지 경로(loose source route) 옵션은 엄격한 발신지 경로와 비슷하나 훨씬 덜 엄격하다. 리스트에 있는 각 라우터는 반드시 방문되어야 하지만 데이터그램은 다른 라우터도 방문이 가능하다.

d) 타임스탬프(timestamp) 옵션은 라우터에 의해 처리되는 데이터그램의 시간을 기록하기 위해 사용된다. 데이터그램이 처리되는 시간을 아는 것은 라우터의 행동을 추적에 도움이 된다.

반응형