wa_ter_ve
인터넷 프로토콜(IP) - ④ 검사합 & IP패키지 본문
참조 교재: 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
'공부 > 컴퓨터네트워크' 카테고리의 다른 글
사용자 데이터그램 프로토콜(UDP) (0) | 2024.08.23 |
---|---|
전송층 (0) | 2024.08.23 |
인터넷 프로토콜(IP) - ③ 옵션 (0) | 2024.06.04 |
인터넷 프로토콜(IP) - ② 단편화 (0) | 2024.06.03 |
인터넷 프로토콜(IP) - ① 데이터그램 (0) | 2024.06.02 |