본문 바로가기

Computer Sci./Network

[네트워크] 라우팅(routing)

이번 포스팅에서는 라우팅에 대해 공부한 내용을 정리해 보려고 한다.

라우터(router)는 둘 이상의 네트워크와 네트워크 간 데이터 전송을 위한 경로를 설정해 주고 데이터가 해당 경로를 따라 한 네트워크에서 다른 네트워크로 통신할 수 있도록 도와주는 인터넷 접속장비이다. 내부 네트워크는 사용하는 컴퓨터 기종이나 OS, 프로토콜 등을 알 수 있기 때문에 네트워크 최적화를 이룰 수 있지만, 내부 네트워크를 외부 네트워크와 연결할 때는 정보가 제한되는데 이 때 라우터를 통해 두 네트워크를 연결한다.

라우터는 다른 기종간의 네트워크를 연결하는 기능을 하기 때문에 여러 가지 종류의 프로토콜에서 전송하는 패킷을 받아들일 수 있어야 한다. 이렇게 받아들인 패킷을 여러 경로 중 가장 효율적인 경로로 선택하여 흐름제어를 한다. 라우터의 역할은 목적지의 IP 주소를 읽어서 맥 주소를 보내려는 곳에 바꿔서 보내주는 것이다.

아래의 그림에서 upstream ip는 232.25.201.11 이고 default gateway는 232.25.201.1이다.

라우터에서 보내는 TCP 패킷에는 다음과 같은 정보들이 포함되어 있다. 오른쪽부터 하나씩 살펴보면

  • Web Server IP Address : 144.22.17.191 -> 목적지의 IP 주소이다.
  • My IP Address : 32.44.17.231 -> 나의 IP 주소이다.
  • Destination Port : 80 -> 목적지 포트 번호이다. 보통 0~1023 사이의 번호들로 구성된다.
  • Source Port : 3218 -> 원천 포트 번호이다. 1023~65535 사이의 숫자들 중에서 ephemeral한 숫자로 만들어진다.

 

NAT(Network Address Translation, 네트워크 주소 변환)은 IP 패킷의 TCP/UCP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고받는 기술이다. 패킷에 변화가 생기기 때문에, IP나 TCP/UCP의 체크섬(checksum)도 다시 계산되어 재기록해야 한다.

NAT을 사용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다. NAT은 IPv4의 주소 부족 문제를 해결하기 위한 방법으로 고려되었으며, 주로 비공인(사설) 네트워크 주소를 사용하는 망에서 외부의 공인망(public)과의 통신을 위해 네트워크 주소를 변환하는 것이다.

NAT에는 Static NAT과 Dynamic NAT이 있다.

  • Static NAT(SNAT) : 특정 트래픽을 하나의 내부 IP 주소로 보낸다
  • Dynamic NAT(DNAT) : 인터넷 주소의 제한된 풀을 가지고 있어서 몇 개의 인터넷 기기에 주소를 부여한다.

 

포트포워딩은 NAT에 들어온 공인 IP(ex. 인터넷)가 어떤 컴퓨터로 연결이 되야 하는지를 알 수 있게 하기 위해 포트를 연결해 주는 작업을 의미한다. 즉, 하나의 IP 주소에서 서로 다른 포트 번호를 통해 NAT을 통해 각각 다른 컴퓨터로 연결이 될 수 있게 되는 것이다.

 

참고자료