이노베이션 아카데미_42Seoul/오십보백보

오십보백보 netwhat 시작하기

한땀코딩 2020. 5. 20. 12:54

들어가기에 앞서

 인터넷은 일상적으로 사용하고 있지만 저는 개인적으로 아래 나오는 각종 네트워크 개념을 거의 처음 접했습니다. 전문적인 입장에서 작성한 글은 아니니, 생략되는 부분이나 간혹 잘못된 정보가 있을 수도 있으니 염두에 두시고 가볍게 읽어주시면 감사하겠습니다! 워낙 방대한 자료가 있다 보니 계속 링크를 타고 타고 들어가서 찾은 자료들이 섞여 있어 출처가 불명확할 수도 있는 점 또한 참고 부탁드립니다.

미션

ecole42의 과제 중 netwhat이라는 과제가 있는데, 이 과제에서는 아래의 질문들에 대한 답을 직접 찾고 문제를 풀게끔 안내하고 있습니다.

 

  • What is an IP address : IP 주소란 무엇인가?
  • What is a Netmask: 넷마스크란 무엇인가?
  • What is the subnet of an IP with Netmask: 넷마스크가 포함된 IP의 서브넷은?
  • What is the broadcast address of a subnet: 서브넷의 브로드캐스트 주소는?
  • What are the different ways to represent an ip address with the Netmask: 넷마스크가 있는 ip 주소의 표현 방법은 어떤 것들이 있는가?
  • What are the differences between public and private IPs: 사설, 공인 IP의 차이점은?
  • What is a class of IP addresses: IP주소의 클래스란?
  • What is TCP: TCP란?
  • What is UDP: UDP란?
  • What are the network layers: 네트워크 레이어란?
  • What is the OSI model: OSI모델이란?
  • What is a DHCP server and the DHCP protocol: DHCP 서버, 프로토콜이란?
  • What is a DNS server and the DNS protocol: DNS 서버, 프로토콜이란?
  • What are the rules to make 2 devices communicate using IP addresses: 2개의 기기가 IP주소를 이용해 소통하기 위한 규칙엔 어떤 것들이 있는가?
  • How does routing work with IP: IP 라우팅 동작 원리는?
  • What is a default gateway for routing: 라우팅 시 디폴트 게이트웨이란?
  • What is a port from an IP point of view and what is it used for when connecting to another device: IP에서 포트란 무엇이며, 기기끼리 연결할 때 어떤 식으로 사용되는가?

상당히 많은 개념들이 등장하는데, 위의 내용을 공부하기 위해 공부해야 하는 키워드는 대략 다음과 같습니다.

 

IP / public & private IP / IP classes / IP routing / port

Netmask(subnet mask) / broadcast address / CIDR notation

TCP / UDP / network layer / OSI model / DHCP / DNS

 

위 키워들을 중심으로 네트워크 입문에 필요한 내용을 정리하겠습니다.

IP

 컴퓨터를, 더 정확히는 인터넷에 접속해서 무언가 하다 보면 컴맹이라도 자주 접하는 용어 중 하나라고 생각합니다. IP라는 단어 자체는 Internet Protocol의 준말이며, 이름이 말해주듯 인터넷 사용에 있어 데이터(패킷)를 주고받는 것과 관련된 규약, 즉 프로토콜 중 하나입니다. 패킷이 어떤 식으로 작성되어야 하고, 주소를 어떻게 탐색할지에 대한 룰을 정해놓은 것이라 볼 수 있습니다.

 이후 설명될 또 다른 인터넷 통신 프로토콜 중 TCP(Transmission Control Protocol)라는 개념이 등장하는데, TCP가 데이터의 효율적인 전달(쪼개고 합치기)과 관련된 규칙을 담당한다면, IP는 이런 데이터를 어떻게 어디로 전달하면 되는지와 관련된 규칙을 담당한다고 생각하면 됩니다.

IP 주소

 흔히 IP라는 단어 뒤에 '주소'라는 말을 붙여 IP 주소라고 하는데, IP주소는 이런 프로토콜 안에서 데이터가 전송되어야 하는 곳의 주소를 지칭한다고 보면 됩니다. 건물마다 주소가 있듯이, 네트워크마다 (혹은 인터넷에 연결된 모든 컴퓨터마다) 고유의 주소가 있습니다.

 

IPv4 & IPv6

 위에 등장한 IP 주소 관련 개념들을 소개하기에 앞서, 모든 설명은 IPv4를 기반으로 설명될 예정이기에 IPv4에 대한 개념을 정리하고 넘어가겠습니다. IP주소의 표기 방법은 초창기에 IPv4라고 해서 아래와 같이 8비트 4개의 조합, 즉 총합 32비트로 이루어진 표기 방식을 사용했습니다.

255.255.255.255 192.168.0.1

 온점으로 구분된 숫자들을 '옥텟'이라고 부르며 8비트로 표기된 2진수의 10진수 표기법입니다. 그래서 사실 IPv4의 주소는 이렇게 적힌 걸 온점을 기준으로 10진수 변환한 것이라고 보면 됩니다.

11111111.11111111.11111111.11111111 (255.255.255.255)
11000000.10101000.00000000.00000001 (192.168.0.1)

 이렇게 옥텟은 비트로 이루어진 것을 이해해야 이후에 등장하는 서브넷 주소와 CIDR표기 방식에서 이해가 수월하니 찬찬히 훑어보시는 걸 추천합니다.

 이 표기의 가장 큰 문제라고 하면, 조합이 42억 개 정도에 불과하다는 점이었습니다. 현재 수많은 기기와 무수히 많은 네트워크가 동작하고 있는 인터넷 세상에서 IPv4 형식으로 작성된 42억 개의 IP주소는 이미 고갈 상태입니다. 이를 해결하기 위해 더 많은 조합이 가능한 IPv6로 옮겨가고 있다고 하지만, 아직은 IPv4에 의존하고 있고 아래의 개념들도 이렇게 부족한 주소를 해결하기 위해 탄생한 개념들이 많다 보니 참고하면 좋을 것 같습니다.

클래스

 클래스는 IP주소의 타입이라고 생각할 수 있습니다. 인터넷 초창기에는 원래 네트워크를 개인들에게 공개할 생각이 없었고, 그런 이유로 특정 용도에 따라 클래스를 구분 지어 놓은 역사가 있다고 합니다. 지금은 모두에게 인터넷 사용을 열어두었기 때문에 이런 클래스 구분이 무색해 보이지만, 그때는 인터넷이 있어야 하는 곳의 규모에 따라서 클래스를 구분했습니다.

IPv4에는 총 5가지 클래스가 있습니다: A, B, C, D, E.

 

  • A - A 클래스의 IP주소는 첫 번째 옥텟이 1 ~ 126. 사설 IP는 10.0.0.0 ~ 10.255.255.255.
  • B - B 클래스의 IP주소는 첫 번째 옥텟이 128 ~ 191. 사설 IP는 172.16.0.0 ~ 172.31.255.255
  • C - C 클래스의 IP주소는 첫 번째 옥텟이 192 ~ 223. 사설 IP는 192.168.0.0 ~ 192.168.255.255

 D와 E 클래스는 멀티캐스팅이나 정부 차원에서 사용하는 특수한 클래스라고 합니다. 그리고 우리가 흔히 localhost라고 지칭하는 127.0.0.1에서 127의 경우 엄밀히 따지자면 A 클래스에 속하겠지만, 보통은 자기 자신인 것도 참고하시면 좋을 것 같습니다. 이를 local loopback이라고 부릅니다.

 IP 주소의 클래스 구분은 단순히 첫 번째 옥텟의 숫자 범위만이 아니라 어디까지가 네트워크 id이고 호스트 영역인지를 구분하는 기준이 되기도 합니다. 아래에 색이 칠해진 부분이 각 클래스별 네트워크 아이디의 영역입니다.

Class A ____.____.____.____
Class B ____.____.____.____
Class C ____.____.____.____

 이렇기에 자연스럽게 클래스 A의 네트워크는 24비트의 조합만큼의 호스트를 포함할 수 있기 때문에 규모가 큰 기관에서 주로 사용했던 것으로 이해할 수 있습니다. 그리고 같은 로직으로 클래스 C의 네트워크는 소규모 기관에서 사용했던 것입니다.

사설 & 공인 IP

 위에서 클래스의 범위를 설명할 때, 사설 IP주소의 범위도 함께 설명했습니다. 공인 IP주소는 어떠한 네트워크가 갖는 고유한 주소, 사설 IP주소는 하나의 네트워크 안에서 주어지는 상대적인 주소입니다. 늘 단골로 등장하는 비유는 집 주소로, 무슨 시 무슨 구 무슨 로 몇 동 몇 호 같은 건 어디서 보든 한 곳을 가리키는 공인 주소이지만, 단순히 203호, 501호 같은 형태의 주소는 어떤 건물인지, 어떤 구인지에 따라 상대적입니다. 이것이 사설 IP주소라고 볼 수 있습니다.

 이런 개념의 탄생 배경은 IPv4가 할당할 수 있는 네트워크 수가 고갈되고 있고, 지금은 과거와 비교해 무수히 많은 기기가 인터넷에 접근해야 하기 때문입니다. 그래서 많은 부분을 각설하고 모두가 익숙한 와이파이의 개념으로 풀어보자면 공인 IP는 라우터의 주소, 사설 IP는 그 라우터에 연결된 각각의 기기의 주소입니다. 이렇게 하면, 우리 집에는 하나의 네트워크만이 연결되지만, 그 안에서 많은 기기가 고유한 주소를 가진 채로 그 네트워크를 통해 다른 네트워크와 소통할 수 있는 것입니다. 단, 다른 집의 다른 네트워크의 컴퓨터가 내 컴퓨터와 동일한 사설 IP를 가질 수 있습니다. 물론 그 두 컴퓨터의 공인 IP는 각자의 라우터가 받아오는 네트워크의 주소일 것이기 때문에 다르겠지만요.

 위에서 설명한 사설 IP주소의 범위는 일반적으로 사설 IP로 활용할 수 있도록 각각의 클래스에서 공인 IP로 사용되지 않게 분리해둔 주소입니다. 그래서 집 컴퓨터의 IP를 찾아보면 주로 192.168.0.으로 시작하는 주소를 볼 수 있는데, 이것이 바로 사설 IP주소입니다. 만약 온라인에서 내 컴퓨터의 IP주소 찾기를 했는데 이것과 다른 주소가 나온다면 혼란을 느끼지 않으셔도 됩니다. 그건 내 컴퓨터가 연결되어 있는 라우터의 공인 IP주소로, 외부에서 내 컴퓨터에 접근할 땐 그 주소가 필요한 것입니다.

포트 & NAT

 위의 설명대로라면 하나의 와이파이를 사용하는 모든 기기는 하나의 공인 IP주소를 갖게 됩니다. 이렇게 여러 기기가 하나의 네트워크(라우터)에 연결되어 있는 것을 LAN(Local-Area Network)라고 부릅니다. 그리고 라우터를 통해 연결되는 외부의 네트워크들이 모여 있는 것을 WAN(Wide-Area Network)라고 부르죠. 결국 인터넷은 거대한 WAN인 셈입니다.

 그렇다면 WAN을 통해서 우리 집 라우터의 공인 IP로 전송되는 데이터가 있을 때, 이것이 어떻게 딱딱 올바른 기기에게 전달되며 내 컴퓨터의 사설 IP와 공인 IP가 다른데 외부에서 접근할 수 있는지가 질문이 되겠죠? 사설 IP를 공인 IP와 매핑해주는 것은 NAT(Network Address Translation)입니다. 위에서 언급한 키워드는 아니기 때문에 NAT와 관련해서는 이 정도로만 두고 넘어가겠습니다.

 

Network address translation - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Protocol facilitating connection of one IP address space to another NAT for a private network Network address translation (NAT) is a method of remapping an IP address space into anothe

en.wikipedia.org

 그럼 IP가 변경된 것은 좋은데, 어떻게 특정 데이터는 내 컴퓨터로, 또 다른 데이터는 내 스마트폰으로 넘어가는 걸까요? 즉, 외부에서 어떻게 LAN 안에 있는 각각의 컴퓨터나 서비스에 접근할 수 있을까요? 이것은 포트와 관련이 있습니다.

 

Port forwarding - Wikipedia

Port forwarding via NAT router In computer networking, port forwarding or port mapping is an application of network address translation (NAT) that redirects a communication request from one address and port number combination to another while the packets a

en.wikipedia.org

 위키피디아에도 깔끔하게 한 줄로 정의되어있듯이, 포트 포워딩은 외부에서 LAN안에 있는 기기나 서비스에 접근할 때 사용되는 기술입니다. 각각의 IP는 여러 포트를 가지고 있습니다. 한마디로, 인터넷에서 무언가 들어올 수 있는 통로가 각각의 컴퓨터(혹은 기기)마다 여러 개 있다고 생각하면 쉽습니다. 그리고 우리의 라우터 또한 포트가 여럿 있습니다. 이럴 때, 우리가 사용하는 라우터의 특정 포트 번호로 들어오는 데이터를 LAN에 연결된 다른 IP주소의 특정 포트로 보내도록 지시하는 것이 바로 포트 포워딩입니다.

 

디폴트 게이트웨이

 게이트웨이라 함은, 다른 네트워크로 통하는 액세스 포인트로 이해할 수 있습니다. 라우터가 있다면, 그 라우터의 ip주소를 의미하게 됩니다. 정확히는 라우터의 사설 IP 주소일 것이고, 기본적으로는 가능한 호스트 중 가장 첫 번째입니다. 만약 내 컴퓨터의 사설 IP주소가 192.168.0.4라고 했을 때, 디폴트 게이트웨이는 192.168.0.1 인 것이죠. 디폴트 게이트웨이를 주소창에 치고 접속하면 라우터 설정으로 넘어가게 됩니다.

서브넷

 네트워크와 IP주소의 기본 원리가 어느 정도 그림이 그려진다면, 약간은 다른 개념인 서브넷으로 넘어가 보겠습니다. 서브넷은 말 그대로, 작은(혹은 아래의) 넷, 즉 하나의 네트워크를 쪼개 만든 네트워크입니다. 하나의 네트워크는 또 한 번 여러 서브넷으로 나뉠 수 있습니다.

네트워크를 굳이 왜 조각내어 관리하는 것일까요? 이에 대해선 우선 성능면에서 다음과 같은 장점이 있습니다.

 

  • 보안
  • 관리
  • 속도 & 성능

 예를 들어 회사 안에서 하나의 네트워크로 모든 기기가 연결되어 있다고 가정해봅시다. 어떤 부서 때문에 네트워크를 통제해야 할 때, 모두 하나의 네트워크 안에 있으니 모두가 영향을 받게 됩니다. 이렇게 하는 대신, 부서마다 네트워크를 일정 부분 떼어주고 알아서 관리하게 하면 관리도 편하고 서로 영향을 주지 않고 접속하지 못하니 부서 간의 보안도 보장이 되는 그런 원리입니다.

 그런데 개인적으로 의문이 들었던 부분은 그냥 새로운 네트워크를 할당받으면 되는데 왜 이렇게 쪼개는 방식을 택했을까였습니다. 이는 결국 IPv4의 고갈과도 또 관련이 있습니다. 앞서 설명한 LAN, NAT 또한 부족한 IPv4 주소를 어떻게든 모든 기기가 사용하여 인터넷에 연결하기 위한 방법 중 하나이듯, 서브넷도 마찬가지입니다. 이를 조금 더 세부적으로 살펴보기 위해서는 넷마스크, 혹은 서브넷 마스크가 무엇이며 이를 표기하기 위한 방법인 CIDR를 살펴보면 이해에 도움이 됩니다.

서브넷 마스크

 앞서 보았던 클래스 C를 기준으로 설명해보겠습니다. 클래스의 기준은 맨 앞의 옥텟의 숫자가 다른 것도 있지만, 몇 번째 옥텟까지가 네트워크 아이디를 결정하는지에서 차이를 보입니다. 네트워크 아이디의 영역이 길 수록, 해당 네트워크의 호스트 수는 당연히 적을 수밖에 없죠. 서브넷 마스크는 이렇게 IP주소를 읽을 때 어디까지가 네트워크 아이디인지를 알려주는 척도가 됩니다.

192.168.0.1 (주소)
255.255.255.0 (서브넷 마스크)

 클래스 C라면 192.168.0까지가 네트워크 ID, 뒤에 1이 호스트 ID가 됩니다. 즉, 옥텟 3개까지가 네트워크 ID로서 유효하다는 뜻입니다. 그렇기에 하단에 적힌 255.255.255.0 이 클래스 C의 서브넷 마스크가 됩니다. 간단하게 해석하자면, 서브넷 마스크를 2진수로 풀었을 때 1인 자릿수까지 실제 IP주소에서 네트워크 ID 영역이라는 의미입니다. 그래서 클래스 A라면 255.0.0.0, B라면 255.255.0.0 이 됩니다.

11000000.10101000.00000000.00000001 (192.168.0.1)
11111111.11111111.11111111.00000000 (255.255.255.0)

 그런데 이렇게만 하면 어떤 문제가 있을까요? IPv4의 주소 수는 부족한데, 낭비되는 주소가 생깁니다. 클래스 C의 경우 대략 250개 정도의 호스트를 보유할 수 있는데, 어떠한 기관에서 예를 들어 100개 정도의 호스트만 감당할 수 있는 네트워크를 필요로 한다고 가정해봅시다. 클래스로만 구분된 네트워크로만 할당을 하자니 제일 작은 클래스 C의 호스트 수는 벌써 200개가 넘습니다. 이러면 100 이상은 사용되지도 못하고 낭비되는 것입니다. 그럼 이걸 한번 더 쪼개면 좋지 않을까요? 이런 발상에서 시작한 것이 바로 CIDR(Classless Inter-Domain Routing)입니다.

CIDR

 Classless Inter-Domain Routing, 이름에서 보이듯이 클래스로만 구분된 네트워크의 한계를 극복하기 위한 수단으로 개발되었습니다. 기존의 클래스만을 이용하면 서브넷 마스크는 8자리 단위로만 끊기게 되어 낭비되는 것이 많습니다. CIDR을 이용하면 네트워크 ID로 사용하는 범위를 자유롭게 표기할 수 있게 되어 네트워크를 조금 더 세부적인 단위로 쪼갤 수 있습니다. 서브넷과 CIDR는 결국 네트워크를 자른다는 의미로 같은 것으로 볼 수 있고, 다만 CIDR는 특수한 표기법을 따릅니다. 위에서 보았던 클래스 C의 ip 주소와 서브넷 마스크를 다시 살펴보겠습니다.

192.168.0.1 (주소)
255.255.255.0 (서브넷 마스크)

 이런 서브넷 마스크를 갖는 주소는 CIDR로 표기하면 아래처럼 적게 됩니다.

192.168.0.1/24

 슬래시 뒤에 적힌 숫자는 몇 개까지의 비트가 네트워크 id로서 유효한지를 의미하게 됩니다. 기존의 클래스로만 구분한다면 뒤에 따라오는 숫자는 8, 16, 24 정도였겠지만 CIDR에서는 17, 25 등으로도 표기할 수 있습니다. 그렇다면 /15 의 경우 호스트 범위가 어떻게 될까요?

158.167.18.156/15

 이렇게 생긴 주소가 있다면 다음과 같이 풀어볼 수 있습니다.

10011110.1010011 1.00010010.10011100 (158.167.18.156)
11111111.1111111 0.00000000.00000000 (15)

 즉 앞의 15개를 제외한 나머지 비트들로 호스트 범위가 결정이 되는 것입니다. 즉, 158.167.18.156 이라는 주소가 속해있는 네트워크의 호스트 범위는 다음과 같습니다.

10011110.1010011 0.00000000.00000001 (158.166.0.1)
~
10011110.1010011 1.11111111.11111110 (158.167.255.254)

 호스트 영역이 모두 0이거나 (158.166.0.0) 1인 (158.167.255.255)가 범위에 속하지 않는 이유는, 전자는 네트워크 자체의 주소, 후자는 브로드캐스트 주소이기 때문이라고 합니다. 참고로, 브로드캐스트 주소란, 해당 네트워크 모든 호스트에게 정보를 전달할 때 사용되는 주소라고 합니다. 네트워크의 주소는 가장 앞, 브로드캐스의 주소는 가장 뒤라고 생각하면 쉽습니다. 보통 라우터는 이 둘을 제외한 호스트 범위 중 가장 앞에 것일 가능성이 높은 점도 참고하세요!

OSI 모델

 

OSI 모형 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 OSI 모형의 통신 (3-5계층의 예) OSI 모형(Open Systems Interconnection Reference Model)은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네�

ko.wikipedia.org

 OSI모델은 컴퓨터 네트워크와 관련하여 각종 프로토콜과 관련 기술을 계층으로 분리하여 정리한 것이라고 쉽게 생각할 수 있습니다. 위에서 상세하게 설명하진 않았지만, 이름 그대로 프로토콜은 일종의 규약 혹은 약속입니다. 네트워크를 통해 통신하기 위해 모두가 동일한 규칙 아래 움직이기 위해 약속을 하는 것입니다.

 네트워크는 워낙 방대하고 복잡한 과정을 거치기 때문에 하나의 규정 아래 모든 과정을 욱여넣는 것이 아니라 역할에 따른 여러 계층으로 나누어 정리하고 있습니다. 이렇게 한다면 통신 중 문제가 발생할 때, 문제가 일어나는 부분만을 살펴보면 되니 유용합니다. 이런 식으로 계층을 나누어 정리한 모델 중 하나가 OSI 모델이고 OSI 모델은 다음 일곱 가지 계층(레이어)으로 구성되어 있습니다. (각 레이어에 대한 설명은 위키피디아에서 명시하고 있는 것을 기준으로 작성되었습니다.)

 

1 - 물리 계층(Physical layer)

하드웨어 전송 기술과 관련이 있습니다.

 

2 - 데이터 링크 계층(Data link layer)

네트워크 위의 개체들 간 데이터를 전달하고, 물리 계층에서 발생할 수 있는 오류를 찾아내고, 수정하는 데 필요한 기능적, 절차적 수단을 제공합니다.

 

3 - 네트워크 계층(Network layer)

여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층으로 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공합니다. 즉, 어디로 연결이 되어야 목적지에 도달할 수 있을지를 고민하고 패킷을 전송하는 것과 관련된 계층이라고 할 수 있습니다. 그런 이유로 라우팅이나 IP도 이 계층의 프로토콜에 속합니다.

 

4 - 전송 계층(Transport layer)

사용자 간의 데이터 흐름과 관련된 계층입니다. 이 계층에 속하는 대표적인 프로토콜이 바로 TCP, UDP입니다.

 

5 - 세션 계층(Session layer)

양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공합니다. TCP/IP 세션을 만들고 없애는 책임 도한 세션 계층의 몫입니다.

 

6 - 표현 계층(Presentation layer)

코드 간의 번역을 담당합니다. 인코딩, 압축 암호화 등이 이 계층과 관계가 있습니다.

 

7 - 응용 계층(Application layer)

실제 사용자와 맞닿아있는 서비스를 구현하기 위한 프로토콜의 모음이라고 생각하면 쉽습니다. 구체적으로는 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행합니다. 일반적인 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공합니다. 대표적인 예시로는 DNS, DHCP, HTTP, HTTPS, FTP, SSH, Telnet 등이 있습니다.

TCP & UDP

 TCP는 Transmission Control Protocol, UDP는 User Datagram Protocol의 준말로 두 프로토콜 모두 데이터 전송(패킷 전송)과 관련이 있습니다. 이 글에선 세부적인 동작에 대한 설명 대신 두 프로토콜의 큰 특징을 비교하고자 합니다. 아주 간단하게 말한다면, TCP는 정확도와 보안을 중요하게 생각하는 대신 속도가 느리고, UDP는 정확도나 보안을 포기하는 대신 속도가 굉장히 빠르다고 볼 수 있습니다. 아래 링크에서 표로 정리된 부분을 가져와 간단하게 번역하면 아래와 같습니다.

 

TCP vs UDP: What's the Difference?

Wireshark is a widely used network monitoring and WiFi troubleshooting tool. However, with...

www.guru99.com

TCP UDP
연결형 프로토콜 비연결 프로토콜
기기와 기기간 일대일 소통 연결이 불필요하기에 일 대 다 전송 가능
데이터 패킷 순서 기억 패킷은 모두 독립적. 순서는 따로 기억하지 않음
속도가 느림 속도는 빠르며 에러 복구는 없음
헤더 사이즈: 20 바이트 헤더 사이즈: 8 바이트
무거움. 데이터 전송 전 3개의 패킷을 이용하여 소켓을 연결해야함 가벼움. 연결을 트래킹하지 않음
에러를 체크하고 복구 또한 시도
에러 체크를 하지만 문제가 있는 패킷은 버림
SYN, SYN-ACK, ACK 같은 핸드쉐이크 프로토콜 사용
핸드쉐이크 없음.
목적지로 데이터 전송을 보장
데이터 전송을 보장하지 않음
플로우 컨트롤 제공을 통해 에러 핸들링이 가능
하나의 에러 체크 시스템만을 보유
브로드캐스팅 불가 브로드캐스팅 가능

DNS & DHCP

 앞서 살펴본 7번째 계층인 응용 계층을 살펴보면 DNS, DHCP라는 것이 있습니다. Domain Name Server와 Dynamic Host Configuration Protocol의 준말이며 이 둘 모두 IP주소를 어떠한 이름과 연결해주는 것과 관련이 있습니다. 브라우저창에 머리 아프게 숫자를 입력하지 않고도 www.google.com 이나 intra.42.fr 을 입력하여 구글과 42의 서버에서 제공하는 서비스에 접근할 수 있게 해주는 것이죠.

 

DNS

 DNS는 특정 주소명을 IP주소로 전환하는 것을 담당합니다. www.google.com이라는 걸 입력받으면 .com 서버에 해당 주소가 어떤 IP주소와 연결되어 있는지를 찾아 그 주소의 데이터를 우리가 접근할 수 있도록 연결을 도와줍니다. DNS가 구체적으로 어떤 절차를 거쳐 이름과 IP주소를 연결시켜주는지는 (이 과정을 Domain Name Resolution이라고 합니다) 아래 링크에 쉽게 서술되어 있으니 관심이 있으시면 읽어보시길 추천드립니다.

 

What is Domain Name System and what is the purpose of the DNS?

Domain Name System - DNS. What is the role of a DNS server? Recursive DNS servers, Root name servers, TLD name servers and Authoritative DNS servers.

www.cloudns.net

DHCP

 그럼 DHCP는 정확히 무엇일까요? DHCP는 애초에 어떤 IP주소를 특정 웹사이트의 이름에 할당해줄지를 결정하는 프토콜입니다. 웹사이트를 만들 때 IP주소를 고정할 것 같지만, 실제 IP주소의 할당은 생각보다 훨씬 '동적'입니다. 하나하나 주소를 다 고정시키기엔 손도 많이 가고, 무엇보다 위에서부터 끊임없이 이야기해오던 주소 고갈의 문제가 있습니다. 그래서 고안한 방법이, 현재 사용 중이지 않거나 대여 기간이 끝난 IP주소는 또 다른 곳에 할당을 해주는 것입니다. 이렇게 DNS가 전달받은 이름을 IP주소와 매치시키기 전에 애초에 할당을 해주는 과정과 관계된 것이 DHCP입니다. DHCP 서버와 연동만 되어 있다면 이런 일련의 과정이 모두 자동화될 수 있는 것이 장점이라고 합니다.

 

What is DHCP? How does the DHCP server work? - ClouDNS Blog

The DHCP server provides automatic IP assignment. After the introduction of DHCP, IT specialists are saving countless hours managing networks.

www.cloudns.net

회고 RETROSPECT

 네트워크가 워낙 광범위한 주제다 보니, 하나를 공부하면 열을 알아야 하는 어려움이 있었습니다. 결국 구체적으로 어떤 기술이 사용 목적을 알고 싶다면 인터넷, 나아가 통신의 역사까지 알아볼 수밖에 없는 것 같습니다. netwhat 과제에서는 엄청 구체적인 내용을 익히기를 기대하진 않지만, 여기서 파생되어 익혀야 하는 내용에는 http나 ssh 등도 있는 것 같습니다. 기회가 된다면 계속 학습해나가면서 글로 남겨볼까 합니다.

 사실 단순히 과제를 통과하는 차원에서는 이렇게까지 정리는 필요 없는 거 같습니다. 기출문제도 많고, IP계산기도 많기 때문에 대충 숫자가 어떤 식으로 구성되는가만 이해해도 퀴즈는 금방 풀 수 있습니다. 그래도 개인적으로는 처음 접하는 개념이고 문제를 풀면서도 '이걸 도대체 왜 하는 거지?'라는 의문이 남아서 구글과 유튜브를 열심히 뒤져가면서 공부를 한 것 같습니다. 저처럼 네트워크라는 주제에 대해 아는 것이 하나도 없었던 분들이 있다면, 이 글을 통해 조금이나마 궁금증이 해소됐기를 기대해봅니다.

그 외 이것저것

netwhat과제 통과가 목표이신 분들이 있다면 기출문제 관련 레포를 첨부합니다. 네트워크 개념만 궁금하셨던 분들이라면 무시해주세요 ;)

 

365kim/42_cursus

@42Seoul. Contribute to 365kim/42_cursus development by creating an account on GitHub.

github.com

 

 

adblanc/netwhat42-train

Script pour s'entraîner sur netwhat 42 / Training script for netwhat 42 project - adblanc/netwhat42-train

github.com

그리고 문제 풀 때 활용하면 유용한 IP 계산기 (서브넷마스크에 따른 호스트 범위 같은 것도 계산해줍니다!)

 

IP Calculator / IP Subnetting

 

jodies.de

 

 

written by sohpark@student.42seoul.kr