전공 공부하다가 단편화 비트에대해 헷갈리는 개념이 있어서 확실하게 짚고 넘어가고자 기록을 남긴다.
최대 전달 단위 (MTU; Maxmum Transfer Unit)
- 프레임의 형식에 정의된 필드 중의 하나
- 데이터그램이 프레임 속에 캡슐화 될 때 데이터그램의 크기는 최대 길이보다 작아야 함
최대 전달 단위 (MTU)
MTU의 값은 네트워크 프로토콜마다 다름
서로 다른 네트워크의 MTU
※단편화와 관련된 필드
식별자(identification)
- 16bit 필드는 발신지 호스트로부터 나온 데이터그램을 유일하게 식별
- 식별자와 발신지 IP주소의 조합은 데이터그램이 발신지 호스트를 떠날 때 유일하게 정의되어야 하고,
이러한 유일성을 보장하기 위해 IP프로토콜은 카운터를 사용하여 데이터그램에 레이블을 붙임
- 식별자는 목적지에서 데이터그램을 재조립하는데 도움이 됨
플래그(Flag)
- 3bit 필드로 처음 비트는 사용되지 않음
- 두 번째 비트는 do not fragment로 이 플래그의 값이 1이면 시스템은 데이터그램을 단편화 해서는 안 됨
- 세 번째 비트는 more fragment로 이 값이 1이면 데이터그램은 마지막 단편이 아니라는 것을 알림
Flag
- 첫 비트는 사용하지 않음
- DF (Don't Fragmentation)
0 : 단편화 가능 1: 단편화 불가능
- MF (More Fragmentation)
0 : 분할된 패킷이 마지막 패킷(혹은, 단편화 되지 않았음)
1 : 마지막 패킷이 아님
Flag 변수 , // on , off ,/ true, false 여부에 따라 작동이 크게 바뀌는 변수
단편화 옵셋
단편화 옵셋 (Fragmentation offset)
-13 bit 필드로 전체 데이터그램 내에서 단편의 상대적 위치를 나타 냄
- 원래의 데이터그램 내에서 데이터의 옵셋을 8 바이트 단위로 나타 냄
800 으로 짤리면 실제 거리에서 % 8 해서 몫이 들어간다.
해당하는 값의 실제값은 x8이다.
단편화의 예
젤 첫번째 패킷은 Offset이 0 이다.
두 번째 패킷의 실제 Offset은 1400인데, 필드에 들어 갈 때에는 8로 나눠서 들어간다. 즉 175로 들어간다.
세 번째 패킷의 실제 Offset은 2800인데, 필드에 들어 갈 때에는 8로 나눠서 들어간다. 즉 350
identifier 식별자는 변하지않는다. 14567 어디에서 쪼개 졌는지 알기 위함
다시 순서대로 합할때 누가 앞인지는 어떻게 아는가? offset으로 알 수 있다.
Fragment 2.1을 보면 MD가 1이다. 당연한 결과다. MD는 원본 데이터그램을 기준으로 마지막 패킷이 0의 값을 가진다.
※옵션
- IP 데이터그램의 헤더는 고정 부분과 가변 부분 중 가변 부분은 옵션으로 구성
- 최대 길이는 40바이트
- 옵션은 네트워크를 시험하거나 디버그하기 위하여 사용
형식
- 코드 필드와 길이 필드, 그리고 가변 길이의 데이터 필드로 구성
옵션 형식
Copy only in first fragment :
Class는 00/ 10 만 사용한다.
※ 코드
복사 (copy)
- 1bit로 구성된 복사 필드는 단편화에 옵션을 포함시킬 것인지를 제어
- 0인 경우에 옵션은 첫 번째 단편에만 복사
- 1인 경우에는 옵션이 모든 단편에 복사
클래스 (class)
- 2bit로 구성된 클래스 필드는 옵션의 일반적인 목적을 정의
- 00인 경우에는 옵션이 데이터그램의 제어에 사용
- 10인 경우에는 옵션이 디버그나 관리 목적
- 01과 11은 아직 정의되지 않음
번호 (number)
- 5bit로 구성된 번호 필드는 옵션의 유형을 정의
- 5bit는 32개의 다른 유형을 정의할 수 있지만 현재 여섯 유형만 정의 되어 있음
길이
- 코드 필드와 길이 필드를 포함한 옵션의 전체 길이를 정의
- 이 필드는 모든 옵션 유형에 있지 않음
데이터
- 특별한 옵션이 필요로 하는 데이터를 포함하고 있음
- 이 필드는 모든 옵션 유형에 있지 않음
검사합
송신자의 검사합 계산
- 송신자에서 패킷은 n 비트 조각으로 나뉘어짐 (보통 n은 16)
- 이 조각들은 1의 보수 연산을 사용하여 전부 더해져서 n비트의 결과를 생성
- 합에 대한 1의 보수가 검사합이 됨
수신자의 검사합 계산 (계산)
- 수신자는 수신된 패킷을 k개의 조각으로 나눈 후 이들을 전부 합함
- 다음 이 합에 대한 1의 보수를 구함
- 결과가 0이면 패킷을 받아들이고 그렇지 않으면 거부
검사합 개념
1의 보수 연산을 이용한 검사합
- 데이터 전달과 처리 과정에서 오류가 없다면 수신자가 모든 조각을 더하고 1의 보스를 구한 결과가 0이 되어야 함
- 송신자에서 모든 조각을 더한 결과가 T라고 가정하면 이 결과에 대한 1의 보수는 이 수에 대한 음의 수인 -T가 됨
- 수신자는 패킷을 수신한 후 모든 조각을 합함
- 이 것은 T와 -T를 합한 것과 같고 그 결과는 -0이 됨
- 다시 이에 대한 보수를 구하면 0이 됨
- 그러므로 최종 결과가 0이면 받아들이고 그렇지 않으면 폐기함
※ 1의 보수에는 -0과 +0이 존재 0을 하나로 만들기 위해 2의보수가 탄생
1의 보수 연산을 이용한 검사합
IP 패킷의 검사합
- 검사할 필드를 0으로 만듬
- 다음 모든 헤더를 16bit의 조각으로 나누고 이들의 합을 구함
- 이 결과에 대한 보수를 구하여 검사합 필드에 삽입
검사합 계산의 예
Checksum 계산 후 기존 필드에 OverWriting 되어 패킷 완성 후 전달 된다.
'전공 수업 CS > Computer Network' 카테고리의 다른 글
[컴퓨터 네트워크] CIDR, 서브넷 마스크 (0) | 2022.11.30 |
---|---|
[컴퓨터 네트워크] IP 주소 클래스(A, B, C 클래스) (0) | 2022.11.30 |
[컴퓨터 네트워크] IP 주소 (0) | 2022.11.30 |
[컴퓨터 네트워크] 네트워크 계층 | 와이어 샤크를 이용해 IP 패킷 분석하기 (0) | 2022.11.26 |
[컴퓨터 네트워크] 네트워크 연결성 | 교환망, 노드, 링크, 연결 세션, ISP란? (0) | 2022.09.24 |