요즘IT
위시켓
최근 검색어
전체 삭제
최근 검색어가 없습니다.

이전 글 ‘주니어 개발자를 위한 엄청 쉬운 TCP/IP 4계층 이야기’에서, 컴퓨터와 컴퓨터의 통신이 올바르게 이루어지기 위해 데이터가 각각 어떤 계층에서 캡슐화되어야 하는지 알아보았습니다. 또한 데이터가 목적지에 정확히 전달되기 위해 계층별로 어떠한 프로토콜(약속)로 구성되어 있는지도 간단히 알아보았습니다. “응용, 전송, 인터넷, 네트워크 액세스 순으로 캡슐화”라는 큰 개념만 알아보았다면, 이번 시간에는 앞서 언급한 각 계층의 대표적인 프로토콜들에 대해 좀 더 알아보고, 각 프로토콜이 네트워크에서 어떻게 이용되는지 확인해 보겠습니다.

회원가입을 하면 원하는 문장을
저장할 수 있어요!

다음

회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!

확인

개발

주니어 개발자를 위한 TCP/IP 주요 프로토콜 알아보기

년차,
어떤 스킬
,
어떤 직무
독자들이 봤을까요?
어떤 독자들이 봤는지 궁금하다면?
로그인

이전 글 ‘주니어 개발자를 위한 엄청 쉬운 TCP/IP 4계층 이야기’에서, 컴퓨터와 컴퓨터의 통신이 올바르게 이루어지기 위해 데이터가 각각 어떤 계층에서 캡슐화되어야 하는지 알아보았습니다. 또한 데이터가 목적지에 정확히 전달되기 위해 계층별로 어떠한 프로토콜(약속)로 구성되어 있는지도 간단히 알아보았습니다. “응용, 전송, 인터넷, 네트워크 액세스 순으로 캡슐화”라는 큰 개념만 알아보았다면, 이번 시간에는 앞서 언급한 각 계층의 대표적인 프로토콜들에 대해 좀 더 알아보고, 각 프로토콜이 네트워크에서 어떻게 이용되는지 확인해 보겠습니다.

 

들어가기 앞서, 용어 정리를 하고 가겠습니다. 앞으로 “데이터”는 우리가 앞서 배운 4계층 중 ‘응용계층’의 프로토콜을 지칭하도록 하겠습니다. 그리고 각 계층의 캡슐화된 데이터를 부르는 명칭을 아래와 같이 정리하겠습니다.

 

캡슐화된 데이터
그림 1, 캡슐화된 데이터의 명칭 (출처: 작가)

 

정리가 필요한 이유는 두 가지가 있습니다. 하나는 매번 데이터라고 부르면 어떤 계층의 데이터인지 구분이 힘들기 때문입니다. 제가 패킷이라고 하면 “아, 인터넷 계층까지 캡슐화된 데이터, 줄여서 인터넷 계층 데이터”라는 의미로 이해하시면 됩니다. 두 번째 이유는 실제로 우리가 네트워크를 통해 주고받고자 하는 실질적인 데이터는 응용계층의 프로토콜이고, 나머지 계층은 데이터를 올바른 목적지에 전달하기 위한, 특정한 용도로 사용되기 때문입니다.

 

 

네트워크 액세스 계층

네트워크로 나가기 전, 최종 캡슐화가 완료된 상태인 “프레임”을 만드는 계층입니다. 프레임으로 캡슐화하는 만큼, 프레임을 역캡슐화도 가능한 계층입니다. 앞서 저는 실질적으로 우리가 필요한 데이터인 응용계층 데이터를 제외하면 나머지 계층은 특정한 용도로 사용된다고 설명했습니다. 그렇다면, 프레임을 통해 할 수 있는 것은 무엇일까요? 지난 글에서 잠깐 이야기를 했었습니다. 바로, 같은 네트워크 (LAN)에서 네트워크 장치식별하는 역할입니다. LAN에서의 장치를 식별하는 네트워크 액세스 계층의 가장 대표적인 프로토콜은 “이더넷” 프로토콜입니다.

 

이더넷 프로토콜

그렇다면, 서로 다른 장치를 식별할 수 있는 특정한 값이 필요할 것입니다. 그래야 구분이 가능하기 때문이죠. 미디어 액세스 컨트롤(MAC) 주소가 바로 그것 역할을 합니다. 미디어, 즉 유선, 무선으로 연결된 장치들에 접속하기 위해 필요한 주소라는 의미입니다.

 

이더넷 프로토콜 프레임 구조
그림 2-1, 이더넷 프로토콜 프레임 구조 (출처: Wikipedia)

 

위의 이미지에서 지금 당장 알아야 할 네 가지만 말씀드리겠습니다.

  1. 목적지 MAC 주소 (MAC destination) – 6bytes
  2. 출발지 MAC 주소 (MAC Source) – 6bytes
  3. 상위계층 프로토콜 유형 (EtherType) – 2bytes
  4. 페이로드 (Payload) – (46 ~ 1500)bytes

 

  • 목적지, 출발지 MAC 주소

LAN환경에서 어떤 컴퓨터에서 출발하여 어떤 컴퓨터로 프레임을 전달할지를 나타내는 주소입니다.

 

  • 상위계층 프로토콜 유형

계층별로 다양한 프로토콜이 존재하듯, 상위 계층, 여기서는 인터넷 계층의 프로토콜이 무엇인지 알고자 필요한 값입니다. 프로토콜 유형 별로 할 일이 달라지기 때문입니다. 현재 우리가 알고 있는 인터넷 계층의 프로토콜은 IP(인터넷 프로토콜, 0x0080)가 있을 것입니다. 

 

  • 페이로드

상위 계층의 데이터, 즉 여기서는 네트워크 액세스 계층 상위에 있는 인터넷 계층의 데이터인 패킷을 의미합니다. 

※ 각 계층의 캡슐화된 데이터는 모두 상위 계층의 페이로드를 가지고 있겠지요? 응용계층을 제외한다면 말입니다.

 

  • MAC 주소

이더넷 프로토콜에서 가장 중요한 것은, 같은 네트워크 환경에서 컴퓨터를 찾을 수 있도록 해주는 MAC 주소입니다. 여기서 MAC 주소에 대해 간단하게 알아만 보고 넘어가겠습니다. 우리에게 필요한 것은 전체적인 흐름을 머리속에서 그려내는 것입니다. 그 뒤에, 더 상세하게 알고 싶다면 찾아보면 되는 것입니다!

 

MAC 주소는 12개의 16진수(‘0’ ~ ‘F’, 4bit), 즉 48bit = 6bytse로 이루어져 있다는 사실과, 주소에 대한 특별한 약속 하나만 알고 넘어가겠습니다.

 

MAC 주소
그림 2-2, MAC 주소 모습 (출처: 작가)

 

  • 브로드캐스트

지금부터 나올 모든 주소에는 약속이 있습니다. MAC 주소, IP 주소 모두 포함되는 내용입니다. 바로, 모든 주소의 마지막 값은 브로드캐스트를 의미합니다. 모든 컴퓨터에게 전달한다는 의미라는 것입니다. MAC 주소를 예로 든다면, FF:FF:FF:FF:FF:FF를 의미합니다. 반대의 의미로는 특정 컴퓨터에게 전달하는 유니캐스트가 있고, 특정 그룹에만 전달하는 멀티캐스트가 있습니다만, “브로드캐스트는 전체 전달”이라는 내용만 받아들이고 넘어가겠습니다.

 

  • 스위치

이전 글에서 설명했듯, 계층별 프로토콜을 해석하는 장치가 있다고 말씀드렸습니다. 네트워크 액세스 계층에서 이더넷 프로토콜을 사용하여 같은 네트워크에서 장치의 경로를 찾아주는  장치로는 대표적으로 스위치가 있습니다. 스위치에는 같은 네트워크에 존재하는 컴퓨터들이 여러 대 연결될 수 있는데요. 컴퓨터마다 스위치로 케이블이 연결되는 곳을 포트라고 부릅니다.

 

스위치의 포트
그림 2-3, 스위치의 많은 포트 (출처: Wikipedia)

 

스위치는 포트와 MAC 주소가 매핑 되어있는 MAC 주소 테이블을 메모리에 가지고 있습니다. 이 테이블을 검색하여 목적지 MAC 주소를 확인 후, 프레임을 포트로 전송할 수 있는 것이지요. 단순히 프레임의 전달에만 관여하는 특수한 장치로서 별도의 MAC 주소를 가지는 NIC는 없습니다.

 

MAC 주소 테이블
그림 2-4, MAC 주소 테이블 (출처: 작가)

 

지금까지는 프레임의 출발지, 목적지 MAC 주소가 있다는 가정하에 설명을 드렸습니다. 프레임은 컴퓨터의 NIC에서 생성됩니다. 출발지 MAC주소는, 보내는 컴퓨터의 NIC에 있는 고유한 MAC 주소로 값을 채울 수 있을 것입니다. 그렇다면 목적지 MAC 주소는 어떻게 값을 채워야 할까요?

 

 

인터넷 계층

현실에서 우리가 요즘IT를 운영하는 ㈜위시켓 건물의 주소를 찾고자 한다면 어떻게 해야 할까요? 위시켓에 전화를 걸거나, 네이버에 물어보면 될 것입니다. 이와 마찬가지로 목적지 MAC 주소를 찾기위해 우리는 네트워크물어보면 됩니다.

 

무수히 많은 네트워크들이 연결되어있는 인터넷에서 어떻게 특정 컴퓨터를 찾을 수 있을까요? 바로 인터넷에서 장치들을 식별할 수 있는 주소인 IP(인터넷 프로토콜) 주소를 이용하면 되는 것입니다. IP주소는 인터넷에서 각 컴퓨터가 가지는 이름이라고도 볼 수 있는 것입니다. 이 IP는 인터넷 계층의 대표적 프로토콜입니다. 

 

Internet Protocol Version 4(IPv4)

이번엔, 인터넷에서 무언가 식별을 필요로 할 경우 사용하는 IP에 대해 간단하게 알아보겠습니다. IP에도 여러 버전이 있지만, 우리는 그 중에서 아직까지 전세계 네트워크에 널리 사용되고 있는 IPv4에 대해 알아보겠습니다. 이하 IP는 IPv4로 이해하시면 됩니다.

 

IPv4 패킷 구조
그림 3. IPv4 패킷 구조 (출처: Wikipedia)

 

IP 패킷 구조 속에는 많은 정보가 있지만 우리는 3가지만 보겠습니다.

  1. 상위 프로토콜 (Protocol) – 1byte
  2. 출발지 IP 주소 (Source IP Address) – 4bytes
  3. 목적지 IP 주소 (Destination IP Address) – 4bytes

 

  • 상위 프로토콜

이더넷 프로토콜 구조의 상위 프로토콜 유형과도 동일한 의미를 가지는 값입니다. IP가 가질 수 있는 프로토콜 목록을 참고하면 되겠습니다. TCP/IP 모델인 만큼 상위 계층, 즉 전송계층TCP 값은 0x06 입니다.

 

  • 출발지, 목적지 IP 주소

모든 네트워크에 연결된 장치들은 인터넷 환경에서 식별될 수 있는 이름, IP 주소를 가진다고 하였습니다. MAC 주소NIC라는 하드웨어에 입력되어있는 주소, 즉 물리적인 주소라면 IP 주소운영체제라는 소프트웨어에 의해 관리되는 주소, 즉 논리적인 주소라고 볼 수 있습니다. 논리적인 주소이니 당연하게도 영구적인 값이 아닌, 변경될 수 있는 값입니다.

 

  • IP 주소

이번엔 IP 주소에 대해서 간단하게 알아보겠습니다. 0 ~ 255의 숫자를 표현할 수 있는 8bits(=1byte)를 온점(.)으로 구분한 4개, 총 4bytes로 구성되어 있습니다.

 

IP 주소 모습
그림 4-1. IP 주소 모습 (Internet Protocol Specification) (출처: 작가)

 

IP 주소에 대한 설명을 드리고 싶은 내용이 너무 많지만 다 담을 수 없어 우선 여기서는, 1byte가 4개로 구분되어 있는 형태로 구성돼 있다는 것만 알아보고 넘어가도록 하겠습니다.

 

IP 주소 또한 네트워크에 연결된 모든 장치에 부여되는 값입니다. 그럼, ‘왜 주소가 2개(MAC, IP)나 필요한가?’ 하는 궁금증이 있을 수 있습니다. 이는 이전에도 언급했던 MAC 주소와 IP 주소에 쓰이는 범위가 다르기 때문인데요. MAC 주소 = 같은 네트워크, IP 주소 = 다른 네트워크라고 설명을 드렸습니다.

 

주소라는 것은 목적지로 데이터를 이동시킨다는 의미를 품고 있으니, 이는 같은 네트워크 주소에서 데이터를 이동시킬 때는 MAC 주소, 다른 네트워크로 데이터를 이동시킬 때는 IP 주소를 사용한다고도 해석할 수 있겠습니다. 그럼 한 가지 예를 살펴보겠습니다.

 

그림 4-2. 같은 네트워크 에서의 목적지 찾기 (출처: 작가)

 

그림 4-2는 같은 네트워크에서 MAC 주소를 통해 스위치가 올바른 목적지로 데이터를 전달할 수 있는 상황입니다. 자, 그렇다면 MAC 주소로 다른 네트워크로 찾아갈 수 있을지 확인해볼까요?

 

MAC 주소로 다른 네트워크 목적지 찾기 실패
그림 4-3. MAC 주소로 다른 네트워크 목적지 찾기 실패 (출처: 작가)

 

같은 네트워크(LAN)에서의 이동은 네트워크 액세스 계층 장비, 스위치를 통해서 이루어진다고 하였습니다. 그렇다 보니 스위치에 00:00:00:CC:CC:CC라는 다른 네트워크에 존재하는 MAC 주소가 MAC 주소 테이블에 등록 되어있지 않아서 목적지로 프레임이 전달될 수가 없는 것입니다.

 

그렇다면 어떻게 다른 네트워크로 프레임을 전달할 수 있을까요? 바로 IP와 라우터를 사용하여 다른 네트워크로 전달하는 것입니다.

 

  • 라우터

같은 네트워크스위치를 통해 이동한다면, 다른 네트워크라우터를 통해 이동합니다. 그렇다면 스위치가 MAC 주소 테이블을 가지고 있듯, 라우터 또한 IP 주소 테이블을 가지고 있습니다. 이 테이블을 사용하여 경로를 찾는다는 의미로 라우팅 테이블이라 부릅니다.

 

다른 네트워크 장치로의 이동
그림 5-1. 다른 네트워크 장치로의 이동 (출처: 작가)

 

모든 네트워크에 연결된 장치는 NIC, 컴퓨터와 네트워크를 연결해주는 인터페이스와 같은 장치가 필요하다고 하였습니다. 컴퓨터는 일반적으로 1개의 NIC만 가지고 있지만, 라우터는 연결된 네트워크의 개수만큼 NIC를 가집니다. 즉, 라우터가 “네트워크구분하는 관문과 같다” 하여 게이트웨이라고 부르기도 합니다. NIC가 있다는 건, MAC 주소도 있다는 이야기이고, 이는 라우터 또한 같은 네트워크 환경에 속해 있다는 의미이기도 합니다.

 

그림 5-1은 같은 네트워크에서 MAC 주소로 이동하는 것과 같은 상황입니다. 다만 다른 네트워크로의 이동이라는 목적지만 다를 뿐이죠. 위의 상황은 20.0.0.1로 프레임을 전달하고자 합니다. 그러면 라우팅 테이블에서 목적지 주소20.0.0.1이라면 20.0.0.254 주소를 가지고 있는 NIC를 통해서 다른 네트워크로 프레임을 내보내게 되는 것입니다.

 

자 그러면, 스위치(MAC 주소), 라우터(IP 주소) 두개를 모두 이용하여 다른 네트워크로의 이동을 알아보겠습니다.

 

라우터로 프레임을 전달
그림 5-2. 라우터로 프레임을 전달 (출처: 작가)

 

최종 목적지는 다른 네트워크의 IP 주소인 20.0.0.1 입니다. 그러나 첫번째로 다른 네트워크로 이동해야 하기 때문에 같은 네트워크에 연결되어 있는 라우터로 이동해야 합니다. 라우터 또한 같은 네트워크 환경에 속해있으므로, 스위치의 MAC 주소 테이블에 존재할 것입니다.

 

목적지 MAC 주소 일치 확인
그림 5-3. 목적지 MAC 주소 일치 확인 (출처 작가)

 

프레임역캡슐화하여 목적지가 라우터 본인이라는 것을 확인합니다.

 

보내는 NIC 찾기
그림 5-4. 보내는 NIC 찾기 (출처: 작가)

 

인터넷 계층 장비인 라우터는 패킷(인터넷 계층 데이터) 또한 역캡슐화할 수 있습니다. 패킷을 역캡슐화하여 라우팅 테이블에서 목적지 IP 주소를 확인하여 내보낼 NIC를 결정하게 됩니다.

 

여기서 문제가 발생합니다. 같은 네트워크, LAN 에서는 MAC 주소로 이동한다고 했습니다. 그렇다면 라우터에서 LAN으로 프레임을 전달할 때, 목적지 MAC 주소가 반드시 있어야 스위치를 통해 최종 목적지인 컴퓨터를 찾을 수 있을 것입니다. 라우터는 어떻게 해야 LAN에서 MAC 주소(00:00:00:CC:CC:CC)를 알아낼 수 있을까요?

 

  • ARP(Address Resolution Protocol) – 주소 결정 프로토콜

간단하게 말씀드리자면 IP 주소(인터넷 계층)를 통해 MAC 주소(네트워크 액세스)를 찾는 프로토콜입니다. IP 주소를 사용한다는 점에서 IP와 동일한 인터넷 계층 프로토콜이라 볼 수도 있고, LAN에서 MAC 주소를 얻기 위해 단독으로 사용된다는 점에서 네트워크 액세스 계층이라고도 볼 수 있겠습니다. OSI 3계층, 2계층 사이라는 의미로 2.5계층이라 하기도 합니다.

 

ARP 구조
그림 6-1. ARP 구조 (출처: Wikipedia)

 

그림 6-1을 지금 전부 이해하실 필요는 없습니다. 간단하게 그림으로 알아보고 넘어가도록 하겠습니다.

 

 20.0.0.1을 찾기 위해 브로드캐스트 송신
그림 6-2. 20.0.0.1을 찾기 위해 브로드캐스트 송신 (출처: 작가)

 

그림 6-2에서 보시는 바와 같이 Target IP 주소로 Target MAC 주소를 찾기 위함이기 때문에 비어 있는 Target MAC 주소를 브로드캐스팅으로 채워야 합니다. 그래서 스위치에 연결된 모든 컴퓨터로 ARP 프레임을 보내고, Target IP 주소에 맞는 컴퓨터 만이 자신의 MAC 주소를 채운 뒤, 역으로 다시 보내는 것입니다.

 

Target MAC 주소를 채운 뒤, Target과 Sender를 바꾸어 역전송
그림 6-3. Target MAC 주소를 채운 뒤, Target과 Sender를 바꾸어 역전송 (출처: 작가)

 

이와 같은 과정을 통해 라우터는 같은 네트워크에서 IP 주소로 MAC 주소를 찾은 후, 최종적으로 목적지에 도달할 수 있던 것입니다.

 

최종적으로 목적지 MAC 주소를 통해 전달
그림 6-4. 최종적으로 목적지 MAC 주소를 통해 전달 (출처: 작가)

 

 

전송 계층

목적지에 도착한 프레임은 네트워크 액세스 계층 → 인터넷 계층, 순서에 따라 역캡슐화가 진행되고 전송 계층에 도착하게 됩니다.

 

Transmission Control Protocol(TCP)

TCP 구조
그림 7-1. TCP 구조 (출처: Wikipedia)

 

TCP/IP 모델이라는 이름으로 존재할 만큼, TCP는 IP와 더불어 가장 많은 기능을 가지고 있는 전송계층 프로토콜입니다. 그러나 우리는 데이터가 이동하는 큰 그림, 개념을 먼저 알아야 하는 만큼 모든 것을 배우진 않고 간단하게 포트번호에 대해서만 알아보겠습니다.

  1. 출발지 포트 (Source port) – 2bytes
  2. 목적지 포트 (Destination port) – 2bytes

 

  • 출발지, 목적지 포트

2bytes, 0 ~ 66,535의 번호를 사용할 수 있는 네트워크에 연결된 응용프로그램을 찾을 때 사용하는 번호입니다. 네트워크 통신을 필요로 하는 모든 응용프로그램은 반드시 이 포트번호가 할당되어 있어야 합니다.

 

운영체제에 의해 관리되는 포트번호
그림 7-2. 운영체제에 의해 관리되는 포트번호 (출처: 작가)

 

포트번호는 운영체제에 의해 관리되고 있습니다. 그래서 운영체제는 전송계층 데이터, 세그먼트에 포함되어 있는 목적지 포트번호를 확인 후, 전달하게 되는 것입니다. 또한, 그림 7-2의 파일 서버(FTP)와 같이 하나의 응용프로그램이 여러 개의 포트번호를 할당 받는 것도 가능합니다.

 

잘 알려진 포트번호
그림 7-3. 잘 알려진 포트번호 (출처: 작가)

 

2bytes로 표현가능한, 약 6만 5천개의 포트번호에는 그림 7-3과 같이 의미를 부여하기도 하였습니다. 각 포트번호에 대한 상세한 내용은 링크를 통해 확인해주세요.

 

 

응용 계층

우리가 네트워크에서 말하는 “데이터”라는 진정한 의미를 나타내는 계층입니다. 네트워크를 통해 통신하고자 하는 데이터의 종류는 수없이 많을 것입니다. 이메일, 웹 브라우저, 파일 등 수많은 데이터들은 저마다의 프로토콜이 존재합니다. 그리고 자주 쓰이는 만큼 많이 알려진 대표적인 프로토콜들 중, HTTP에 대해서만 간단하게 알아보고 넘어가도록 하겠습니다.

 

Hyper Text Transfer Ptorocol(HTTP)

우리가 정보를 얻기 위해 항상 접속하는 응용프로그램이 있습니다. 크롬, 엣지, 폭스파이어 등 웹브라우저입니다. 응용계층은 정보를 요청하는, 정보를 응답하는 응용프로그램이 반드시 필요합니다. 이를 각각 클라이언트(요청), 서버(응답) 이라고 부르는데요. 웹 브라우저는 대표적인 클라이언트입니다. 그리고 우리가 요즘IT에 접속하면 볼 수 있는 화면을 응답해주는 것이 바로 요즘IT 웹 서버인 것입니다.

 

웹 브라우저를 통해 접속한 요즘IT 메인화면
그림 8-1. 웹 브라우저를 통해 접속한 요즘IT 메인화면 (출처: 작가)

 

그래서 네트워크를 통해 웹 클라이언트웹 서버 간 통신을 가능하게 해주는 프로토콜이 바로 HTTP 인 것입니다. HTTP에 대한 상세 내용은 요즘IT에 많이 있으므로, 해당 글들을 보시면 될 것 같습니다.

 

어떠셨나요? 지금까지의 과정을 통해, 제가 전달하고자 했던 “네트워크에서의 데이터 이동”의 개념을 이해하셨는지 모르겠습니다. 최대한 간결하게 전달하고자 하여, 자세한 내용은 생략한 점이 많았지만 큰 그림을 알려드리고 싶었습니다. 또한 네트워크에서 데이터 이동이라는 관점에서 설명을 드리다 보니 전송, 응용계층에 대해 상세하게 전달드릴 수 있지만, 글이 너무 길어지기 때문에 줄였습니다.

 

이번 글을 통해 대략적인 이론을 알아보았고, 다음 글에서는 정말 마지막으로 요즘IT 화면이 웹 브라우저에 뜨는 과정을 Step By Step으로 실전을 알아보도록 하겠습니다.

 

요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.

좋아요

댓글

공유

공유

댓글 9
작성자가 삭제한 댓글입니다.
백앤드 웹 개발자
96
명 알림 받는 중

작가 홈

백앤드 웹 개발자
96
명 알림 받는 중
궁금한 내용이 있으면 이해가 될 때 까지 파고드는 5년차 백앤드 개발자입니다.

좋아요

댓글

스크랩

공유

공유

요즘IT가 PICK한 뉴스레터를 매주 목요일에 만나보세요

요즘IT가 PICK한 뉴스레터를
매주 목요일에 만나보세요

뉴스레터를 구독하려면 동의가 필요합니다.
https://auth.wishket.com/login