컴퓨터 네트워크 #13
목차
- IPv4 와 IPv6
- 인터넷 라우팅 프로토콜 (책. pg 627)
IPv4
IPv4 와 IPv6 는 둘 다 인터넷 프로토콜이다.
현대에는 IPv6로 점점 바뀌고 있는 추세이며, 아마 몇 년 뒤에는 IPv6로 대부분 대체 될 것이다.
IPv4 와 IPv6 의 IP서비스, 프로토콜, IP 주소형식 및 헤더, ICMP 에 대해 서술한다.
IP 서비스
상위계층과의 IP가 제공하는 서비스에 대한 내용이다.
IP는 상위계층과의 인터페이스로 2개의 원시함수와 매개변수를 이용한다.
원시함수는 Send 와 Deliver 이며 각각 데이터 전송을 요구할 때와 데이터 도착을 사용자에게 알리기 위해 사용된다.
매개변수는 발신지/목적지 주소, 식별자, 단편화 금지 식별자, 수명, 데이터 길이, 데이터 등이 있다.
매개변수 항목은 중요한 내용이 아니기 때문에 생략한다.
IPv4 구조
- Version(4비트) : 프로토콜의 진화가 가능하도록 버전을 나타내는 곳, 값은 4이다.
- IHL(4비트): 인터넷 헤더 길이라는 뜻이다.
- DS(6비트) : 차등 서비스 기능
- ECN(2비트) :
명시적 혼잡 알림의 기능을 한다. 비트 별로 다음과 같은 역할을 한다. - Total Length(16비트) : 헤더와 데이터를 포함한 전체 데이터 그램의 길이를 표시
- Identification(식별자-16비트) : 주소 및 사용자 프로토콜과의 조합으로 데이터그램의 식별 기능을 한다.
- Flags(3비트) : 1은 계속비트, 0은 단편화 금지비트이다. 0일 경우에는 패킷의 단편화를 진행할 수 없다.
- Fragment offset : 단편화 된 패킷의
위치를 알려준다. - Time to live(TTL) : 데이터그램의
수명을 나타낸다. - 프로토콜 (8비트) : 목적지에서 데이터를 받을 장소(상위계층 프로토콜)를 나타낸다.
TCP는 6,UDP는 17,ICMP는 1이다. - Header checksum (16비트) : 헤더에만 작용하는
오류검출 코드이다. 때에 따라 헤더 필드는 전송 도중에 변경되기도 하기 때문에, 각 라우터에서는헤더 체크섬을 보고 다시 검증한다. - Source address(32비트) : 발신지 주소
- Destination address(32비트) : 목적지 주소
- Option(선택사항) : 발신자가 요구하는 선택사항
- Padding : 데이터그램 헤더의 길이가 32비트의 배수가 되도록 메워넣는 기능
한 줄에 32비트씩 총 192비트이다.
ECN 비트
00 : 패킷이 ECN을 사용하지 않음
01,10 : 종단 점의 전송 프로토콜이 ECN 임을 표기
11 : 정체가 발생되었다는 의미IP주소
IP 헤더의 발신지와 목적지 주소를 의미한다.
이 주소는 일반적으로 32비트 전역 인터넷 주소를 가지고 있다.
네트워크 클래스는 네트워크 크기에 따라 이 32비트를 분류해놓은 것을 말한다.
클래스 A,B,C 가 주로 사용되는 네트워크 클래스이다.
A는 네트워크 당 호스트 수가 많은 경우이고, C는 네트워크 당 호스트 수가 적은 경우이다.
예를 들자면 A는 네트워크 주소의 개수가 $2^7$ 개 이고
(실제로는 0과 127은 다른용도로 예약되어 있어 126개의 네트워크를 가진다)한 네트워크마다 호스트가 $2^{24}$ 존재한다.호스트는
개인PC라고 이해하면 편하다.IP 주소는 일반적으로 32비트를 8비트 씩 네개로 쪼개서 10진수로 표현하며, 8비트 마다 점을 찍어준다.
예시는 다음과 같다.
클래스 ABC를 보면 첫번째 주소의 1,2,3번째 자리들이 정해져있는 것을 볼 수 있다.
- 클래스 A의 경우 첫번째 주소의 범위는 00000000 ~ 01111111 까지 이므로 0~127 이다.
- 클래스 B의 경우 첫번째 주소의 범위는 10- ~ 101- 이므로
128~191이다. - 클래스 C의 경우 110- ~ 1101- 이므로
192~223이다.
서브넷 마스크
3번의 내용에서 IP주소가 네트워크 주소와 호스트 주소로 나뉘어져 있는 것을 보았다.
실제로 어떤 큰 기관에서 클래스 C를 사용한다고 하자.
기관이 하나 이상의 WAN 과 많은 LAN을 가지고 있다면 굉장히 복잡한 경로배정을 가질 것이다.
이것을 막는 방법이
서브넷 마스크이다.서브(하위) 네트워크를 만들고 각 LAN 에 서브넷 번호를 부여함으로써, IP주소를
네트워크 주소+호스트 주소(서브넷 번호 + 호스트 번호) 로 다시 나누는 것이다.쉽게 말하자면, 클래스C 의 경우 $2^{21}$ 개의 네트워크가 존재한다.
이 중 한개의 네트워크를 선택해서, 그 네트워크를 다시 세분화하는 과정이다.
아래는 그 예시이다.
위 그림을 보자.
서브넷 마스크에서 1이 총
27개임을 알 수 있다.이는 IP 주소의 앞에서 부터 27자리까지는 네트워크 주소라는 의미이다.
그리고 뒤의 5자리는 호스트 주소가 된다.
호스트의 수는 총
00000~11111까지32개가 된다. (사용할 수 있는 호스트 수는 30개이다. 2개는 할당된 용도가 있다.)위 그림에서는
11001이므로 호스트의 주소는 25가 된다.그렇다면 서브넷 넘버는 어떻게 될까?
앞에
255.255.255는 원래 네트워크 주소이다.서브넷 마스크가 27자리까지 있으니, 뒤에 8비트 중에 3비트가 서브넷 번호 결정하게 된다.
따라서 서브넷은
000 ~111까지 총 8개가 존재한다.위의 경우 001 이므로 서브넷 넘버가 1이 된다.
이러한 서브 네트워크는 네트워크 경로배정을 더 효율적이게 만들어 준다.
인터넷 제어 메시지 프로토콜(ICMP : Internet Control Message Protocol)
ICMP 는 IP와 쌍으로 동작하는 프로토콜이다.
ICMP는 IP의 문제를 체크해주는 기능을 가지고 있다.
예를 들면, 데이터그램이 목적지에 도달하지 못하거나, 전달 시 버퍼의 부족 등이 있다.
ICMP는 IP를 통제하는 상위계층 처럼 보이지만 IP 계층의 일부이다.
실제로 ICMP 메시지를 만든 후 IP로 전하면, IP 헤더로 캡슐화한 후 전송되기 때문에 IP 데이터그램에 포함되어 전송되는 것이다.
따라서 IP와 같이 비신뢰성이다.
ICMP 의 구조는 다음과 같다.
- 유형(Type - 8bit) : ICMP 메세지의 유형
- 코드(Code-8bit) : 메시지의
매개변수를 규정하기 위해 사용 - 체크섬(Check-sum-16bit) : ICMP 메시지 전체의
체크섬, IP의 체크섬과 같은 알고리즘을 사용한다 - 매개변수(Parameter-32bit) : 좀 더 긴 매개변수를 규정
ICMP 메시지 형식
목적지 도달 불가 메시지(a)
여러 이유로 라우터가 메시지를 목적지 네트워크로 어떻게 보내야 될지 모를 때 이 메시지를 돌려준다.
매개변수 문제 메시지(b)
라우터나 호스트가 구문적,의미적 오류가 발생했을 때 전송
경로 재지정 메시지(c)
라우터가 자신이 직접 연결된 네트워크의 호스트에게 특정 목적지로 더 나은 경로를 알려주기 위해 보낸다.
메아리(응답) 메시지(d)
통신 가능성을 시험하는 메시지
타임스탬프, 타임스탬프 응답 메시지(e,f)
인터넷 지연 특성을 조사하는 메시지
주소 마스크 요청/응답 메시지(g,h)
호스트가 자신의 서브넷 정보를 확인하는 메시지
주소 해결 프로토콜(ARP : Address Resolution Protocol)
4번의 서브넷 마스크에 내용에 따르면, IP 데이터그램을 목적지로 전송하기 위해서는 마지막 홉(=위치) 에서는 IP주소에서 서브 네트워크 주소으로 연결(매핑)이 이루어져야 할 것이다.
LAN 에서는 서브네트워크 주소를 MAC이라고 한다.
이 역할을 하는 것이 ARP고 아래 내용은 ARP의 예시이다.
- LAN의 모든 시스템은 알려진
IP-서브 네트워크주소의 변환표를 유지 - 호스트 A가 특정 IP주소에 대한 서브네트워크 주소가 표에 없으면 LAN 프로토콜을 이용해 서브 네트워크 주소를 요청하는
ARP메시지를 호스트 B,C,D에브로드캐스트
→ 내가 어떤 서브네트워크 주소가 표에 없다. → 나와 네트워크로 연결된 모든 호스트에게
너희의 서브 네트워크 주소를 나에게 보내라라는 메시지를 발송브로드캐스트
발신자가 전송한 메시지가 연결된 네트워크의 모든 사용자(호스트)에게 전달되게 하는 전송 방식B,C,D,가 ARP 메시지 수신 후, 자신을 부른다 라는 것이 확인되면 응답.
응답 메시지는 응답하는 호스트의 IP/서브네트워크 주소를 모두 포함한다.
이 때 응답하는 호스트를 제외한 나머지(ex. B가 응답했을때, 수신 대상이 아니었던 C,D 를 말한다.) 또한 A에 대한 IP-서브네트워크 주소 관계를 자신의 변환표에 업데이트 할 수 있다.
- LAN의 모든 시스템은 알려진




