개발/Network / / 2021. 11. 10. 07:37

네트워크 프로그래밍 - Special address[loopback, all-zero, limited broadcast, directed broadcast], private networks, NAT

반응형

Special address

loopback address

네트워크 시험을 할 때 127로 시작하는 loopback 주소로 시험하여, 프로그램을 잘못짜서 네트워크가 죽는 상황을 방지한다.

 

using the all-zero address

고정 IP가 아닌 유동 IP의 경우 할당을 해주어야 하는데, 할당하는 역할을 DHCP server가 한다. 

IP가 할당되지 않은 PC가 네트워크에 들어왔을 때 IP를 할당해주는 것이다.

공유기의 역할이 이것이다.

 

아직 IP가 할당되지 않은 PC가 DHCP에게 요청 packet을 보낼 때 시작지점 주소가 할당되어있지 않으므로 0.0.0.0으로 사용하는 것을 all-zero address라고 한다.

 

DHCP 프로토콜에는 주소가 할당되지 않은 PC로부터 packet을 받고 다시 보낼 때의 MAC주소 처리 방법 등이 정의되어있다. 

 

limited broadcast address

IP의 bit가 모두 1인 주소를 broadcast address라고 한다. packet을 broadcast address를 목적지로 보내면, 네트워크의 모든 IP에게 전달한다. 

 

여기서 broadcast address로 전송한 packet을 router에서는 block한다. 그렇지 않으면 해당 네트워크 이외의 전 세계의 네트워크로 패킷이 전달되기 때문이며, 이러한 router 제한을 걸어놓으므로 limited broadcast address라 한다. 

 

a directed broadcast address

위의 limited broadcast의 경우 모든 bit가 1이었지만, directed broadcast address는 suffix bit가 모두 1이다.

 

directed broadcast address를 보기 전에 다음을 잠깐 보자.

위 그림에서 200.11.8.0/24는 시작주소로 PC를 할당하지 않고, 마지막 주소인 200.11.8.255는 special한 의미로 사용되므로 PC를 할당하지 않았는데, 이 마지막 주소가 broadcast address로 사용된다. 

broadcast address로 전송하게 되면 포함된 네트워크의 모든 PC에게 데이터를 전송하게 된다. 

 

 

private networks

위 표는 사설망 주소에 관한 것이다. 회사나 기관에서 네트워크를 인터넷과 교류하지 않고 마음대로 IP를 할당하거나 하여 인터넷 상 다른 네트워크로 나갈 때 추가적인 장치가 필요하다. 

이러한 사설망 주소를 구분하기 위해서 위의 표와같은 private networks address를 사용한다. 

 

NAT (Network Address Translation)

private networks를 구축하기 위해서 NAT를 사용한다.

그림과 같이 private network가 구축되어있는 상황이다. 각각의 PC에 10.0.0.1, 10.0.0.2, 10.0.0.3 이 할당되고 router에 10.0.0.4가 할당되었다. router에 할당된 138.76.29.7은 public IP이다. 

 

 

IP 10.0.0.1, port 3345 에서 다른 IP를 향해 데이터를 전송할 때, 10.0.0.1 IP는 사설망 주소이므로 router에 할당된 public 주소로 변경해야한다.

 

그런데 만약 다른 PC들 (10.0.0.2, 10.0.0.3) 도 같은 프로그램(port number)로 전송하게되면 구분할 필요가 있다. 

그렇기에 패킷을 전송하는 과정에 router가 사용하지 않는 port하나를 할당해준다. 그림에서는 5001 포트를 할당해주었다. 

 

 

128.119.40.186으로 보낸 패킷에 대해서 답장으로 128.119.40.186으로부터 패킷이 돌아오는 상황이다.

받았던 IP와 port인 138.76.29.7, 5001로 전달하면, router table에서 해당 port에 할당했던 사설 IP와 port로 바꾸어 전달해준다. 

즉 위 그림에서는 128.119.40.186, 80에서 보낸 패킷이 138.76.29.7, 5001을 목적지로 보냈을 때, router가 private network로 들어갈 때, 목적지 IP와 port를 10.0.0.1, 3345로 변경해서 전달해준다. 

 

router 역할을 하는 공유기는 DHCP server역할을 하므로 네트워크 내 각 PC에게 private IP를 할당해준다. 보통 private network IP는 192.168.0.0/16으로 주로 사용하므로, 대부분의 PC의 private IP가 192.168.~ 이다.

데이터를 보낼 때마다 router가 private network address를 public으로 변경하는 NAT 작업을 해준다. 

 

router 즉 공유기마다 트래픽이 오갈때 처리하는 속도는 다르므로 이로인해 인터넷 통신 성능과 가격이 달라진다. 

 

port forwarding

port forwarding이라는 말을 들어보았을 것이다.

이는 router의 특정 port number를 private network 상 PC에 해당하는 IP와 port로 연결시켜주는 작업을 의미한다. 

데이터를 전달할 때는 port처리를 NAT에서 자동으로 처리해주지만, 특정 포트를 private network의 IP, port로 직접 연결시키는 작업에는 port forwarding이 필요하다.

 

P2P

데이터를 주고받을 때, 한 쪽은 서버 역할을, 한 쪽은 클라이언트 역할을 해야한다.

P2P는 각각의 PC가 서버역할과 클라역할을 모두 하는 것이다. 다른 클라이언트가 자신의 PC로 요청하여 데이터를 받아오면 자신의 PC가 서버가 되는 방식이다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유