목차
4.3 인터넷 프로토콜(IP): IPv4, 주소체계, IPv6 등 299
4.3.1 IPv4 데이터그램 포맷 299
4.3.2 IPv4 주소체계 302
4.3.3 네트워크주소변환(NAT) 311
4.3.4 IPv6 314
👁🗨 4.3.1 IPv4 데이터그램 포맷
- 데이터그램(datagram) : 인터넷 네트워크 계층 패킷
- 옵션 필드 제외 총 20바이트의 헤더
- 데이터 그램이 TCP 세그먼트를 전송한다면 단편화 되지 않은 각 데이터그램은 애플리케이션 계층의 메시지와 더불어 총 40바이트의 헤더를 전송
- IPv4 데이터그램의 주요 필드
- 버전 번호: 4비트로 데이터그램의 IP 프로토콜 버전을 명시
- 라우터는 버전 번호를 확인하여 데이터그램의 나머지 부분을 어떻게 해석할지 결정
- 다른 버전의 IP는 다른 데이터그램 포맷을 사용
- 헤더 길이: 네 비트로 IP 데이터그램에서 실제 페이로드가 시작하는 곳 결정
- IPv4 데이터그램은 헤더에 가변 길이의 옵션을 포함하므로 필요
- 대부분의 IPv4 데이터그램은 옵션을 포함하지 않으므로 대체로 IPv4 데이터그램 헤더는 20바이트
- 서비스 타입(type of service, TOS): 각 다른 유형의 IP 데이터그램을 구별
- 실시간 데이터그램(전화)과 비실시간 트래픽(ex FTP)을 구분하는 데 유용
- 제공될 특정 클래스 레벨은 해당 라우터의 네트워크 관리자가 결정하고 구성할 정책 문제
- TOS 비트 중 2개는 명시적 혼잡 알림에 사용
- 데이터그램 길이: 바이트로 계산한 IP 데이터그램의 전체 길이
- 필드의 크기는 16비트 -> IP 데이터그램의 이론상 최대 길이는 65,535바이트
- but 1,500바이트보다 큰 경우는 거의 없으므로 최대 크기의 이더넷 프레임의 페이로드 필드에 IP 데이터그램이 장착 가능
- 식별자, 플래그, 단편화 오프셋: IP 단편화와 관련
- 큰 IP 데이터그램이 여러 개의 작은 IP 데이터그램으로 분할
-> 목적지로 독립적으로 전달
-> 페이로드 데이터가 최종 호스트의 트랜스포트 계층으로 전달되기 전,
다시 모임
- 새로운 iP 버전인 IPv6는 단편화 사용X.
- TTL(time-to-live): 네트워크에서 데이터그램이 무한히 순환하지 않도록 함(라우팅 루프
- 라우터가 데이터그램을 처리할 때마다 감소
- 필드가 0이 되면 라우터가 데이터그램을 폐기
- 프로토콜: IP 데이터그램이 최종 목적지에 도착했을 때 사용
- IP 데이터그램에서 데이터 부분이 전달될 목적지의 트랜스포트 계층의 특정 프로토콜을 명시
- 헤더 체크섬: 라우터가 수신한 IP 데이터그램의 비트 오류를 탐지하는데 도움
- 헤더에서 각 2바이트를 수로 처리하고 이 1 의 보수를 합산하여 계산
- 라우터는 수신한 각 IP 데이터그램마다 헤더 체크섬을 계산하고 이 값과 데이터그램 헤더의 체크섬이 다르면 오류 상태임을 감지
- 라우터는 보통 오류가 검출된 데이터그램을 폐기
- TTL 필드와 옵션 필드의 값은 변경되므로 체크섬은 각 라우터에서 재계산 및 저장
- 왜 TCP/IP는 트랜스포트 계층과 네트워크 계층에서 오류 검사를 수행하는가?
- IP 헤더만 IP 계층에서 체크섬을 수행하지만 TCP/UDP 체크섬은 전체 TCP/UDP 세그먼트를 계산
- TCP/UDP와 IP는 동일한 프로토콜 스택에 속할 필요가 없다.
- 원리상 TCP는 IP가 아닌 다른 네트워크 프로토콜 위에서 운영될 수 있음
- IP는 TCP/UDP로 전달되지 않는 데이터를 전달할 수 있음
- 출발지와 목적지 IP 주소
- 종종 출발지 호스트는 2장에서 논의한 것처럼 DNS 검색을 통해 목적지 주소를 결정
- 옵션: 옵션 필드는 IP 헤더를 확장
- 모든 데이터그램 헤더 옵션 필드에 정보를 포함하지 않는 방법으로 오버헤드를 해결하기 위해 헤더 옵션은 거의 사용되지X
- 데이터그램 헤더가 가변 길이로 데이터 필드 시작점을 초기에 결정할 수 없어 옵션은 문제를 복잡하게 만듬
- 일부 데이터그램은 옵션 처리 유무에 따라서 라우터에서 IP 데이터그램을 처리하는 데 필요한 시간이 크게 달라짐
- 이런 가변 길이의 옵션은 고성능 라우터 및 호스트에서 IP 처리에 특히 중요
- 위 이유로 IP 옵션은 IPv6에 포함되지 않음.
데이터(페이로드)
- 데이터그램이 존재하는 이유
- 대부분의 경우 목적지에 전달하기 위해 트랜스포트 계층 세그먼트(TCP나 UDP)를 포함하지만 ICMP 메시지같은 유형의 데이터를 담기도 함.
![](https://velog.velcdn.com/images/yujeongkwon/post/fa22eaff-1b3d-4887-8462-b43fb69f49c3/image.png)
🌐4.3.2 IPv4 주소체계
- 호스트는 일방적으로 네트워크와 연결되는 하나의 링크를 가짐
- 호스트 IP가 데이터 그램을 보낼 때 이 링크를 통해 보냄
인터페이스
: 호스트(라우터)와 물리적 링크 사이의 경계
- 라우터와 인터페이스
- 라우터 : 한 링크로부터 데이터그램을 수신하여 다른 링크로 전달
- ㄴ 2개 이상의 연결링크 필요
- 라우터와 이런 링크 사이의 경계 또한 인터페이스
- ㄴ 각 랑크마다 하나의 인터페이스를 가지고 하나의 라우터는 여러 개의 인터페이스를 가짐
- 모든 호스트와 라우터는 IP 데이터 그램을 송수신 가능
ㄴ=> IP는 각 호스트와 라우터 인터페이스가 IP 주소를 갖도록 요구
- 따라서 기술 면에서 IP 주소 : 인터페이스를 포함하는 호스트 라우터보다는 인터페이스와 관련이 있음
- IP 주소
- 길이 : 32비트 (4바이트)
- 2^32개(대략 40억개)의 주소 사용 가능
- 일반적으로
십진 표기법 사용
: 주소의 각 바이트를 십진수로 표현하고 주소의 다른 바이트와 점(.)으로 구분
- ex) 십진 표기법 : 193.32.216.9 -> 이진수 : 11000001 00100000 11011000 00001001
- 모든 호스트와 라우터의 각 인터페이스는 고유한 IP 주소를 가짐
- 마음대로 주소 선택 불가
- 인터페이스의 IP 주소 일부는 연결된
서브넷
이 결정
- 그림 4.18 IP 주소체계와 인터페이스의 예
- 왼쪽 3개의 호스트와 연결된 라우터 인터페이스는 모두 233.1.1.xxx 형식의 IP 주소를 가짐
- = 동일한 왼쪽 24비트 사용
- 4개의 인터페이스가 만나는 지점에 라우터 없이 하나의 네트워크에 서로 연결됨
- ㄴ 이더넷 LAN으로 상호연결되고 이 경우 인터페이스는 이더넷 허브나 이더넷 스위치, 무선 AP로 상호 연결됨 =
서브넷
서브넷
: IP 용어, 그림에서 세 호스트들의 인터페이스들과 하나의 라우터 인터페이스로 연결된 네트워크
- 서브넷 = IP 네트워크 = 네트워크
- 그림에서 왼쪽 서브넷에 IP주소체계가 223.1.1.0/24라는 주소를 할당한다.
- /24 부분은
서브넷 마스크
라고함
- 32비트 주소의 왼쪽 24비트가 서브넷 주소라는 것을 가리킴
- 그림 4.18에는 2개의 서브넷(223.1.2.0/24, 223.1.3.0/24)가 있음
![](https://velog.velcdn.com/images/yujeongkwon/post/9048617d-2730-4325-8584-61dde47f1ff3/image.png)
![](https://velog.velcdn.com/images/yujeongkwon/post/8341eb4b-80aa-4415-be10-d8573b508671/image.png)
그림 4.20
- 각 라우터는 3개의 인터페이스를 가짐
- IP 서브넷 : 223.1.1.0/24, 223.1.2.0/24, 223.1.3.0/24
+ 라우터 R1,R2를 연결하는 인터페이스용으로 223.1.9.0/24 서브넷,
+ 라우터 R2, R3을 언결하는 인터페이스용으로 223.1.8.0/24 서브넷,
- 라우터 R3, R1을 연결하는 인터페이스용으로 223.1.7.0/24 서브넷
- 서브넷을 결정하려면 먼저 호스트나 라우터에서 각 인터페이스를 분리하고 고립된 네트워크를 만든다. 이 고립된 네트워크의 종단점은 인터페이스의 끝이 된다. 이렇게 고립된 네트워크 각각을 서브넷이라고 부른다. = 그림에서 흐리멍청하게 보이는 구름모양
- 위의 말을 적용하면 6개의 서브넷을 가짐
![](https://velog.velcdn.com/images/yujeongkwon/post/1ddd5e7c-1084-4a2e-9c93-7c7bfd79b891/image.png)
- 다수의 이더넷 세그먼트와 종단 간의 링크를 갖는 기관(회사나 학교) : 한 서브넷에서 모든 장비가 같은 서브넷 주소를 갖는 그런 서브넷을 여러 개 가질 수 있음
- 원칙대로라면 서로 다른 서브넷은 다른 서브넷 주소를 가져야 하지만,실제로 서브넷 주소는 종종 같은 부분이 많음 -> 그이유 ㄱ
CIDR
(CIassless InterDomain Routing, 사이다(cider)
- 인터넷 주소 할당 방식
- 서브넷 주소체계 표기를 일반화
- 서브넷 주소체계로서, 32비트 IP 주소는 두 부분으로 나누고,이것은 다시 점으로 된 십진수 형태의 a.b.c.d/x를 가짐
- 주소의(네트워크)
프리픽스(prefix)
: a.b.c.d/x 형식 주소에서 최상위 비트(most significant bit, MSB)를 의미하는 x, 이 x는 IP 주소의 네트워크 부분을 구성
- 한 기관은 통상 연속적인(공통 프리픽스를 갖는 주소 범위) 주소의 블록을 할당받음
- 이 경우에 기관 장비들의 IP 주소는 공통 프리픽스를 공유
- 외부 기관의 라우터는 다른 기관 내부의 목적지 주소로 데이터그램을 전달할 때, 단지 앞의 x비트들만 고려
- a.b.c.d/x 형태의 한 엔트리만으로 기관 목적지로 패킷을 전달하는 데 충분하므로, 이런 라우터들에서 포워딩 테이블의 크기를 상당히 줄여줌
- 주소의 나머지 32-x 비트들
- 기관 내부에 같은 네트워크 프리픽스를 갖는 모든 장비를 구별
- = 기관 내부의 라우터에서 패킷을 전달할 때 사용
- 이 하위 비트들은 앞서 언급한 것처럼 추가 서브넷 구조를 가질 수도 있음
- ex) CIDR식 주소 a.b.c.d/21 의 첫 21 비트들은 기관의 네트워크 프리픽스
- a.b.c.d/24는 기관 내부의 특정 서브넷으로 나타냄 = 최하위 11비트 일부를 내부 서브넷으로
클래스 주소체계
- CIDR가 채택되기 전, IP 주소의 네트워크 부분을 8, 16, 24비트로 제한
- 8,16,24비트 서브넷 주소를 갖는 서브넷을 각각 A, B, C 클래스 네트워크로 분류
- 단점
- A 클래스(/24) 서브넷 : 2^8 — 2 = 254개(예약 2개 빼고)의 호스트 제공
- B 클래스(/16) 서브넷 : 반면에 65,634개의 호스트를 제공
- ㄴ=> 클래스간 갭차이 졸라큼 -> 사용하기 어렵 2000개 호스트 가진 회사는 B 줌 = 6만개 넘개 낭비
- 브로드캐스트 주소
- IP 주소의 또 다른 형태, 255.255.255.255
- 호스트가 목적지 주소가 255.255.255.255인 데이터그램을 보내면, 이 메시지는 같은 서브넷에 있는 모든 호스트에게 전달
- 마찬가지로 라우터는 선택적으로 이웃 서브넷에 메시지를 전달
- 일반적으로 잘 사용되지는 않음
주소 블록 획득
- 네트워크 관리자가 기관의 서브넷에서 사용하기 위한 IP 주소 블록을 얻는 방법 1
: 먼저 이미 할당받은 주소의 큰 블록에서 주소를 제공하는 ISP와 접촉
- ex) ISP는 주소 블록 200.23.16.0/20을 할당받았다고 가정
- ISP는 이 주소 블록을 다음처럼 같은 크기의 작은 주소 블록 8개로 나누고,이것으로 8개 조직을 지원가능
![](https://velog.velcdn.com/images/yujeongkwon/post/a17f8ea4-ebfb-42c0-99bf-05bba5b9bbb9/image.png)
- 네트워크 관리자가 기관의 서브넷에서 사용하기 위한 IP 주소 블록을 얻는 방법 2
: 최상위 국제기관
- IP 주소 공간을 관리하고 ISP와 다른 조직에 주소 블록을 할당하는 최상위 국제기관인 비영리 단체 ICANN : IP 주소 할당과 DNS 루트 서버 관리
- 도메인 이름을 합당하고 도메인 이름 분쟁을 해결
호스트 주소 획득: 동적 호스트 구성 프로토콜
-
한 기관은 ISP로부터 주소 블록을 획득하여, 개별 IP 주소를 기관 내부의 호스트와 라우
터 인터페이스에 할당
- 라우터 인터페이스 주소에 대해,시스템 관리자는 라우터 안에 IP 주소를 할당
- 종종 네트워크 관리 도구를 사용해서 원격으로 수행
- 호스트에 IP 주소를 할당하는 것은 수동으로 구성이 가능하지만 일반적으로
동적 호스트 구성 프로토콜(DHCP)
을 더 많이 사용
-
DHCP
: 호스트가 (배정되는) IP 주소를 자동으로 얻도록 함.
- 네트워크 관리자는 해당 호스트가 네트워크에 접속하고자 할 때마다 동일한 IP 주소를 받도록 하거나,다른 임시 IP 주소를 할당하도록 DHCP를 설정
- 호스트 IP 주소의 할당뿐만 아니라,서브넷 마스크,첫 번째 홉 라우터(=디폴트 게이트웨이) 주소, 로컬 DNS 서버 주소 같은 추가 정보를 얻게 해줌
플러그 앤 플레이 프로토콜
또는 제로 구성 프로토콜로
도 불림
- DHCP 능력 덕
- 작업을 수동으로 수행하는 네트워크 관리자에게 매우 유익
- 많은 사용자가 이동하고, 주소들이 제한된 시간 동안에만 필요할 경우 DHCP 굿굿
클라이언트-서버 프로토콜
- 클라이언트는 일반적으로 IP 주소를 포함하며 네트워크 설정을 위한 정보를 얻고자 새롭게 도착한 호스트다.
- 가장 간단한 경우, 각 서브넷은 DHCP 서버를 가질 것
- 만약 서버가 현재 서브넷에 없다면, DHCP 연결 에이전트(일반적으로 라우터)가 필요
- DHCP 연결 에이전트(일반적으로 라우터): 해당 네트워크에 대한 DHCP 서버 주소를 알려줌
-
그림 4.23 : 223.1.2/24에 연결된 DHCP 서버, 서브넷 223.1.1/24, 223.1.3/24에 접속될 클라이언트가 도착할 경우, 연결 에이전트로 서비스할 라우터를 보여줌
![](https://velog.velcdn.com/images/yujeongkwon/post/dfd1e509-9b19-4bca-afd1-79412fffccee/image.png)
-
그림 4.24 : 새로운 호스트가 도착할 경우,그림 4.23에서 설정된 네트워크상에서 수
행될 DHCP 프로토콜 4단계의 과정을 보여줌
- 이 그림에서 yiaddr(your Internet address)은 새롭게 도착한 클라이언트에 할당될 주소를 나타냄.
- DHCP 서버 발견 : 먼저 새롭게 도착한 호스트는 상호작용할 DHCP를 발견
- DHCP 발견 메시지를 사용하여 수행됨
- 클라이언트는 포트 67번으로 UDP 패킷을 보냄
-> UDP 패킷은 IP 데이터그램으로 캡슐화
이때, 호스트는 자신이 접속될 네트워크의 IP 주소, 해당 네트워크의 DHCP 서버 주소 모름
-> DHCP 클라이언트는 DHCP 발견 메시지를 포함하는 IP 데이터그램을 생성
- 목적지 IP 주소를 브로드캐스트 IP 주소인 255.255.255.255로 설정 + 출발지 IP 주소는 0.0.0.0으로 설정
- ㄴ=DHCP 클라이언트는 링크 계층으로 IP 데이터그램을 보내며 이 프레임은 서브넷에 연결된 모든 노드로 브로드캐스트됨
- DHCP 서버 제공 : DHCP 발견 메시지를 받은 DHCP 서버는 DHCP 제공 메시지를 클라이언트로 응답
- 이때에도 다시 IP 브로드캐스트 주소 255.255.255.255를 사용하여 서브넷의 모든 노드로 이 메시지를 브로드캐스트
- 서브넷에는 여러 DHCP 서버가 존재
- ㄴ-> 클라이언트는 가장 최적의 위치에 있는 DHCP 서버 선택
- 각각의 서버 제공 메시지는 수신된 발견 메시지의 트랜잭션 ID,클라이언트에 제공된 IP 주소,네트워크 마스크,IP주소 임대 기간(IP 주소가 유효한 시간)을 포함
- 서버를 위해 설정하는 임대 시간은 일반적으로 몇 시간 또는 며칠
- DHCP 요청 : 새롭게 도착한 클라이언트는 하나 이상의 서버 제공자 중에서 선택 -> 선택된 제공자에게 파라미터 설정으로 되돌아오는 DHCP 요청 메시지로 응답
- DHCP ACK: 서버는 DHCP 요청 메시지에 대해 요청된 파라미터를 확인하는 DHCP ACK 메시지로 응답
-
클라이언트가 DHCP ACK 메시지를 받으면, 상호작용은 종료되고 클라이 언트는 DHCP 할당 IP 주소를 임대 기간 동안 사용 가능
- 클라이언트의 지속사용을 위해, DHCP는 IP 주소 임대 갱신 제공
-
이동성 측면에서 DHCP의 큰 결점 : 원격 애플리케이션에 대한 TCP 연결은 유지X
💫4.3.3 네트워크 주소 변환(NAT)
- SOHO(small office, home office) 네트워크의 확산
- ㄴ-> 모든 SOHO의 IP 장치를 수용할 수 있는 주소 범위를 할당해야함
- but 이미 ISP가 SOHO 네트워크의 해당 주소 범위에 인접한 부분을 할당해버렸다면?
- 특정 홈 네트워크 소유자가 IP 주소가 어떻게 관리되는지 알고자 한다면?
- ㄴ
네트워크 주소 변환
(network address translation, NAT)으로 주소 할당 가능
- : IP 패킷에 적힌 소켓 주소의 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술
- NAT 가능 라우터는 그림 4.25의 오른쪽처럼 홈 네트워크의 일부인 인터페이스를 가짐
사설 주소를 갖는 권역
: 네트워크 주소들이 그 네트워크의 내부에 있는 장비에게만 의미있는 네트워크
- 4.25 그림에서 홈 네트워크의 4개 인터페이스 모두 같은 네트워크 주소 10.0.0.0/24를 가짐
- 주소 공간 10.0.0.0/8은 사설망 또는 홈 네트워크와 같은 사설 개인 주소를 갖는 권역을 위해 예약된 IP 주소 공간(클래스 A,B,C) 세 부분 중의 하나
/8 만큼 공간이 홈네트워크에 할당되면 존내 마누니까 우리집 홈네트어크는 /24까지만 IP가짐. 남은 /8 IP공간은 다른 사람들이랑 나눠가짐 = IP 효율적으로 나누기위해
홈네트워크가 글로벌로 나가면 충돌될 수 있으니까 (코드 지역변수를 전역변수로 바꾸면 난리나는거처럼) NAT 라우터를 거쳐서
NAT의 중요성
- 많은 홈 네트워크가 같은 주소 공간 10.0.0.0/24를 사용하고 있다고 가정
- 주어진 홈 네트워크 내부 장비는 10.0.0.0/24 주소체계로 서로 패킷 송신 가능
- but 홈 네트워크를 벗어나 글로벌 인터넷으로 가는 패킷 전달은 이 주소들을 사용X
- = 네트워크 주소들이 그 네트워크의 내부에 있는 장비에게만 의미있는 사설 주소를 갖는 권역
- 위 때문에 글로벌 인터넷과의 송수신에서 NAT는 중요
NAT 가능 라우터에서 글로벌 인터넷과의 송수신
- NAT 가능 라우터는 외부 세계에서는 라우터처럼 보이지 않고, 하나의 IP 주소를 갖는 하나의 장비로 동작
- 그림 4.25에서 홈 라우터 <-> 인터넷으로 가는 트래픽의 출발지/목적지 IP 주소는 138.76.29.7을 가져야 함.
- NAT 가능 라우터는 외부에서 들어오는 홈 네트워크의 상세 사항을 숨김.
DHCP
(Dynamic Host Configuration Protocol)
- 라우터는 ISP의 DHCP 서버로부터 주소를 얻고, NAT-DHCP-라우터로 제어되는 홈 네트워크의 주소 공간에서 DHCP 서버를 실행하여 컴퓨터에게 주소를 제공
NAT 변환 테이블
: NAT 라우터에서 WAN에서 NAT 라우터에 데이터그램들이 도착했을 때,NAT 변환 테이블에서 IP 주소와 포트 번호를 찾아 내부 호스트에 전달.
그림 4.25 예시
- 홈 네트워크(호스트 10.0.0.1)가 웹 서버(128.119.40.186, 포트 80)에게 웹 페이지를 요청 가정
- 호스트 10.0.0.1 -> NAT : 임의의 출발지 포트 번호 3345를 할당하고 LAN에 데이터그램을 전송
- NAT 라우터 데이터그램 수신
- 데이터그램에 대한 새로운 출발지 포트 번호 5001을 생성
- WAN 쪽 IP 주소 138.76.29.7과 출발지 IP 주소를 변경
- 새 출발지 포트 번호 5001과 원래 출발지 포트 번호 3345를 변경
- 새 출발지 포트 번호를 생성할 때,NAT 라우터는 NAT 변환 테이블에는 없는 모든 출발지 포트 번호를 선택 가능
- 라우터 내부의 NAT에는 NAT변환 테이블의 엔트리도 추가
- NAT 라우터 -> 웹서버 : NAT 라우터에 의해 처리된 HTTP 요청이 들어있는 데이터그램 전달
- 웹서버 데이터그램 수신 : 수정된 데이터그램 의식X
- 웹서버 -> NAT 라우터 : NAT 라우터의 IP 주소인 목적지 주소와 5001인 목적지 포트 번호에 대해 응답
- NAT 라우터 응답 수신
- 홈 네트워크 브라우저(10.0.0.1, 포트3345)로부터 얻은 목적지(웹서버) IP 주소/포트 번호를 사용해서 NAT 변환 테이블 작성
- 데이터그램의 목적지 주소와 포트 번호를 다시 기록
- NAT 라우터 -> 홈 네트워크 내부 : 데이터그램 전달
![](https://velog.velcdn.com/images/yujeongkwon/post/51d98c9e-8b00-4d4b-8ac7-dcf6986b423f/image.png)
넓게 쓰이는 NAT의 반대 주장
- 포트 번호가 호스트 주소 지정이 아닌 프로세스 주소 지정에 사용된다
- 서버 프로세스는 잘 알려진 포트 번호에서 요청이 올 때까지 기다리고
P2P 프로토콜의 피어는 서버로서의 역할을 할 때
들어오는 연결을 수락해야 하기 때문에 홈 네트워크에서 실행되는 서버에 문제 발생
- NAT 순회(traversal)도구 : 한 피어가 NAT 서버 뒤에 있고 DHCP 제공 NAT 주소가 있는 다른 피어에 연결하기 위한 기술
- 구성 순수주의자들의 ‘철학적’ 논쟁
- 라우터는 네트워크 계층 장치를 의미하며 네트워크 계층까지만 패킷을 처리해야 한다
- but NAT는 IP 주소를 수정하는 노드를 간섭하지 않고, 포트 수보다 월씬 적은 수의 호스트가 서로 직접 소통해야 한다는 원칙을 위반
🌐 4.3.4 IPv6
- 32 비트 IPv4 주소공간이 빠른 속도로 고갈됨에 따라 큰 IP주소 공간인 IPv6 개발
IPv6 데이터그램 포맷
- IPv6 데이터그램의 구조가 더 간결하고 간소화되었음 -> IPv4에 있지만 IPv6에는 더 이상 존재하지 않는 필드가 있음
IPv4과 IPv6에서 달라진점
- 확장된 주소 기능
- ip 주소 크기를 32비트 -> 128비트로 확장 : 고갈 걱정 x
- 유니캐스트,멀티캐스트 주소 + 새로운 주소 형태인 애니캐스트 주소 도입
- 애니캐스트 주소로 명시된 데이터그램은 호스트 그룹의 어떤 이에게든 전달될 수 O
- 간소화된 40바이트 헤더
- IPv4의 많은 필드가 생략되거나 옵션으로 남겨짐
- 라우터는 40바이트 고정 길이 헤더에서 IP 데이터그램을 더 빨리 처리함
- 새로운 옵션 인코딩은 유연한 옵션 처리를 가능하게 함
- 흐름 레이블링
- IPv6는 정의하기 어려운 흐름을 가짐
- ㄴ "비 디폴트 품질 서비스나 실시간 서비스 같은 특별한 처리를 요청하는 송신자에 대해 특정 흐름에 속하는 패킷 레이블링”을 가능하게 함
- ex) 오디오/비디오 전송은 흐름으로 처리된다. 반면에,파일 전송이나 전자메일 같은 예전의 애플리케이션은 흐름으로 처리되지 않는다. 높은 사용자 우선순위를 가지고 전달
된 트래픽 또한 흐름처럼 처리될 수 있다.
포멧
- 버전 : 4비트 필드로 IP 버전 번호를 인식
- IPv6의 이 필드값은 ‘6’
- 단순히 이 필드를 ‘4’로 설정한다고 IPv4 데이터그램을 만들 수 있는 것은 아님
- 트래픽 클래스 : 8비트 필드로 데이터그램에 우선순위를 부여하는 데 사용된다.
- 흐름 내의 SMTP 이메일 같은 애플리케이션의 데이터그램 < VoIP 같은 특정 애플리케이션의 데이터 그램
- IPv4의 TOS 필드와 비슷한 의미
- 흐름 레이블 : 20비트 필드로 데이터그램의 흐름 인식
- 페이로드 길이 : 16 비트 필드로 IPv6 데이터그램에서 고정 길이 40바이트 패킷 헤더 뒤에 나오는 바이트 길이
- 부호 없는 정수(unsigned integer)
- 다음 헤더 : 데이터그램의 내용이 전달될 프로토콜(TCP or UDP)를 구분
- 홉 제한: 라우터가 데이터그램을 전달할 때마다 1 씩 감소
- 홉제한 수가 0보다 작아지면 라우터는 데이터그램을 버림
- 출발지와 목적지 주소: IPv6 128비트 주소의 다양한 형태는 RFC 4291에 있음
- 데이터: IPv6 데이터그램의 페이로드 부분
- 데이터그램이 목적지에 도착하면 Ip데이터그램에서 페이로드를 제거한 후, 다음 헤더 필드에 명시한 프로토콜에 전달
![](https://velog.velcdn.com/images/yujeongkwon/post/173d166b-1551-440a-8678-e62656d308f8/image.png)
IPv4엔 있지만 IPv6엔 없어진 필드
- 단편화/재결합
- IPv6에서는 단편화와 재결합을 출발지와 목적지만이 수행
- 라우터가 받은 IPv6 데이터그램이 너무 커서 출력 링크로 전달할 수 없다면
- 라우터는 데이터그램을 폐기
-> '패킷이 너무 크다’라는 ICMP 오류 메시지를 송신자에게 전송
-> 송신자는 데이터를 IP 데이터그램 크기를 줄여서 재전송
- 단편화와 재결합은 시간 걸림 -> 라우터에서 이 기능 삭제 -> 종단 시스템이 진행
=> 네트워크에서 IP 전달 속도가 증가
- 헤더 체크섬
- 트랜스포트 계층 프로토콜(ex TCP나 UDP)과 데이터 링크 프로토콜(ex 이더넷)은 체크섬 수행 -> 체크섬 기능이 반복 -> 생략
- ㄴ= IP 패킷의 빠른 처리 집중
- IPv4 헤더는 TTL 필드(IPv6의 홉 제한 필드와 유사함)를 포함하며 IPv4 헤더 체크섬을 모든 라우터마다 수행
- 옵션
- 완전히 사라진 것X, IPv6 헤더에서 ‘다음 헤더’ 중 하나가 될 수 있음.
- TCP나 UDP 프로토콜 헤더가 IP 패킷에서 다음 헤더가 될 수 있는 것처럼
- 덕분에 IPv6은 고정 길이의 40바이트 IP 헤더를 가짐
IPv4에서 IPv6로의 전환
- IPv4 데이터그램을 보내고 라우팅하며 받을 수 있는 새 IPv6 시스템이 있는 반면,
이미 IPv4로 구축된 시스템은 IPv6 데이터그램을 처리한 수 없음
해결안
- 플래그 데이(flag day)선언
- : 모든 인터넷 장비를 끄고IPv4에서 IPv6로 업그레이드하는 시간과 날짜를 정하는 것
- ㅈㄹ 말도 안됨 ㅋㅋ
터널링(tunneling)
- 터널(tunnel) : 두 IPv6 사이에 있는 IPv4 라우터들
- 대충 IPv6 데이터그램이 터널을 통과하러면 IPv6을 IPv4 데이터 필드(페이로드)에 넣어 IPv4인척 전송
터널링 동작 과정
- 두 IPv6 노드(ex B와 E)가 IPv6 데이터그램을 사용해서 작동한다고 가정
- 터널의 송신 측에 있는 IPv6 노드(ex B): IPv6 데이터그램을 수신
- IPv4 데이터그램의 데이터 필드에 데이터그램을 넣음
- IPv4 데이터그램에 목적지 주소를 터널의 수신 측에 IPv6 노드(ex E)로 작성
- IPv6 노드(ex B) -> 터널의 첫 번째 노드(ex C(IPv4))로 전송
- 터널 내부에 있는 IPv4 라우터는 IPv4 데이터그램이 IPv6 데이터그램을 갖고 있다는 사실을 모름
- 터널 내부에 있는 IPv4 라우터는 평소대로 IPv4 데이터그램을 처리
- 터널 수신 측에 있는 IPv6 노드 : IPv4 데이터그램 수신
- IPv4 데이터그램이 실제 IPv6 데이터그램임을 결정
- ㄴ IPv4 데이터그램 프로토콜 번호 필드가 41임을 보면 IPv4페이로드는 IPv6 데이터그램임을 나타냄
- 이 노드는 IPv6 데이터그램으로 만든 다음에 IPv6 데이터그램을 IPv6 노드에 전송
![](https://velog.velcdn.com/images/yujeongkwon/post/5243f18a-df25-4acd-88cb-187467419483/image.png)
- 암튼 네트워크 계층 프로토콜을 바꾼다는 것은 매우 어려움
- ㄴ= 미래에는 인터넷의 네트워크 계층에 변화가 있겠지만 이러한 변화가 애플리케이션
계층보다는 훨씬 느린 속도로 일어날 것