Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IPv4 프로토콜 #2 #37

Open
Jangchanhi opened this issue Jul 26, 2022 · 0 comments
Open

IPv4 프로토콜 #2 #37

Jangchanhi opened this issue Jul 26, 2022 · 0 comments

Comments

@Jangchanhi
Copy link
Owner

[단편화]

  • Identification(식별자) 필드[16비트] : 발신지 호스트로부터 나온 데이터그램을 유일하게 식별함.
    식별자와 발신지 IP 주소의 조합은 데이터그램이 발신지 호스트를 떠날 때 유일하게 정의되어야 한다. 이런 유일성을 보장하기 위해 IP 프로토콜은 카운터를 사용하여 데이터 그램에 레이블을 붙인다. 이 카운터는 양의 정수 값으로 초기화한다. IP 프로토콜이 데이터그램 데이터 그램을 보낼 때 카운터의 현재 값을 식별자 필드에 복사하고 카운터 값을 1 증가시킨다. 카운터 값이 주기억 장치 내에 유지되는 한 유일성은 보장된다. 데이터 그램이 단편화 될 때 식별자 필드의 값은 모든 단편에 복사된다. 다시 말해서 모든 단편은 같은 식별자 값을 가지게 되며, 이 값은 원 데이터그램의 값과 같다. 식별자는 목적지에서 데이터 그램을 재조립하는데 도움이 된다. 같은 식별자 값을 가지는 모든 단편은 하나의 데이터그램으로 재조립되어야 한다.
    fragmented 되었을 때

  • 플래그(flag) : 3비트의 필드이다. # 처음 비트는 사용X,

두 번째 비트는 Do not fragment 비트이다.

  1. 이 플래그 값이 1이면 데이터그램을 단편화해서는 안된다. 단편화를 수행해야 하는데 이 비트가 설정되어 있어 네트워크를 통해 데이터그램을 전달 할 수 없으면 데이터 그램을 폐기하고 ICMP 오류 메시지를 발신지 호스트에 보냄.
  2. 값이 0이면 필요한 경우 데이터그램은 단편화될 수 있다.

세 번째 비트의 이름은 more fragment 비트이다.

  1. 이 값이 1이면 데이터그램은 마지막 단편이 아니라는 것을 알려줌
  2. 이 값이 0이면 마지막 단편이거나 유일한 단편이다.
  • MTU ( Maximum Transfer Unit) : 프레임의 형식에 정의된 필드 중의 하나는 데이터 필드의 최대 크기인 최대 전단 단위(MTU)이다. 즉 데이터 그램이 프레임 속에 캡슐화될 때 데이터 그램의 크기는 이 최대 크기보다 작아야 한다. 이 최대 크기는 네트워크 내에서 사용되는 하드웨어와 소프트웨어에 의해 주어지는 제한 조건에 의해 결정된다.
    image

-> MTU 의 값은 물리 프로토콜마다 다르다.
ex) IP 프로토콜을 물리적 네트워크에 독립적으로 만들기 위해 IP 데이터그램의 최대 길이를 65,535바이트로 결정하였다. MTU가 이렇게 큰 프로토콜을 사용하면 패킷전달은 효율적이지만 작은 다른 네트워크에서는 데이터 그램을 나눠서 보내야 하는데 이걸 ‘단편화’라 한다.
=> 데이터그램 내의 데이터만 단편화된다.

  • 데이터 그램이 단편화될 때 각 단편은 자신의 헤더를 가지는데 이 헤더 내의 대부분의 필드는 본래의 값과 같으나 일부 필드의 값은 변경된다. 단편화된 데이터그램이 더 작은 MTU 값을 갖는 네트워크를 지나게 되면 다시 단편화된다. 다시 말하자면 데이터그램은 최종 목적지에 도착하기 전에 여러 번 단편화 가능함
    image

  • 데이터 그램은 발신지 호스트나 경로 상의 어떤 라우터에 의해서도 단편화 될 수 있다. 각 단편은 독립된 데이터그램으로 데이터의 재조립은 최종 목적지 호스트에 의해서만 행해진다.

  • 단편화된 데이터그램은 서로 다른 경로를 통해 전달될 수 있고, 단편화된 데이터그램이 어떠한 경로를 지날 것인지 제어하거나 보장할 수 없지만 같은 데이터 그램에 속하는 단편들은 모두 목적지 호스트에 도착하여야 한다.

  • 그러므로 재조립은 최종 목적지에서 행해져야 한다. 전송 중 패킷의 재조립은 재조립으로 인해 발생하는 비효율성의 문제 때문이다.

  • 데이터 그램이 단편화될 때 헤더에서 요구되는 부분들은 모든 단편에 복사되어야 된다. (옵션은 복사될 수도 있고 그렇지 않을 수도 있다.) 데이터 그램을 단편화하는 호스트나 라우터는 다음 세 필드의 값을 변경하여야 한다.
    => 플래그, 단편화 옵셋, 전체 길이
    나머지 필드들은 반드시 복사되어야 한다. 물론, 검사합은 단편화에 관계없이 다시 계산되어야 한다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant