[Computer Network] IP address exceptions

G·2023년 5월 15일
0

Computer Network

목록 보기
15/20

IP 주소의 예외들을 알아보자.


전부 1로 되어 있는 주소는 limited broadcast라 한다. one-to-all broadcast이며, 같은 네트워크 안에 있는 디바이스에세 전부 패킷을 전송한다.
하나의 네트워크안에서만 전송하기 위해 네트워크 밖의 router는 이를 block 시킨다.

DHCP 서버에게 유동 IP를 할당받기 위해 사용할 수도 있고, 정말 전체 device에게 보내기 위한 프로토콜로 사용될 수 있다.


소켓 프로그래밍을 할 때, UDP는 네트워크를 죽일 수 있다. TCP는 혼잡 제어로 인해 죽이진 않는다.
UDP는 application에서 보내는 속도로 나가기 때문에 위험하다.

그래서 소켓 프로그래밍을 테스트할 때, loop back 주소를 사용할 수 있다.
127로 시작하는 주소를 사용하면 사용할 수 있다.


위의 표는 사설망 표이다. 공유기에서 IP 주소를 할당받으면 192.168로 시작하는 IP주소를 할당받을 것이다.

인터넷과 연결은 하지 않을거지만 하나의 사설망을 만들어 그 안에 있는 디바이스들끼리 데이터를 주고 받고 싶을 때 사용할 수 있다.

이럴 때 IP 주소를 막 정해도 되지만, 인터넷을 사용해야할 때 문제가 된다.

그래서 192.168, 169.254로 시작하는 사설망을 명시하는 주소를 만들었다.

더 큰 block을 위해 10, 172.16으로 시작하는 사설망 주소 블락을 만들어 놓았다.

만약 사설망 주소를 막 할당한다면 인터넷에 연결했을 때, 다른 네트워크들은 사설망 주소인지, 제대로 block을 할당받은 주소인지 모른다.

만약 직접 주소를 할당하여 구축한 사설망을 인터넷이랑 연결하려면 어떻게 해야할까?

directed broadcast 주소를 사용하면 된다. suffix가 모두 1인 주소이다.
네트워크의 맨 마지막 주소인 것이다.
이 주소는 라우터가 모든 컴퓨터한테 데이터를 보낼 때 사용하는 주소이다.

다른 프로토콜에서 사용한다.

NAT

공유기가 하는 역할이다. 사설망을 알아서 할당했을 때, 다른 서버와 접속을 어떻게 해야할까?
데이터가 가는 것은 무리가 없다. 그러나 다시 데이터를 받을 때가 문제가 된다.

공유기에 고유한(public) IP 주소가 할당이 되어야 한다. DHPC 서버를 통해 IP가 할당된다.
그럼 사설망의 주소 10.0.0.1의 IP 주소를 138.76.29.7로 변경해야한다.
만약 SYN 패킷을 최초로 전송한다 했을 때, ACK을 받아야한다. 그럼 NAT table에 최초로 전송한 SYN 패킷의 사설망 IP 주소와 포트번호를, DHPC 서버에서 할당받은 IP 주소와 쓰고 있지 않는 포트번호로 매핑한다.

그럼 이 매핑된 IP 주소와 포트번호로 서버가 ACK을 보내면 다시 table을 통해 패킷의 전송 헤더를 변경하면 사설망에 있는 디바이스에 잘 전달될 것이다.

그리고 데이터를 보낼 때 ARP 테이블을 통해 data frame에서 당연히 MAC 주소도 저장해야하지만 그림에 나와있지 않다.

공유기에서 서버를 어떻게 돌려야할까?

이전의 공유기를 사용하는 device들 끼리 P2P 연결이 어떻게 수행되는지 알아보자.
서버 A의 Privat IP가 10.0.0.2이고 포트번호가 4444이다. 클라이언트 B가 서버 A와 어떻게 연결해야할까?
이를 위한 랑데뷰 서버, 즉 제3의 서버가 필요하다. 서버 A는 랑데뷰 서버와 연결을 하고 NAT 테이블에 Private IP에 매핑한 Public IP 주소인 138.76.29.7/5002를 저장하고 랑데뷰 서버에게도 이를 알린다.
그럼 클라이언트 B는 A와 접속하기 위해 랑데뷰 서버와 연결하여 A의 Public IP/Port를 알아와 연결할 수 있게 된다. 이를 Hole Punching이라 한다.

그럼 공유기를 사용할 때도, P2P 때와 마찬가지로 Public IP(공유기 주소)로 들어오는 데이터 전송을 공유기를 사용하는 디바이스의 Private IP로 변경해줘야 한다. 이를 위해 공유기에 매뉴얼하게 특정 device를 위한 포트번호를 부여해야한다. 이를 Port Forwarding이라 한다.

profile
열심히 안 사는 사람

0개의 댓글