728x90
인터넷 프로토콜(IP)
- TCP/IP 프로토콜이 사용하는 전송 메커니즘
- TCP: 신뢰성 있음
- 네트워크 계층(3계층) 프로토콜
- 비신뢰성(Unreliable), 최선의 노력 전달 서비스
- 데이터그램이 목적지에 성공적으로 도달한다는 것을 보장하지 않음
- 비연결성(Connectionless): 전달되는 데이터그램에 대해 상태 정보 유지하지 않음
- 데이터그램 방법을 사용하는 패킷 교환망(인터넷망)을 위해 설계된 비연결형 프로토콜 -> for 라우팅(최적 경로 설정)
- 네트워크에서 전송될 수 있는 최대 크기가 1500bytes(MTU, 최대 전송 단위 - 이더넷의 경우)로 정해져 있으므로 패킷을 쪼개서 보냄(단편화)
데이터그램
- IP 계층의 패킷
- 가변 길이 패킷으로 헤더와 데이터(페이로드) 부분으로 구성
- 헤더는 20~60 바이트
- 라우팅에 필요한 정보(출발지 IP주소, 목적지 IP주소)를 포함
- 헤더를 4바이트 단위로 표시
- 헤더
- 버전(VER): IP version
- 헤더 길이(HLEN): 헤더 전체 길이 표시, 헤더 길이는 옵션을 추가한 경우 최대 60바이트, 4바이트 단위로 표시
- 서비스 유형(TOS, Type-Of-Service): 데이터 그램 처리 방법 정의
- 전체 길이(Total Length): 헤더와 데이터를 포함하는 전체 길이
- 식별(Identification): 단편화를 위해 사용. 분할된 패킷은 동일한 식별자를 가짐
- 플래그(Flags): 단편화를 위해 사용.
- 단편화 옵셋(Fragmentation offset): 단편화된 조각들을 합칠 때 상대적인 위치 표시
- 수명(Time to live, TTL): 데이터그램이 지날 수 있는 라우터의 수(Hop count)에 대한 제한 설정. 생존 시간을 제한
- 타임스탬프 기능을 수행하기 위해 설계. 0이 되면 데이터그램 폐기
- 프로토콜(Protocol): IP 계층의 서비스를 사용하는 상위 계층 프로토콜을 정의
- ICMP(1), IGMP(2), TCP(6), UDP(17), OSPF(89)
- 검사합(Checksum): 오류확인
- 발신지 주소(Source address): 발신지의 IP 주소 -> 전달되는 동안 변하지 않음
- IP Spoofing: 헤더의 발신지 IP 주소를 변조하는 방법
- 목적지 주소(Destination address): 목적지의 IP 주소 -> 전달되는 동안 변하지 않음
- 라우터 통과마다 MAC 주소는 변함
IPv6 데이터그램
- IPv6 배경
- IP 주소 고갈
- 보안 ex. IP Sec (보안 프로토콜)
- IPv6 데이터그램
- 기본 헤더: 40바이트
- IPv6 데이터그램 기본 헤더
- Traffic Class: IPv4의 서비스 클래스 필드를 대신함. 페이로드를 구분
- Flow label: 흐름 제어. 연결 지향 프로토콜로 사용할 수 있게 해줌
- Next header: 기본 헤더 다음의 헤더를 정의. 상위 계층 프로토콜을 위한 헤더
- Source routing: 라우터가 라우팅할 때 헤더에서 목적지 IP 주소를 확인하는데, 스푸핑을 피하기 위해 발신지 IP 주소도 확인하는 것(라우터가 알고 있는 네트워크 대역이 아닌 경우 차단)
- Hop limit: TTL
- Source/Destination address: 128 비트
- IPv4와 IPv6 헤더 비교
- 헤더의 길이 고정으로 헤더 길이 필드가 없음
- 식별, 플래그, 옵셋 필드는 IPv6 기본 헤더에 없고 확장 헤더에 포함
- 서비스 유형 필드 -> 흐름 레이블 필드
- TTL -> hop limit
- 프로토콜 필드 -> 다음 헤더 필드
- IPv4에서 옵션 필드는 IPv6에서 확장 헤더로 구현됨
단편화
- 이더넷 네트워크 환경에서 프레임의 MTU가 1500 바이트이므로 단편화가 발생
- 이더넷 환경: 데이터 링크 레벨에서 통신을 하는 네트워크 환경, 라우터의 인터페이스까지가 범위
- 단편화: 네트워크가 사용하는 프로토콜에 따라 프레임 형식과 크기가 서로 다른데 MTU 길이에 따라 나누어 보내는 것
- 데이터그램이 프레임 속에 캡슐화될 때 데이터그램의 크기는 이 최대 크기보다 작아야 함
- 관련 필드: 식별자, 플래그, 단편화 옵셋
- 플래그: 3비트. _DM (D: do not fragment, M: more fragment)
옵션
- tracert: 패킷의 경로 추적 가능
- 검사합: TCP/IP 프로토콜에 의해 사용되는 오류 검출 방법
IP 패키지
- 헤더 추가 모듈: 상위 계층으로부터 받은 데이터를 캡슐화, 검사합 삽입, 큐로 전송
- 처리 모듈
- 입력 큐 중 하나의 데이터그램을 제거
- 로컬 주소 중 하나와 일치하면 재조립 모듈로 전송 return
- 노드가 라우터라면 TTL 필드를 1 감소
- TTL이 0보다 작거나 같다면 데이터 그램을 폐기하고 ICMP 오류 메시지를 전송 return
- 데이터그램을 포워딩 모듈로 전송
- return
- 큐: 입력 큐, 출력 큐
- 라우팅 테이블: 포워딩 모듈에서 사용
- Next-hop address: 다음 라우터의 인터페이스 주소
- Interface: 현재 라우터의 나가는 인터페이스 이름
- Mask: 서브네트워크화 되지 않으면 255.255.255.255
- Flag
- U(Up): 라우터 동작 유무
- G(Gateway): 목적지가 다른 네트워크에 있음
- H(Host-Specific): 목적지 필드 내 엔트리가 호스트 지정 주소
- D(Added by redirection): ICMP 방향 재지정 메시지에 의해 라우팅 정보를 테이블에 추가
- M(Modified by redirection): 목적지에 대한 라우팅 정보가 ICMP 방향 재지정 메시지에 의해 수정
- Reference count: 현재 시간에 이 경로를 사용하는 사용자의 수
- User: 라우터로부터 해당 목적지로 전달된 패킷의 수
- 포워딩 모듈
- 라우팅 테이블 항목에 대해서 패킷 목적지 주소에 마스트를 적용
- 목적지 필드 값과 일치하고
- G 플래그가 없으면 목적지를 다음 홉 주소로 사용
- 다음 홉 주소와 함께 단편화 모듈로 패킷 전송
- return
- ICMP 에러 메시지를 전송
- return
- 단편화 모듈
- 데이터그램의 크기를 추출
- 해당 네트워크의 크기가 MTU보다 크다면
- D비트가 설정되어 있다면 데이터그램을 폐기하고 ICMP 오류 메시지를 전송 return
- 최대 크기를 계산 하여 단편화한 후 각 헤더와 옵션을 추가 후 전송 return
- 데이터 그램을 전송
- return
- 재조립 테이블
- 상태(State, St.): FREE 또는 IN-USE
- 타임아웃(Time-out, T.O.): 단편이 도착해야 하는 시간
- 단편(Fragments): 연결 리스트의 포인터
- 재조립 모듈
- 옵셋이 0이고 M비트가 0이면 데이터그램을 대기열로 전달 후 return
- 재조립 테이블에서 항목 검색
- 검색되지 않는다면 새로운 항목을 작성
- 단편을 연결 리스트에 삽입
- 모든 단편이 도착했다면 재조립 후 상위 계층으로 전달 return
- 타임 아웃을 확인하여 초과한다면 폐기 후 ICMP 오류 메시지를 전송
- return
'대학공부 > 인터넷 프로토콜' 카테고리의 다른 글
ICMP (0) | 2024.05.17 |
---|---|
IP 스푸핑 (0) | 2024.05.17 |
DHCP Spoofing (0) | 2024.04.19 |
ARP Spoofing(ARP Cache Poisoning) (1) | 2024.04.12 |
동적 호스트 설정 프로토콜(DHCP) (1) | 2024.04.05 |