쉽게 정리해보는 네트워크 - 2

작은선생·2023년 12월 11일
post-thumbnail

TCP / IP

  • IP는 말그대로 컴퓨터의 주소이다. (택배 배송시 우리집의 주소라고 생각해도 좋다.)
  • TCP는 전송제어프로토콜을 뜻한다.

이제 우리가 구글에 들어가면 어떤 과정을 거치게 되는지 알아볼 것이다.

데이터는 총 4계층에 걸쳐서 만들어지며, 데이터는 캡슐화 & 역캡슐화를 거치게된다.

  • Request : 응용 → 전송 → 인터넷 → 이더넷 총 4단계를 거며 캡슐화를 진행해야 구글 서버에 접근 허용
  • Response : 이더넷 → 인터넷 → 전송 → 응용 역캡슐화를 진행해야 데이터를 읽을 수 있음.

응용 계층

데이터를 생성하는 주체역할을 한다.

데이터를 요청하기 위해 HTTP 데이터를 생성하는데, HTTP도 start-line, headers, body가 존재한다.

이러한 약속을 ‘프로토콜’이라고 부른다.

전송 계층

응용프로그램이 페이지 요청을 위해 HTTP 데이터를 운영체제에 전송

운영체제는 PORT 번호를 할당해 어떤 곳으로 전송되어야할지 명시한다.
(PID번호는 누구에게 보내는 것인지 확인)

인터넷 계층

단순히 ‘PORT’ 번호로는 데이터를 전송하는데 한계가 있다.

우리 동네 아파트는 총 4동이 있다고 가정해보자.

101동, 102동, 103동, 104동. 각 동에는 101호가 모두 존재한다.

따라서 우리는 101동 101호 라는 정확한 명시가 필요하고 이 역할을 인터넷계층이 해주며,

그 주소를 우린 IP라고 한다.

(특정 네트워크를 식별하기 위해서 IP 정보가 필요하다.)

네트워크 엑세스 계층

우연히 우리동네에 A아파트란 동일한 이름의 아파트가 존재한다고 가정해보자.

이럴때 우린 어떤 정보로 택배를 보낼까? 바로 지번주소다.

지번 주소는 완전히 동일할 수 없는 ‘고유주소’며, 네트워크의 ‘MAC 주소’를 뜻한다.

이더넷 프로토콜이 주소를 표기하기위해 ‘MAC 주소’를 사용한다고 보면 된다.

우린 이 과정까지 오게되면 전송 데이터가 보내질 정확한 위치를 알 수 있게 된다.

OSI 7계층으로보는 TCP/IP 4계층

  • 스위치 → L2 (2계층 장비, 데이터링크) MAC주소 식별하는 이더넷 프로토콜
  • 라우터 → L3 (3계층 장비, 네트워크) IP주소를 활용해 네트워크 경로식별

각 계층별 데이터

  • 실질적인 데이터는 응용계층의 프로토콜
  • 나머지 계층은 데이터를 올바른 목적지로 전달하기위한 용도

네트워크 엑세스 계층

최종 캡슐화가 완료된 상태인 ‘프레임’ 생성.

네트워크 장치를 식별하는 역할을한다. 대표적인 프로토콜은 이더넷 프로토콜

이더넷 프로토콜

유선 혹은 무선으로 연결된 장치에 접속하기위해 필요한 주소 → MAC 주소 (미디어 엑세스 컨트롤)

  • 목적지 MAC 주소 - 6bytes
  • 출발지 MAC 주소 - 6bytes

→ LAN 환경에서 어떤 컴퓨터에서 출발해 어떤 컴퓨터로 프레임을 전달할지 나타내는 주소

  • 상위계층 프로토콜 유형 - 2bytes 인터넷 계층의 프로토콜이 무엇인지 알고자 필요한 값. 프로토콜 별로 역할이 나뉨. 인터넷 계층에선 IP가 있다.
  • 페이로드 - 46 ~ 1500 bytes 인터넷 계층의 데이터인 패킷을 의미
  • MAC 주소 이더넷 프로토콜에서 중요한 점은 같은 네트워크 환경에서 컴퓨터를 찾을 수 있도록 해주는 것. 12개의 16진수로 이루어져있음.
    • 브로드캐스트 IP, MAC 주소에 포함되는 주소에 대한 규약. 주소 마지막 값을 ‘브로드캐스트’ 라고함. 모든 컴퓨터에 전달한다는 의미를 가짐. (유니캐스트, 멀티캐스트도 존재)
    • 스위치 네트워크 계층에서 이더넷 프로토콜을 사용하여 같은 네트워크에서 장치의 경로를 찾아주는 장치가 바로 스위치이다. 스위치로 같은 네트워크 내의 여러 컴퓨터를 연결할 수 있는데 각 컴퓨터 - 케이블간의 연결되는 곳을 ‘포트’라고 한다. 스위치는 포트와 MAC주소가 매핑되어 있는 MAC주소 테이블을 메모리에 가지고 있다. 이 테이블을 조회하여 목적지 MAC 주소를 확인해, 프레임을 포트로 전송할 수 있는 것.

인터넷 계층

특정 주소를 찾기 위해서 즉, 목적지 MAC주소를 찾기 위해서 우리는 네트워크에 질문할 수 있다.

인터넷은 어떻게 바로 목적지를 찾을까? 바로 ‘IP’를 활용하면 된다.

  • IP는 0 ~ 255 숫자로표현되며 총 4bytes 로 구성됨. xxx.xxx.xxx.xxx 형태로 구분 가능
  • IP 패킷구조 3가지
    1. 상위 프로토콜 - 1byte

      → 전송계층 TCP의 값은 0x06

    2. 출발지 IP주소 - 4byte

    3. 목적지 IP주소 - 4byte

      → NIC에 입력된 MAC 주소는 물리적주소, IP주소는 운영체제에 등록된 논리적주소

      즉, IP주소는 유동적으로 변경될 수 있다.

MAC & IP가 필요한이유.

  • MAC - 같은 네트워크 내
  • IP - 다른 네트워크

같은 네트워크 내에선 ‘스위치’를 활용하여 이동함. MAC 주소만으로 목적지 이동이 가능하다.
하지만, 다른 네트워크로 이동시엔 ‘라우터’를 활용해 IP 주소를 활용해야한다.

스위치가 MAC 주소 테이블을 가지고 있듯, 라우터도 라우팅 테이블을 가지고 있다.

모든 네트워크가 연결된 장치는 NIC (컴퓨터 - 네트워크 연결하는 인터페이스 역할) 장치가 필요하다.

라우터는 연결된 네트워크의 개수만큼 NIC를 가지며, “네트워크를 구분하는 관문”이란 뜻으로 “게이트웨이”라고도 불린다.

MAC & IP를 활용한 네트워크 간 이동.

  • 목적지 IP는 다른 네트워크에 있음.
  • 라우터는 네트워크 연결마다 NIC를 활용한 MAC 주소를 가지고있음.

  1. 최종 목적지로 가기위해 먼저 네트워크가 연결되어있는 라우터로 이동

  1. 아직 같은 네트워크 내에 있기 때문에 스위치 MAC 주소 테이블에 라우터 MAC주소 확인
  2. 프레임 역 캡슐화를 통해 목적지가 라우터 본인이라는 것을 확인

  1. 패킷 역 캡슐화를 통해 라우팅 테이블에 목적지 IP주소를 확인해 전송될 NIC를 결정

  2. 목적지 MAC 주소를 확인하는 과정 필요.

    1. ARP - 주소 결정 프로토콜

      IP를 통해 MAC 주소를 찾는 프로토콜 IP활용, MAC 활용을 모두 하기 때문에 인터넷 혹은 네트워크 엑세스 계층이라고도 불릴 수 있으며. OSI 3계층, 2계층 사이의 2.5계층이라고도 불림.

      IP 주소로 MAC 주소를 찾아야하기 때문에 비어있는 MAC 주소는 ‘브로드캐스트’로 채운다.

      스위치에 연결된 모든 컴퓨터로 ARP 프레임을 보내고, IP주소에 맞는 MAC 주소를 채운뒤, 다시 역으로 전송한다.

  3. 이런 과정을 거친 후에 라우터는 같은 네트워크에서 IP 주소로 MAC 주소를 찾은 후 목적지에 도달한다.

전송 계층

목적지에 도달한 프레임은 가장 많은 역할을 하는 곳에 도착하게 된다.

  • 출발지 & 목적지 포트

    네트워크에 연결된 응용프로그램을 찾을 때 사용하는 번호

    네트워크 통신을 필요로하는 모든 응용프로그램은 반드시 이 포트번호가 할당되어 있어야 한다.

    FTP의 포트번호가 21, 22

    HTTP의 포트번호가 80

    → 잘 알려진 포트정보라고 할 수 있다.

응용계층

진짜 ‘데이터’를 나타내는 계층이다.

응용계층은 정보를 요청&응답하는 응용프로그램의 존재가 반드시 필요하다.

웹 브라우저는 대표적인 웹 클라이언트이다.

웹 클라이언트와 웹 서버간의 통신을 가능하게 해주는 것이 바로 HTTP이다.

사례로 알아보는 네트워크 통신

[구글에 들어가면?]

  • www.google.com 을 들어가면, 우린 URL로 들어가 사이트를 방문할 수 있다. 하지만, html, css, js 와 같은 요소들은 어떻게 받아오는 것일까. 그 역할을 URL이 한다. MAC 주소 또한 IP 주소로 찾기 때문에 실질적으로 필요한 주소는 IP 주소이다. 하지만 우리가 아는 IP와 URL은 형식이 매우 다르다.

[왜 IP가 아닌 URL로 구성되나]

  • IP통신으로는 사용자들이 이용하기에는 불편함이 많았다. 예를 들어, IP로만 구글에 접속할 수 있다고한다면 우린 223.122.190.200:80 와 같은 형태로 입력해야한다. 하지만, 우리가 사용하는 웹 브라우저 혹은 사이트가 구글만 있는가? 수십 ~ 수백만개의 사이트를 모두 IP로 접근할 수 밖에 없다면 접근성이 매우 떨어질 것이다. 그래서 등장한 것이 바로 DNS이다.

[DNS의 등장]

  • Domain은 영역을 뜻하며, 모든 호스트의 IP주소를 영역별로 구분지어 이름을 부여하겠다란 뜻과 동일하다. . 을 활용해 영역을 구분하여 IP 주소를 이름으로 표현하도록 한 것. 각 영역마다 도메인 이름 서버를 계층적으로 두고, 최상위 - 최하위까지의 조회를 통해 IP주소 구분 가능하게 되었다. (host 방식의 부하 해결 & 확장성)

[URL]

  • 이제 어디로 들어갈지(목적지)를 찾을 수 있게 되었으니, 여러 파일들을 조회할 수 있어야한다.
    • https:// ⇒ 프로토콜
    • [google.com](http://google.com) ⇒ 도메인
    • [google.com/mail](http://google.com/mail) ⇒ 리소스경로 (/mail) (단, 실제 경로는 다를 수 있음. 예시를 위한 경로)

[URN]

  • 리소스 경로는 말 그대로 경로에 대한 명칭이기 때문에 리소스 위치가 변경됨에 따라 주소 경로도 변경되어야한다. 이러한 불편함을 최소화하기 위해 리소스에도 ‘고유한 이름’을 부여할 수 있게 되었다. 이름과 매칭되는 경로를 반환할 수 있게 된 것이다.

[통신]

  1. 가장 먼저 DNS를 활용해 IP 주소를 얻어야한다. 따로 DNS를 지정하지 않았다면, 운영체제는 같은 네트워크에 존재한다는 가정 하에 라우터로 DNS프로토콜을 보낸다.
  2. 라우터는 가입되어 있는 인터넷 통신사(SKT, KT, LGU+)의 DNS 서버로 보낸다.
  3. 목적지 IP 주소를 입력 후, MAC 주소를 활용해 프레임을 전달
  4. 네트워크가 같은지 외부인지 판단
    1. 내부라면, 내부 MAC 주소(스위치 MAC 주소 테이블)를 통해 목적지 IP를 구한다.

    2. 외부라면, 프레임 역 캡슐화를 통해 목적지의 NIC 주소를 확인하여 목적지 IP를 조회

      MAC 주소를 찾기 위해 ARP를 활용해, 해당 IP 주소를 탐색해 MAC주소를 알아내 역으로 전송한다.

      (이 과정에서 목적지 MAC 주소와, 브로드캐스팅이 디폴트 값으로 채워진다.)

    3. 라우터는 최종 목적지로 이동이 가능한 조건이 갖춰지며, 데이터는 전송된다.

  5. 포트정보를 통해 어떤 응용프로그램으로 도달할 지 결정
  6. 데이터가 전달 됨. (HTTP)

위의 개념과 아래부분을 차례대로 수행하게 된다면 우리는 실제로 구글에 접속해 구글 홈 화면을 보기까지의 단계를 수행한 것이다. 여러 중요한 요소가 있겠지만 역시 중요한 것은 데이터의 흐름이라고 생각한다.

MAC 주소로 이동과 IP주소를 활용해 목적지에 도달할 수 있단 사실을 아는 것이 중요하다.


참고자료

0개의 댓글