24-06-24 네트워크 Internet Protocol
오늘은 본격적으로 스프링 개인 과제를 시작했다. 여태까지 배웠던 모든 것들을 종합하면서 부가적으로 기능을 더해보는 과제이기 때문에 전체적인 복습과 더불어 심화된 부분까지 해볼 수 있기 때문에 의미있는 시간이 될 것 같다. 오늘은 전체적인 뼈대를 완성하는 작업을 했다. 내일부터는 진도를 빠르게 나갈 수 있을 것 같다.
여기에는 오늘 추가적으로 공부해보았던 네트워크 관련 지식을 정리해본다.
1. 네트워크 Internet Protocol
오늘 공부했던 네트워크 계층 관련해서 공부를 해보았는데 그 중에서도 IP 관련해서 공부한 내용을 간단히 정리해보았다.
- IP(Internet Protocol)
네트워크 계층의 가장 핵심적인 프로토콜이다. IPv4와 IPv6 두 가지 버전이 존재한다.
먼저 IPv4 부터 정리해보았다.
IP 주소의 형태
예시: 192 . 168 . 0 . 0
IPv4의 경우 IP 주소는 4바이트(32비트)로 주소를 표현할 수 있다. 0~255 범위 안에 있는 4 개의 십진수로 표기되며 이 8비트의 십진수를 옥텟이라고 한다. 각 십진수는 마침표(.)로 구분된다.
IP의 기본 기능
IP의 기본 기능은 주소 지정과 단편화 이다.
주소 지정은 IP 주소를 바탕으로 송수신 대상을 지정하는 것을 말한다.
IP 단편화는 전송하고자하는 패킷의 크기가 MTU보다 클 경우, MTU 크기 이하의 패킷 여러개로 나누는 것을 말한다.
MTU(Maximum Transmission Unit)란 한 번에 전송 가능한 IP 패킷의 최대 크기를 의미하며, 일반적인 MTU의 크기는 1500바이트이다. MTU 크기 이하로 나누어진 패킷은 수신지에 도착한 뒤에 재조합된다.
IPv4 패킷
IPv4 패킷은 아래 그림과 같은 형식을 띠고 있다.
이곳에서 가장 핵심이 되는 부분들에 대해 하나씩 정리해보았다.
식별자(Identifier, Identification)
식별자는 패킷에 할당된 번호이다. IPv4 패킷이 여러 조각으로 나누어 전송되었을 경우 수신지에서 이들을 재조합을 해야한다. 조각들이 같은 메시지로 부터 나누어진 것이라면 모두 같은 식별자를 가지고 있기 때문에 어떤 메시지로부터 나누어졌는지 인식할 수 있다.
플래그(Flag)
플래그는 총 3비트로 구성된 필드이다. 첫 번째 필드는 항상 0으로 예약된 비트이다. 나머지 두 개의 비트 중 하나는 DF(Don't Fragment)라고 부른다. IP 단편화를 수행하지 말라는 의미이다. 만약 이 비트가 1로 설정되어 있으면 IP 단편화를 수행하지 않고, 0으로 설정되어 있으면 IP 단편화가 가능하다. 마지막 비트는 MF(More Fragment)라는 비트로, 단편화된 패킷이 더 있는지 여부를 나타낸다. 0이라면 이 패킷이 마지막 패킷이라는 뜻이고, 1이면 나누어진 패킷이 아직 더 있다는 뜻이다.
단편화 오프셋(Fragment Offset)
단편화 오프셋은 패킷이 단편화되기 전 패킷의 초기 데이터에서 몇 번째로 떨어진 패킷인지를 나타낸다. 단편화되어 전송된 패킷들이 수신지에 순서대로 도착하지 않을 수 있기 때문에 패킷들을 순서대로 재조합하려면 단편화된 패킷이 몇 번째 데이터에 해당하는 패킷인지 알아야한다. 이 때문에 이 단편화 오프셋이 필요하다.
TTL(Time To Live)
TTL은 패킷의 수명을 의미한다. 패킷은 멀리 떨어진 호스트끼리 통신할 때 여러 라우터를 거쳐 이동할 수도 있다. 패킷은 하나의 라우터를 거칠때마다 TTL이 1씩 감소하고, 0이 된 패킷은 폐기된다.
패킷이 호스트나 라우터에 한 번 전달되는 것을 홉(Hop)이라고 한다. TTL 필드의 값은 홉마다 1씩 감소하게 된다. 네트워크 상에 지속적으로 무의미한 패킷이 남아있는 것을 방지하기 위해 TTL이 존재한다.
프로토콜(Protocol)
IP 패킷의 프로토콜은 상위 계층의 프로토콜이 무엇인지를 나타내는 필드이다. (예시: TCP는 6, UDP는 17)
송신지 IP 주소(Source IP Address), 수신지 IP 주소(Destination IP Address)
말그대로 송수신지의 IPv4 주소를 지정하는 필드이다.
여기부터는 IPv6에 대해 정리해보았다.
이론적으로 할당 가능한 IPv4 주소의 개수는 총 43억개 정도이다. 전 세계에서 사용하는 IP 주소의 개수로는 다소 부족하다고 할 수 있고 현재 할당되지 않은 IP주소는 고갈된 상태이다. 이러한 이유로 IPv6가 등장하게 되었다.
IP 주소의 형태
예시: 2001 : 0DC8 : E004 : 0001 : 0000 : 0000 : 0000 : F00A
IPv6는 16바이트(128비트)로 주소를 표현할 수 있다. 콜론(:)으로 구분된 8개의 16진수로 표현된다. 할당 가능한 IPv6 주소의 개수는 2의 128제곱개로 정말이지 말도 안되게 큰 수이기 때문에 고갈될 염려가 없다.
IPv6 패킷
IPv6 패킷은 아래와 같은 형태이다.(그림에는 데이터가 따로 표기되어 있지 않고 헤더만 있다.) IPv4에 비해 더 단순하고 간소화 되어있다.
다음 헤더(Next Header)
다음 헤더 필드는 상위 계층의 프로토콜을 가리키거나 확장 헤더를 가리킨다. 위의 그림에 표현된 헤더는 기본 헤더이다. IPv6는 추가적인 헤더 정보가 필요할 경우에는 기본 헤더와 더불어 확장 헤더라는 추가 헤더를 가질 수 있다.
확장 헤더는 기본 헤더와 데이터 사이에 위치한다. 또한 하나가 아니라 또 다른 확장 헤더를 가질 수도 있다.
이러한 확장 헤더에는 다양한 종류가 있다. 단편화를 위한 단편화 헤더, 송신지에서 수신지까지의 모든 경로의 네트워크 장비가 패킷을 검사하도록 하는 홉 간 옵션 헤더, 수신지에서만 패킷을 검사하도록 하는 수신지 옵션 헤더, 라우팅 관련 정보를 운반하는 라우팅 헤더, 암호화를 위한 ESP 헤더, 인증을 위한 AH 헤더 등이 있다.
홉 제한(Hop Limit)
홉 제한 필드는 IPv4의 TTL 필드와 비슷하게 패킷의 수명을 나타내는 필드이다.
송신지 IP 주소, 수신지 IP 주소
송신지 IP 주소와, 수신지 IP 주소를 통해 IPv6 주소 지정이 가능하다.
여기까지 IP에 대해서 간단하게 정리해보았다. 내일은 ARP와 NAT 같은 것과 더불어 IP 주소의 더 상세한 부분까지 잘 정리해볼 계획이다.
2. 오늘 배운 것
- IP에 대해 공부해보았다.
- 매일 루틴을 잘 지키는 것이 중요한 것 같다. 내일도 하루 계획했던 것을 모두 할 수 있도록 노력해봐야겠다.