[컴퓨터 네트워크] Internet Layer

서지혜·2023년 7월 27일
0

TIL

목록 보기
18/22

🧭 CS Study - 컴퓨터 네트워크

🚩 주제 : Internet Layer

📘 참고 서적 : TCP/IP 쉽게, 더 쉽게 - 리브로웍스

Internet Layer

인터넷 계층은 컴퓨터와 컴퓨터간 통신에 관여한다. IP 주소(IP Address)를 컴퓨터의 식별자로 사용하여 데이터를 전달하는 체계를 갖춘다.

인터넷 계층에서는 목적지에 데이터를 전송하기 위해 라우터(Router)라는 장비를 사용한다. 라우터는 네트워크와 네트워크를 연결하는 장치이다. 데이터 전송을 위해 네트워크의 경로를 찾고 다음 라우터에게 데이터를 넘겨주는 역할을 한다. 이러한 과정을 라우팅(Routing)이라고 한다.

프로토콜

인터넷 계층에서는 IPv4와 IPv6를 프로토콜로 사용한다.

IPv4

IPv4는 32bit으로 컴퓨터의 논리적 주소를 나타내는 프로토콜이다. 표기할 때는 32bit을 8개씩 나누어 4개의 10진수로 변환한다. 예를 들면 192.168.0.0과 같이 4개의 10진수로 값으로 표현하는 것이다. IPv4의 헤더에는 아래와 같이 송신지와 수신지의 IP 주소 등의 정보를 저장한다.

http://www.ktword.co.kr/test/view/view.php?m_temp1=1859

TTL
IP 패킷이 일정 시간안에 목적지에 도착하지 못하면 네트워크 혼잡을 유발할 수 있다. 그것을 방지하기 위해 IPv4헤더에는 생존 시간(Time To Live, TTL)을 저장한다. TTL이내에 패킷이 목적지에 도착하지 못하면 패킷을 소멸시키는 방식이다.

MTU
한 번에 전송할 수 있는 데이터의 크기를 MTU(Maximum Transmission Unit)이라고 한다. 이 값은 경로의 상태에 따라 변경된다. 라우터에는 MTU값에 따라 패킷을 분할하는 기능이 구현되어 있다. 분할된 패킷이 목적지에 도착하면 데이터를 복원하는 방식으로 동작한다.
IPv4 헤더에 있는 식별자, 분할 플래그, 프래그먼트 옵셋 필드를 통해 분할 정보를 표시한다.

IPv6

IPv4의 IP가 고갈될 위기에 처하자 IPv6가 도입되었다. 이는 128bit으로 IP 주소를 나타낸다.

http://www.ktword.co.kr/test/view/view.php?m_temp1=3251

IPv6와 IPv4를 같이 사용하기 위해 Dual Stack(하나의 장비에 IPv4와 IPv6를 할당하고 둘 다 사용 가능하게 한다.), Tunneling(IPv4 네트워크를 지나갈 때는 IPv6 패킷을 IPv4 패킷 안에 넣어서 전송한다.) 등의 기술이 사용된다.

IP Address

IP 주소는 네트워크 부분과 호스트 부분으로 구성된다. 라우터는 패킷에 저장된 목적지 IP의 네트워크 부분을 보고 목적지가 속한 네트워크를 판단한다.

IP 주소에서 몇 bit을 네트워크 부분, 호스트 부분으로 나눌 것인지 결정하는 것이 address class이다. A~E 클래스로 구분된다.

https://medium.com/networks-security/tricks-to-remember-five-classes-of-ipv4-484c191678fb

클래스 A에 속하는 네트워크라면 1677만대의 호스트 주소를 할당할 수 있지만 이렇게 많은 수의 호스트가 하나의 네트워크에 속하는 경우는 드물기 때문에 많은 수의 주소가 사용되지 않고 낭비될 수 있다.
이러한 문제를 해결하기 위해 하나의 네트워크를 세분화 한 서브넷을 생성한다. 서브넷을 생성하기 위해 서브넷 마스크(subnet mask)를 사용한다.

https://networkencyclopedia.com/subnet-mask/

Private IP Address
가정이나 사내에서 사용하는 어드레스이다. 같은 네트워크 안에서만 중복되지 않으면 사용 가능하다. 인터넷에 연결해도 외부에서 접근이 불가하기 때문에 NAT(Network Address Translation)을 사용하여 Public IP로 변경하는 방법이 필요하다.

Public IP Address
인터넷 안에서 중복될 수 없다. ICAN이나 KRNIC같은 인터넷 레지스트리 단체가 관리한다. Public IP가 필요한 경우 단체에서 할당받아야 한다. 지역 인터넷 레지스트리 -> 국가별 인터넷 레지스트리 -> 인터넷 서비스 제공자 순으로 IP 주소가 배분된다.

Private IP를 할당받은 호스트와 Public IP를 할당받은 호스트는 서로 통신이 불가능하다. 그러나 주소 변환 기술을 사용하면 통신이 가능해진다. 라우터의 NAT은 송신지의 Private IP를 라우터의 Public IP로 변경하여 데이터를 외부로 전송한다. 수신할 때는 라우터의 Public IP로 도착한 패킷을 수신지의 Private IP로 변경하여 전송한다.

만약 NAT을 사용하는 네트워크 내부에 여러 호스트가 같은 포트번호를 사용하고 있다면 외부와 통신할 때 라우터의 Public IP로 변환되기 때문에 호스트를 구분할 수 없는 문제가 생긴다. 이를 극복하기 위해 NAPT(Network Address Port Translation)을 사용한다. 이는 Private IP 주소와 포트 번호를 변환한다. 그래서 만약 내부에 같은 포트번호를 사용하는 호스트가 있다면 포트 번호 변환을 요청하여 충돌 문제를 해결할 수 있다.

** 예약된 IP 주소
127.0.0.1 : local host ip
1.1.1.1 : broadcast address
0.0.0.0 : 네트워크 전체

Routing

인터넷에서 데이터를 목적지까지 전송하기 위해 최적의 경로를 탐색하는 과정을 라우팅이라고 한다. 네트워크 상에 있는 라우터가 서로 연결 정보를 교환해야 하기 때문에 BGP, OSPF, RIP 등의 라우팅 프로토콜을 사용한다.

자율 시스템

규모가 큰 네트워크에서는 몇 개의 네트워크를 하나로 묶어서 자율 시스템(AS, Autonomous System)이라는 단위로 관리한다. AS 단위로 접속 경로를 이동하면 빠르게 경로 탐색이 가능해지기 때문에 통신 속도가 향상된다.

Router

라우터의 역할은 네트워크 간 패킷 전송이다. 그러므로 라우터에 연결된 네트워크에서 사용하는 IP 주소를 가지고 있어야 한다.

라우터는 목적지의 네트워크 정보와 네트워크에 도달하기 위한 인터페이스 정보를 저장하는 라우팅 테이블이라는 자료구조를 가진다.

라우팅 테이블을 네트워크 관리자가 수동으로 설정하는 방식을 정적 라우팅이라고 하고 라우팅 프로토콜이 현재의 통신 경로 상황을 반영하여 라우팅 테이블 경로를 설정하는 것을 동적 라우팅이라고 한다. 대부분의 경우 네트워크 접속 형태가 복잡하기 때문에 동적라우팅을 사용한다.

동적 라우팅의 경우 거리 벡터형 방식과 링크 상태형 방식의 2가지 알고리즘이 많이 사용된다. 거리 벡터형 알고리즘은 RIP 프로토콜이 사용하는 방식으로, 목적지까지의 경로 중 더 짧은 거리의 경로를 선택하는 방식이다. 링크 상태형 알고리즘은 OSPF 프로토콜이 사용하는 방식으로, 통신 상태를 맵으로 관리하면서 상태가 가장 좋은 경로를 선택하는 방식이다.

자율 시스템 내부에서는 주로 OSPF 프로토콜이 사용된다. 이때, 네트워크 규모가 커지면 부하가 커질 수 있기 때문에 AS 안에서 네트워크 영역을 분할하여 영역별로 맵을 만드는 방식을 사용한다. 자율 시스템들 사이에서는 경로 벡터형인 BGP가 사용된다.

ICMP

ICMP(Internet Control Message Protocol) 프로토콜은 데이터 전송 중에 문제가 발생하면 이를 통보하기 위해 사용된다. 상태 타입을 지정하여 ICMP 헤더에 저장하고 패킷을 전송한다.

https://electronicspost.com/icmp-internet-control-message-protocol/

DNS

컴퓨터를 식별하는 IP 주소와 호스트 명을 관리하기 위해 DNS(Domain Name System)과 Domain Name을 사용한다. Domain Name에 대응하는 IP 주소를 알려면 DNS 서버에게 요청하면 된다. 이때, 컴퓨터나 라우터에 DNS 서버의 IP가 등록되어 있어야 한다.

Domain Name은 계층 구조 형태를 마침표로 구분하여 표현한다. 가장 상위에 있는 Top-Level Domain과 그 아래에 있는 서브 도메인으로 구성된다.

https://en.wikipedia.org/wiki/Domain_Name_System

DNS 서버는 크게 Domain Name을 관리하는 Content Server와 질의응답을 위한 Caching Server로 구분된다. 동작 순서는 다음과 같다.

  1. 클라이언트가 Domain Name으로 접속하여 DNS Caching Server에게 IP 주소를 질의한다.
  2. DNS Caching Server는 Root Name Server부터 순차적으로 질의하고 최종 결과로 알게 된 IP를 클라이언트에게 응답한다.

이때, 클라이언트가 한번 질의한 내용은 서버에 캐시로 저장하기 때문에 질의과정을 거치지 않고 IP 주소를 바로 반환할 수 있다.

DHCP

DHCP(Dynamic Host Configuration Protocol)는 네트워크에 속한 호스트에게 IP 주소를 자동으로 부여하는 프로토콜이다. 호스트가 네트워크에 처음 속할 때 IP 주소를 할당하고 서브넷 마스크 등의 정보를 설정한다.

가정용 인터넷 라우터나 Wi-Fi는 DHCP 서버 기능을 가지고 있어서 컴퓨터를 연결하면 Private IP를 할당한다.

IP 할당 과정

새로운 호스트가 네트워크에 연결되어 IP 주소를 할당받을 때는 DHCP 서버도 신규 호스트의 존재를 모르기 때문에 신규 호스트가 먼저 모든 호스트에게 broadcast로 DHCP 발견 메시지를 보낸다.

boradcast로 전송된 메세지를 받은 DHCP 서버는 사용가능한 IP 주소를 할당한다. broadcast로 전송된 메세지를 받은 다른 호스트들은 자신과 관련 없는 메세지이기 때문에 패킷을 버린다.

DHCP가 다시 신규 호스트에게 IP 주소를 할당할 때도 아직 신규 호스트를 모르는 상태이기 때문에 broadcast로 IP 할당 메세지를 전송한다.

profile
개발자가 되고 싶은 감자

0개의 댓글

관련 채용 정보