본문 바로가기

Server, DevOps

[Network] Network Layer에 대한 깊은 이해하기(+IPv4, NAT, PAT, UDP, TCP)

https://slideplayer.com/slide/12233461/

저번 2계층에 이어 3계층 네트워크 레이어중에 가장 유명하고 인터넷의 근간이 되는 IP네트워크에 대해 알아보려한다. 

 

IP네트워크는 위처럼 패킷 단위로 전송된다. 1, 2, 3, 4의 순서로 패킷이 전송되지만 속도에 따라 도착하는 순서는 위처럼 달라질 수 있다.순서를 맞춰주는 것이 TCP이고, UDP는 순서를 맞춰주지 않는다. TCP를 쓴다면 1,2,3,4로 도착할 것이고 UDP를 쓴다면 위의 그림과 같은 순서로 도착을 할 것이다.

 

R들은 Router로서 특정 포트에서 받은 패킷을 다른 특정 포트에 전달한다. 라우터의 인터페이스란(inteface) 라우터 장치에서 줄이 꽂혀있는 포트를 뜻한다.

네트워크 계층에는 가장 기본이 되는 IP외에도 이를 도와주는 IGMP, ICMP, ARP 등이 있다. 게임을 하면 속도와 관련된 ping이 어떠하다 라는 말을 많이 들을 수 있는데 위의 ICMP,ICMP가 바로 그 PING을 쓰는 프로토콜이다. 그리고 IP 프로토콜 경우 버전이 여러개 있는데 그 중 가장 유명한 IPv4, IPv6 중 IPv4를 가장 많이 쓴다.

 

http://www.tcpipguide.com/free/t_IPAddressSizeAddressSpaceandDottedDecimalNotation-2.htm

 

IPv4는 위처럼 주소를 32비트로 표현하고, 4바이트를 통해 특정 주소를 찾아간다. 227.82.157.177과 같은 각각의 바이트에 10진법으로 표현한 ip주소는 사람이 보기에 편하다. 하지만 기계 입장에서는 32비트를 바이너리(2진수)로 표현한 주소가 훨씬 읽기에 편리하고 빠르다. 결국 그래서 프로그래밍에서 타협을 보고 주로 사용하는 것 헥사데시멀이 된다.

 

결국 IPv4로 표현할 수 있는 주소의 경우의 수는 2의 32승이다. 즉, IP주소는 굉장히 제한된 자원임을 알 수 이다. 앞으로 개발 도상국에 더 많은 인터넷이 보급된다면 부족 현상이 더욱 심각해 질 것이다. 그에 대한 해결책으로 나타난 것이 바로 DHCP 서버인데 이를 설명하기 전에 Prefix와 Suffix를 먼저 알아보자.

 

 

 

Prefix와 Suffix는 쉽게 회사 안과 밖을 구분하는 것으로 보면 된다.

prefix는 부여받은, 정해진 숫자의 한 단체의 네트워크주소이다. 즉 이 주소만을 보고 어떤 회사인지 알 수 있게 된다. 그러므로 바깥에서는 prefix까지만 보고 전송이 가능하다.

반대로 Suffix는 호스트 주소이다. 회사 내부에서 특정 컴퓨터로 데이터를 전송하기 위해서는 그 컴퓨터의 주소를 하나한 찾아서 보내야한다. 그에 대한 호스트 주소가 바로 Suffix이다.

 

DHCP는 IP주소 부족 현상을 해결하기 위해, IP주소가 필요할 때 필요한 주소를 주고 안 쓸때 이를 다시 회수하는 것인데, 사실상 꺼지지 않으면 회수가 불가능하다. 그래서 요즘 DHCP를 결합해 사용하는 방식은 public IP가 아닌, private IP를 상대로 주고 뺏는 방식이다. 

 

https://gatsbyv.tistory.com/59

 

Public IP란 위의 Prefix와 같이 한정되게 부여받은 주소들이고, Private IP란 그 퍼블릭 IP안에서 내부적으로 많은 ip 주소를 찍어내는 방식이다. 한 퍼브릭 IP를 공유하여 내부적으로 많이 쓸수있도록 ip주소를 찍어내는 Private IP를 또 다시 외부주소로 바꾸어주는 것이 NAT, PAT이다. (NAT란 Network Address Translation, PAT는 Port Address Translation이다.)

 

서버 IP주소는 바뀔수있다. 예를 들어, 프로그램이 죽으면 다른 컴퓨터에서 바로 소프트웨어는 띄울수있지만 IP는 바뀌게 된다. 이는 도커, 쿠버네티스와 같은 서비스를 이용하면 경험 가능한데 즉, 프로그램에 ip주소를 정해놓고 박아서 짜면 망한다는 뜻이기도 하다...!

 

 

https://digitalmediaglobe.com/difference-between-classful-and-classless-addressing/

+) Slash Notation 체계는 슬래쉬 뒤의 32-n(비트)만큼의 컴퓨터를 관리하고 있다는 뜻이다. 즉 네트워크 주소가 너무 크면 내 영역안에서 쓸 수 있는 것이 작아지게 된다. 예로 12.24.76.8/20이라고 치면 이 단체가 운용할 수 있는 건 12비트, 2의 12승만큼의 주소 사용이 가능하게 된다. 

 

 

http://seojaikumar.blogspot.com/2015/06/domain-name-selection.html

하지만 우리는 IP주소가 아닌 도메인을 쓴다. 인간이 이해하기에 훨씬 편한 형태이기 때문이다. 이 도메인에도 주소를 표현하는 방식이 정해져있다는 사실을 알게되었다. 도메인은 오른쪽에서 왼쪽으로 이해하는 것이 맞다. 오른쪽이 가장 크고 중요한 정보가 먼저 들어가고 왼쪽으로 갈 수록 작은 정보들이 나오기 때문이다. http://www.domain-name.com  이라는 주소는 com 조직의 정체성 회사를 뜻하고, name 회사 이름, www 그 회사의 월드와이드맵임을 알린다. 이 기준을 적용해서 내 도메인을 만든다고 생각해보자. 내 회사이름은 marhava이고 내 이름은 suzy이다. 이런 경우 suzy.marhava순이 되어야하고 marhava.suzy가 되면 안된다.

 

 

그리고 이 도메인을 IP주소로 바꿔주는 것이 DNS(domain name system)이다. 다만 이 DNS 서버에 갔다오는 과정이 생각보다 오래걸리기 때문에, 우리가 도메인을 치면 브라우저는 밑에 추천 후보를 보여주는 것이 이미 서버에 들어가 미리 작업을 해놓게 되는 것이다.

 

+) 혹시 자신의 ip주소가 궁금하다면 cmd에서 ipconfig를 쳐보면 된다.

반응형