관리 메뉴

wa_ter_ve

인터넷 프로토콜(IP) - ④ 검사합 & IP패키지 본문

공부/컴퓨터네트워크

인터넷 프로토콜(IP) - ④ 검사합 & IP패키지

수win 2024. 6. 8. 04:32

참조 교재: Wireshark로 배우는 컴퓨터 네트워크


 

검사합 (Check Sum)

: 대부분의 TCP/IP 프로토콜에 의해 사용되는 오류 검출 방법
- 패킷의 전달 중에 발생할 수 있는 오류에 대한 보호를 수행
- 검사합은 송신자에 의해 계산되고 패킷과 함께 전송
- 수신자는 검사합을 포함하고 있는 전체 패킷에 대해 같은 계산을 반복
- 결과가 만족되면 패킷 받아들임 / 아니면 폐기

 


 

#️⃣ 송신자의 검사합 계산

► 송신자에서 패킷은 n 비트 조각으로 나뉘어짐(보통 n은 16)
► 이 조각들은 1의 보수 연산을 사용하여 전부 더해져서 n 비트의 결과를
생성
► 합에 대한 1의 보수가 검사합이 됨

 


 

#️⃣ 수신자의 검사합 계산

► 수신자는 수신된 패킷을 k개의 조각으로 나눈 후 이들을 전부 합함
► 다음 이 합에 대한 1의 보수를 구함
► 결과가 0이면 패킷을 받아들이고 그렇지 않으면 거부

 


 

#️⃣ IP 패킷의 검사합

► 검사합 필드를 0으로 만듦
► 다음 모든 헤더를 16 비트의 조각으로 나누고 이들의 합을 구함
► 이 결과에 대한 보수를 구하여 검사합 필드에 삽입
► 검사합이 헤더만 포함할 뿐, 데이터는 포함하지 않는 이유
☑️  IP 데이터그램 내의 '데이터를 캡슐화하는 모든 상위 계층 프로토콜'은 전체 패킷을 포함하는 검사합을 가지고 있으므로 IP 데이터그램의 검사합은 캡슐화된 데이터를 점검할 필요가 없음
☑️  IP 패킷의 헤더는 라우터를 방문할 때마다 변경될 수 있는 반면, 데이터는 그렇지 않으므로 검사합은 변화되는 부분에 대해서만 구해야 함
☑️  만약 데이터가 포함되면 각 라우터는 전체 패킷에 대한 검사합을 다시 계산하여야 하고 결과적으로 많은 처리 시간이 필요함

 

#️⃣ IP 패키지

IP 구성 요소
● 헤더 추가 모듈
처리 모듈

라우팅 테이블
포워딩 모듈
MTU 테이블
단편화 모듈
재조립 테이블
재조립 모듈

 

 


 

💠 헤더 추가 모듈

: 상위 계층 프로토콜로부터 데이터와 목적지 IP 받은 뒤 IP 헤더를 추가하는 모듈

수신: data, destination address
1. IP 데이터그램에 데이터를 캡슐화한다.
2. 검사합을 계산하여 검사합 필드에 삽입한다.
3. 해당 입력 큐로 데이터를 전송한다.
4. return

 



💠  처리 모듈

: IP 패키지의 핵심

1. 입력 큐 중 하나의 데이터그램을 제거
2. if (목적지 주소가 127.X.Y.Z 또는 로컬 주소 중 하나와 일치하면)
           ① 데이터그램을 재조립 모듈로 전송  
           ② return
3. if (노드가 라우터라면)
              TTL 필드 값을 1 감소
4. if (TTL이 0보다 작거나 같다면)
           ① 데이터그램을 폐기 
           ② ICMP 오류 메시지를 전송 
           ③ return
5. 데이터그램을 포워딩 모듈로 전송
6. return

 



💠  

► 입력 큐
- 데이터링크 계층이나 상위 계층 프로토콜로부터 데이터그램을 저장
► 출력 큐
- 데이터링크 계층이나 상위 계층 프로토콜로 가는 데이터그램을 저장

 



💠  라우팅 테이블

: 패킷의 다음 홉 주소 결정하기 위해 포워딩 모듈에서 사용
- 7개의 필드로 구성

 

  마스크

: 목적지 주소에 적용될 마스크
- 호스트 지정, 디폴트 라우팅인 경우 255.255.255.255
- 서브네트워크화 되지 않은 경우는 클래스의 디폴트 마스크
✓ 클래스 A: 255.0.0.0
✓ 클래스 B: 255.255.0.0
✓ 클래스 C: 255.255.255.0

 

► 목적지 주소
: 목적지 호스트 주소 또는 목적지 네트워크 주소


► 다음 홉 주소

: 패킷이 전달되는 다음 홉 라우터 주소

 

► 플래그(flag)
•  U(Up): 라우터의 동작 유무
•  G(Gateway): 목적지가 다른 네트워크에 있음을 나타냄
•  H(Host-Specific): 목적지 필드내의 엔트리가 호스트 지정 주소
•  D(Added by redirection): 라우팅 정보가 ICMP의 방향 재지정 메시지에 의해 라우팅 테이블에 추가
•  M(Modified by redirection): 목적지에 대한 라우팅 정보가 ICMP의 방향 재지정 메시지에 의해 수정


► 참조 횟수(reference count)
: 현재 시간에 이 경로를 사용하는 사용자의 수


► 사용(use)
: 라우터로부터 해당하는 목적지로 전달된 패킷의 수


► 인터페이스(interface)
: 인터페이스 이름

 



💠 포워딩 모듈

- 처리 모듈로부터 IP 패킷을 받아서 패킷을 전달하기 위해 보내져야 할 노드의 주소와 패킷이 보내져야 하는 인터페이스 번호를 찾는다

1. 라우팅 테이블의 각 항목에 대해서
     ① 패킷 목적지 주소에 마스크를 적용한다.
     ② if (목적지 필드에 있는 값과 일치하면)
            ① if (G 플래그가 없다면)
                  ① 패킷 목적지 주소를 다음 홉 주소로 사용한다.
                  ② 다음 홉 주소와 함께 단편화 모듈로 패킷을 전송한다. 3. Return
2. if (일치하는 것이 없으면) ICMP 에러 메시지를 전송한다.
3. Return

 



💠 MTU 테이블

- 단편화 모듈이 특정 인터페이스의 MTU를 찾기 위해 사용



💠 단편화 모듈

- 데이터그램의 길이가 MTU보다 길다면 단편화 모듈을 사용

수신 : 라우팅 모듈에서 IP 패킷
1. 데이터그램의 크기를 추출한다.
2. if (해당 네트워크의 크기가 MTU보다 크다면)
       ① if (D 비트가 설정되어 있다면)
              데이터그램을 폐기한다.
              ② ICMP 오류 메시지를 전송한다.
              ③ return
      else
               최대 크기를 계산한다.
              데이터그램을 단편화한다.
               각 단편에 헤더를 추가한다.
              ④ 각 단편에 필요한 옵션을 추가한다.
              ⑤ 데이터그램을 전송한다.
              ⑥ return
3. else
         데이터그램을 전송한다.
4. return

 


 

💠 재조립 테이블

: 재조립 모듈에서 사용
•  상태(state): FREE 또는 IN-USE
•  IP 주소: 데이터그램 발신지 IP 주소
•  데이터그램 ID: 데이터그램을 지정하는 값
•  타임 아웃: 단편이 도착해야 하는 시간
•  단편: 연결 리스트의 포인터

 



💠 재조립 모듈

수신: 처리 모듈에서 IP 데이터그램
1. if (옵셋 값이 0이고 M비트가 0이라면)
          ① 데이터그램을 적절한 대기열로 전달한다.
          ② return
2. 재조립 테이블에서 해당 항목을 검색한다.
3. if (검색되지 않는다면)
          새로운 항목을 작성한다.
4. 단편을 연결 리스트의 해당 위치에 삽입한다.
           if (모든 단편이 도착했다면)
                단편을 재조립한다.
                데이터그램을 해당 상위 계층 프로토콜로 전달한다.
                ③ return
           else
                타임 아웃을 확인한다.
                if (타임 아웃이 초과한 경우라면)
                        모든 단편을 폐기한다.
                          ICMP 오류 메시지를 전송한다.
5. return