[도서] 읽자마자 IT 전문가가 되는 네트워크 교과서

3장. 인터넷에서 기기는 어떻게 통신할까?

bread-gee 2024. 11. 18. 12:08

📌 프로토콜

- 기기가 서로 통신할 때는 양쪽 모두 이해할 수 있는 언어(프로토콜)를 사용해야 한다.
- 기기가 인터넷에서 서로 어떻게 통신해야 하는지, 오류가 발생했을 때 무엇을 해야 하는지에 관한 규칙

🧿 프로토콜이 할 수 있는 질문

❓ 한 패킷을 다른 패킷에 넣을 수 있을까?
❓ 패킷에 패킷 헤더가 없으면 어떻게 할까?
❓ 패킷의 크리는 얼마일까?
❓ 수신자 주소를 찾을 수 없으면 어떻게 해야 할까?
❓ 패킷을 수정할 수 있을까?
❓ 패킷 헤더에는 어떤 세부 사항들이 들어가야 할까?
❓ 패킷이 분실되면 어떻게 할까?

🧿 프로토콜의 종류

같은 종류의 통신에도 다양한 프로토콜 유형이 사용된다.
대표적으로 아래와 같은 프로토콜들이 패킷을 한 노드에서 다른 노드로 전송하는 방법을 결정한다.

- TCP(Transmission Control Protocol, 전송 제어 프로토콜)
패킷을 정확하고 완전한 형태로 전송하지만, 다른 프로토콜에 비해 보내는 속도가 느리다.

- UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)
정확한 패킷 전달이나 전송 순서보다 속도를 우선시하는 프로토콜

- QUIC(Quick UDP Internet Connections, 빠른 UDP 인터넷 연결)
여러 개의 빠른 UDP 연결을 활용하지만, TCP처럼 정확하고 신뢰할 수 있는 방식으로 데이터를 전송한다.

 

 

 

📌 프로토콜과 표준을 다루는 국제기구

국제 기술 관련 기구와 연구소에서는 모두가 사용할 수 있는 프로토콜과 통신 표준을 규정 및 개선하고 있다.

- 미국전기전자학회(IEEE, Institute of Electrical and Electronics Engineers)는 유ㆍ무선 네트워크 프로토콜을 다룬다.
👉🏻 무선 네트워크 표준 802.11번 등이 대표적

- 국제인터넷표준화기구(IETF, Internet Engineering Task Force)는 인터넷 통신 프로토콜을 수립하고 게시한다.
👉🏻 TCP, UDP 같은 프로토콜들

- 국제전기통신연합 표준화 부문(ITU-T, International Telecommunication Union Telecommunication Standardization Sector)은 전기 통신 프로토콜을 다룬다.
👉🏻 웹 서버와 클라이언트에서 사용되는 암호화 표준 X.509가 대표적

- 국제표준화기구(ISO, International Organization for Standardization)는 기수르 경영, 정부, 사회 등 다양한 부문의 애플리케이션 표준을 결정한다.
👉🏻 ISO에서는 여러 층으로 구성된 인터넷 모델을 수립했다.

 

 

 

📌 인터넷 프로토콜(IP, Internet Protocol)

- IP는 IP 주소와 IP 패킷의 형식을 규정하는데 쓰인다.
- 패킷을 어떻게 구성할 것인지, 패킷을 목적지까지 보낼 주소를 어떻게 지정할 것인지 표준화하는 프로토콜

디바이스가 네트워크 연결되면 네트워크 주소가 할당된다고 했는데, 이 주소로 인터넷상의 다른 기기와 소통하려면 주소 형식이 반드시 인터넷 프로토콜 표준을 따라야 한다.
이 표준을 따른 네트워크 주소를 'IP 주소'라고 부른다.

◾ 인터넷 프로토콜이라는 언어를 구사하는 각 기기(컴퓨터, 휴대폰, 토스터 등)는 같은 프로토콜을 사용해야 서로 소통할 수 있다.

 

🧿 공용 및 사설 IP 주소
◾ 인터넷 프로토콜은 공용 IP 주소와 사설 IP 주소 유형을 호출한다.

- 공용 IP 주소
인터넷에 직접 접속할 수 있는 경우
ex) 인터넷 서비스 공급자(ISP)가 제공하는 홈 라우터는 공용 IP를 갖고 있다.

- 사설 IP 주소
인터넷에 직접 접속할 수는 없지만, 중개자를 통해 접속할 수 있는 경우
사설 IP로는 일반적으로 광역 인터넷에 바로 접속할 수 없고, 근거리 통신망(LAN)이나 가상 사설망(VPN) 등의 사설망에서만 접속할 수 있다.
ex) 홈 라우터에 연결된 각 디바이스

홈 라우터는 공용 IP 주소가 있지만, 그 집에서 일어나는 패킷 전송도 처리해야 한다.
이 말을 집 안에 있는 사설망에 연결된 홈 라우터가 사설 IP 주소를 사용하는 디바이스의 중개자 역할도 하고 있다는 뜻이다.

같은 네트워크에서는 여러 기기가 한 주소를 동시에 사용할 수 없다.
한 주소당 기기 하나씩만 쓸 수 있다.
따라서 공용 IP 주소 역시 중복 없이 전 세계에서 단 하나씩만 존재한다.

더보기

📍 내가 이해한 내용

우리집에선 KT를 통해 인터넷을 쓴다.
KT는 ISP로, 공용 IP를 제공하는 인터넷 서비스 공급자이다.
우리집 와이파이 기계(홈 라우터)는 KT로부터 공용 IP를 받아서 인터넷에 연결된다.

내가 집에서 스마트폰을 인터넷에 연결해서 사용하는데
스마트폰은 와이파이 기계를 통해서 인터넷에 연결되며, 사설 IP를 할당받는다.
스마트폰의 사설 IP는 집 안 네트워크에서만 유효하고, 외부에서는 직접 접근할 수 없다.

결과적으로, 스마트폰에서 요청한 데이터는 와이파이 기계를 통해서 공용 IP로 변환된 뒤 인터넷으로 나갔다가, 다시 라우터를 거쳐 사설 IP를 가진 스마트폰으로 돌아온다.

 

🧿 네트워크 주소 변환(NAT, Network Address Translation)

인터넷에 사설망이 연결되고 라우터를 거쳐 패킷을 보낼 때, 라우터는 네트워크 주소 변환(NAT)이라는 기술을 활용해서 패킷의 주소 형식을 다시 작성한다.
간단히 말하면 망 안에서만 사용할 수 있는 사설 IP 주소를 바깥에서 쓸 수 있는 공용 IP 주소로 바꿔주는 것

NAT를 사용하는 경우, 라우터는 패킷을 보낸 쪽의 정보를 모두 메모리에 저장한다.
네트워크가 인터넷으로부터 응답을 받으면 라우터는 전달받은 패킷 태그를 다시 작성한다.
그 패킷을 라우터 메모리에 기록되어 있는 사설 IP로 발송하면 각 디바이스는 패킷을 수신할 수 있게 된다.

👉🏻 사설 IP를 사용하는 여러 디바이스가 라우터의 공용 IP를 빌려 인터넷에 접속하는 과정
단, 라우터 전원이 꺼지면 모든 정보는 사라진다.

NAT이 하는 일
- 모든 패킷의 정보를 기록한다.
- 이름 재지정에 관한 모든 정보를 메모리에 저장한다.
- 모든 패킷 이름을 다시 정한다.
- 호출에 응답한다.
- 패킷을 주면 처리한다.
- 공용 IP 주소를 가지고 있다.

사설 IP를 사용하는 디바이스는 인터넷에서 서비스를 제공하기 어렵다.
👉🏻 NAT의 존재때문에 디바이스를 외부에서 연결하기 어렵기 때문에

더보기

📍 내가 이해한 내용

집에서 스마트폰을 와이파이에 연결해서 사용하는 경우
데이터 전송 시
스마트폰의 사설 IP 주소는 우리집 안에서만 유효하기 때문에(라우터 안에서만 유효) 외부로 나갈 수 없다.
우리집 와이파이 기계는 스마트폰의 사설 IP를 자신의 공용 IP로 변환해서 인터넷으로 데이터를 보낸다.
! 이때 어떤 사설 IP가 데이터 전송했는지 메모리에 기록
=> 스마트폰은 외부와의 통신을 할 때 우리집 와이파이 기계의 공용 IP 주소를 사용한다.

데이터를 수신할 때엔
외부 서버에서 우리집 와이파이 기계의 공요 IP 주소로 응답 데이터를 보낸다.
와이파이 기계는 응답을 받아서, 메모리에 저장했던 사설 IP를 찾아서 요청 보낸 스마트폰으로 응답 데이터를 전달한다.

NAT은 내부 네트워크(스마트폰)의 모든 요청을 와이파이(홈 라우터)의 단인 공용 IP로 변환하여 외부로 내보내고
외부에서 받는 응답을 다시 내부 네트워크의 각 디바이스에 전달한다.

 

🧿 IPv4 주소
- NAT은 IP 버전 4(IPv4)에서만 사용한다.
- 8비트(bit)로 구성된 4개의 묶음
=> 8비트 === 1byte
==> 4바이트(byte) or 4옥텟(octet)
- 총 32비트로 구성
- 점(.)으로 구분
- 각 블록은 0~255 범위의 십진수로 표기
- 비트는 이진수(0, 1)인데, 컴퓨터는 이진수를 사용하고 인식하지만, 사용자(인간)이 볼 땐 1~255의 십진수로 표기된다.

이진수 표기 : 11000110.00110011.01100100.00000111
십진수 표기 : 198     .51      .100     .7

◾ 사설 IP 주소의 형태 크게 3가지
1) 192.168.xxx.xxx
2) 10.xxx.xxx.xxx
3) 172.16.xxx.xxx ~ 172.31.xxx.xxx

◾ 예약된 주소
- 몇몇 주소는 특수 용도로 쓰일 것을 대비해 사용 불가 상태(예약되어 있다.)
- 예약된 주소는 네트워크를 통해 트래픽을 보내는 데엔 사용할 수 없다.
1) 0.0.0.0 ~ 0.0.0.31
2) 127.xxx.xxx.xxx

👉🏻 사설 IP 주소를 제외한 다른 모든 주소는 공용 IP 주소이다.

IPv4는 주소를 약 43억 개밖에 만들지 못한다.
43억개는 큰 숫자이지만, 스마트폰, 태블릿 등 다양한 디바이스가 늘어나면서 사용할 수 있는 주소의 개수도 한계에 이르렀다.
NAT를 사용해 여러 디바이스를 하나의 공용 IP로 쓰는 이유도, 각 디바이스에게 각각의 공용 IP를 할당하기엔 IPv4 주소가 모자라기 때문이다.

그래서 나온 것이 IP 버전 6(IPv6)이다.

 

🧿 IPv6 주소
- 16비트(bit)로 구성된 8개의 묶음
- 총 128비트로 구성
- 콜론(:)으로 구분
- 각 블록은 0000~FFFF 범위의 16진수로 표기

 

  • 이진수 표기 : 0010000000000001:0000110110111000:0000000000000000:0000000000000001:0000000000000000:0000000000000000:0000000000010000:0000000111111111
  • 16진수 표기 : 2001:0DB8:0000:0001:0000:0000:0010:01FF
  • 16진수 표기 축약형 : 2001:0DB8:0000:0001::0010:01FF
    (0만으로 구성된 블록이 이어지면 콜론만 표시한다.)

IPv6는 총 2 ¹²⁸개의 주소를 만들 수 있다.
=> 약 340 언디시릴리언(340,282,366,920,938,463,463,374,607,431,768,211,456) 개의 주소

더보기

📍 내가 이해한 내용

 

- NAT는 IPv4에서 여러 디바이스가 하나의 공인 IP 주소를 공유할 수 있게 해주는 기술이다.
- ULA는 IPv6에서 사설망 내에서 사용할 수 있는 고유 로컬 주소인데, 이 주소는 인터넷과 연결되지 않지만, 네트워크 내에서 유일한 주소를 제공하여, 사설망 내의 디바이스가 서로 통신할 수 있도록 한다.(외부와의 연결은 IPv4와 마찬가지로 X)
- IPv6는 NAT(사설 IP 주소를 바깥에서 쓸 수 있는 공용 IP 주소로 바꿔주는 것)를 사용하지 않고, ULA를 사용해 사설망 내에서 각 디바이스에 고유 IP 주소를 할당할 수 있다.

- IPv6에서는 홈 라우터가 공인 IP 주소 범위를 ISP로부터 할당받고, 그 범위 내에서 각 기기에게 고유한 공인 IP 주소를 할당한다. 그래서 각 기기는 자신만의 고유한 공인 IP를 갖고 외부와 직접 통신할 수 있다.

 

🧿 전 세계의 IP 주소 할당
❓ 라우터가 연결된 디바이스에 IP 주소를 할당할 때 그 주소는 어디서 받아올까?
IANA => 대륙별 레지스트리(RIR) 지정, IP 주소 범위 할당
RIR => 지역별 레지스트리에 IP 주소 범위 할당
LIR => 다시 하위 업체에 할당 or 자체적으로 ISP 역할을 맡아 IP 주소 할당

각 라우터는 이런 과정을 거쳐 사용할 수 있는 공용 IP 주소를 부여받는다.
◾ 인터넷 서비스 공급자는 ISP(Internet Service Provider)라고 부른다.

🧿  IP 주소 할당 방식

1. 정적(static) 방식
=> 디바이스가 언제나 같은 주소 사용

2. 동적(dynamic) 방식
=> 주기적으로 주소가 바뀜

◾ 서버에서는 보통 정적 IP 주소를 사용한다.
항상 같은 주소로 접근할 수 있어야 하기 때문.

🧿 IP 라우팅
주소를 통해 패킷이 이동하는 방법

패킷에는 패킷 헤더라는 태그가 달려있다.
태그에는 수신 및 발신 주소의 정보가 포함되어 있어 패킷이 어디에서 와서 어디로 가는지 알 수 있다.

✔ NAT를 사용하는 네트워크에서는 IPv4 주소를 할당받은 홈 라우터가 패킷 태그를 재작성한다고 했는데,
이는 사설 IP 주소를 쓰는 노드(디바이스)가 인터넷으로 패킷을 보낼 때 회신을 받을 수 있게 하는 과정이다.

✔ NAT를 사용하는 경우, 라우터는 패킷을 보낸 쪽의 정보를 모두 메모리에 저장한다.
네트워크가 인터넷으로부터 응답을 받으면 라우터는 전달받은 패킷 태그를 다시 작성한다.
그 패킷을 라우터 메모리에 기록되어 있는 사설 IP로 발송하면 각 디바이스는 패킷을 수신할 수 있게 된다.

IPv6를 쓰거나 NAT를 사용하지 않는 네트워크에서는 이렇게 태그를 재작성할 필요가 없다.



❓ 라우터는 디바이스로부터 받은 패킷을 인터넷에 있는 다른 IP 주소로 곧장 보낼까?
라우터가 패킷을 바로 최종 목적지로 보내는 것이 아니라, 자신이 알고 있는 다음 경로의 라우터로 보내는 방식으로 동작한다고 보면된다.

집에서 사용하는 작은 라우터가 있다면, 이 라우터는 패킷을 바로 인터넷으로 내보내기보다는 가장 가까운ISP의 대형 라우터로 패킷을 넘긴다.
이 대형 라우터가 마치 우체국처럼 패킷을 모아서 가장 가까운 라우터들로 보내는 역할을 한다.

라우터는 IP 주소의 앞부분을 보고 패킷이 같은 네트워크에 있는지 확인하고,
만약 같은 네트워크가 아니라면, 그 목적지를 아는 다른 라우터로 패킷을 전달한다.
이런 과정을 반복하면서 패킷이 최종 목적지에 도달하게 된다.

 

 

 

📌 인터넷 프로토콜 보안(IPSec)

IPSec는 패킷을 확인하는 과정을 암호화해서 진본성과 무결성을 확보하고, 발신 주소를 수정하거나 훼손하지 못하게 막아서 패킷내용 역시 암호화해서 신뢰성을 보장한다.

보통 패킷은 일반적인 IP를 통해 자유롭게 이동하지만, IPSec를 사용하는 디바이스나 라우터는 신뢰할 수 없거나 유효하지 않은 것을 보이는 패킷을 모두 배제한다.

IPSec는 이런 방식으로 서비스 거부(DoS, Deial-of-Service) 공격으로부터 데이터를 보호할 수 있다.
디도스(DDoS0는 분산 서비스 거부 공격(Distributed Denial of Service attack)을 줄인 말로 가장 유명한 Dos 공격의 일종이다.


Dos 공격자는 발신 주소를 각각 다르게 해서 엄청나게 많은 패킷을 한 IP 주소로 동시네 보낸다.
그러면 디바이스에 과부하가 걸려 모든 요청에 응답하지 못한다.
이렇게 노드를 먹통으로 만드는 것이 Dos 공격이다.

IPSec은 이런 공격으로부터 데이터를 지킬 수도 있고 패킷의 무결성ㆍ진본성ㆍ신뢰성 문제를 동시에 해결할 수 있는 좋은 방법이지만
설정이 복잡하고 번거로워서 널리 쓰이지는 않는다.

 

 


출처
읽자마자 IT 전문가가 되는 네트워크 교과서