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

네트워크가 생겨나게 된 계기는 데이터를 주고받기 위해서입니다. 자신의 컴퓨터에만 존재하던 데이터를 다른 컴퓨터와 교환하기 위해 연결을 하면서 ‘네트워크’가 되고, 네트워크 집합들 간의 연결이 ‘인터넷’이 된 것입니다.

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

다음

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

확인

개발

주니어 개발자를 위한 엄청 쉬운 TCP/IP 4계층 이야기

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

 

네트워크가 생겨나게 된 계기는 데이터를 주고받기 위해서입니다. 자신의 컴퓨터에만 존재하던 데이터를 다른 컴퓨터와 교환하기 위해 연결을 하면서 ‘네트워크’가 되고, 네트워크 집합들 간의 연결이 ‘인터넷’이 된 것입니다.

 

네트워크를 통해 하는 행동은, 내가 원하는 것을 상대방에게 “요청”하여 “응답”을 받는 것입니다. 바로 사람과 대화 주고받기, 서울 다른 구 사람과 대화 주고받기, 한국 다른 시의 사람과 대화 주고받기, 다른 나라의 사람과 대화 주고받기 등 과거라면 상상도 못할 먼 거리의 사람과 대화가 가능한 것도 바로 네트워크라는 환경이 존재하기 때문인 것입니다.

 

위에서 “사람”을 “컴퓨터에서 실행중인 “응용 프로그램(ex: 웹 브라우저)”로 바꿔도 이상할 것이 없습니다. 같은 컴퓨터안에서 다른 응용 프로그램과 통신하기, 같은 네트워크안에 있는 컴퓨터의 응용 프로그램과 통신하기, 다른 네트워크에 있는 컴퓨터의 응용 프로그램과 통신하기 등이 사람이 대화를 주고받는 것과 비슷한 행동인 것입니다.

 

이번 글에서는 이전 글 “택배 배송 과정으로 알아보는 엄청 쉬운 컴퓨터 네트워크”를 컴퓨터에서 일어나는 일로 가져와 설명해보도록 하겠습니다. 이전 글에서 저는 데이터가 4단계에 걸쳐 캡슐화되고, 그것이 수신자에게 전달되는 과정을 택배 배송 과정에 빗대 알아봤습니다. 이번 글에서는 그것을 실제 네트워크 세계의 용어를 통해 설명해보려고 합니다. 이전 글을 읽고 오시면 이해에 더욱 도움이 되실 것입니다.

 

응용계층에서 벌어지는 일

A아파트에서 B아파트로의 택배배송 구조

 

이전 글에서 A아파트에 사는 김씨가 편지를 택배로 부쳐 B아파트에 사는 이씨에게 보내는 과정을 살펴봤습니다. 컴퓨터 세계에서 이러한 과정은 무엇에 해당할까요? 김씨는 편지라는 데이터를 생성합니다. 컴퓨터에서는 크롬과 같은 응용프로그램(애플리케이션)이 데이터를 생성하는 주체입니다.

사람 <-> 애플리케이션(웹 브라우저), 편지 <-> HTTP의 관계

 

사람이 안부를 묻기 위해 편지를 작성하듯, 웹 브라우저(애플리케이션)는 화면에서 필요한 데이터를 요청하기 위해 HTTP 데이터를 생성합니다. 또한 편지에 양식(인사말, 본문, 맺음말)이 있는 것처럼, HTTP도 양식(start-line, headers, body)이 존재합니다. 이러한 약속을 ‘프로토콜’이라고 합니다.

 

이전 글에서 데이터는 4단계에 걸쳐 생성되고 송신된다는 걸 배웠습니다. 4단계 중 데이터를 생성하는 이 단계는 응용(애플리케이션) 계층이라 부릅니다. 응용프로그램에서 데이터가 생성된다는 의미를 담고 있죠.

 

 

전송계층에서 벌어지는 일

자, 이렇게 생성된 데이터는 이제 이 데이터를 필요로 하는 자에게 전송되어야 합니다. 그 전에, 어디로 데이터를 보내는지 ‘주소’를 입력하는 과정이 필요합니다. 1차적으로 필요한 정보는 편지라는 데이터를 보내는 사람인 김씨가 살고 있는 아파트의 ‘호수번호’ 입니다.

 

A아파트에서 B아파트로 편지를 전달하는 과정은 각 아파트 관리인을 통해 진행되는데요. 김씨편지를 전달받은 관리인은, 편지를 택배로 감싼 후(캡슐화), ‘101동 김씨가 201동 이씨로 보내는 편지’라는 정보를 봉투 위에 작성하는 식입니다. 이는 크롬이라는 응용프로그램이 페이지 요청을 위해 HTTP(편지)를 운영체제에 보내는 것과 같습니다.

 

호수 와 포트번호의 관계

 

김씨가 관리인에게 편지를 전달하는 것은 크롬이 윈도우에게 HTTP를 전달하는 것과 같다

 

편지를 전달받은 관리인은 보내는 호수, 받는 호수를 택배에 작성한다

 

운영체제는 네트워크 통신을 원하는 응용프로그램에게 포트번호를 할당함과 동시에 관리를 하고 있습니다. “netstat” 이라는 명령어를 통해 운영체제가 관리하는 포트번호와 프로세스(애플리케이션)의 관계를 알 수 있습니다.

 

135번 포트번호로 들어오는 데이터는 PID 1508번 응용프로그램으로 보낸다

 

마치 아파트 관리인이 편지의 주소를 확인해 보니 135호(135번포트)로 보내는 편지임을 확인하고 김씨(PID 1508) 에게 전달하는 것과 동일합니다. 운영체제인 윈도우가, 데이터가 135번 포트로 보내져야 한다는 것을 확인하고, 전달하는 것과 마찬가지죠.

 

그렇다면 부산의 B아파트로 편지가 전달된 경우, 어떻게 이씨에게로 전달될까요? 김씨의 택배(편지)가 부산의 B아파트로 전달되면, 관리인이 먼저 받게됩니다. 그 후, 관리인은 택배에 적힌 ‘받는 호수’를 확인 한 뒤, 이씨에게 전달되는 것입니다. 이는, 데이터가 컴퓨터에게 전달되면, 운영체제가 데이터의 ‘받는 포트’를 확인 하고 애플리케이션에 전달하는 것과 같습니다.

 

 

컴퓨터 세계에서 응용프로그램은 데이터를 스스로 가져가지 못 합니다. 편지를 택배로 보내겠다는 김씨의 요청을 알게 된 배달부는 김씨의 아파트 주소를 직접 확인하고 방문할 수 있지만, 컴퓨터는 ‘운영체제’를 통해 주소를 확인해야 합니다. 김씨의 주소를 확인하려면 아파트 관리인에게 확인해야 하는 상황이라고 생각하면 됩니다. 배달부는 아파트 관리인을 통해 김씨가 몇 호에 사는지 알 수 있을 것입니다. 이를 컴퓨터에서는, 응용프로그램이 운영체제를 통해 ‘포트번호’를 알게 되는 과정이라고 볼 수 있습니다.

 

이 과정은 응용프로그램으로 데이터의 송ꞏ수신 즉, ‘전송’을 담당하는 단계로, 전송 계층이라 부릅니다.

 

 

인터넷 계층에서 벌어지는 일

앗 그런데 같은 아파트 201호가 아니었네요! 이씨에게 택배를 전달하기 위해 1차적으로 호수번호가 필요했다면, 2차적으로는 그 호수번호가 어떤 아파트에 속해 있는 것인지, 그 아파트 이름이 필요합니다. 그래서 관리인은 보내는 아파트는 서울 A아파트, 받는 아파트는 부산 B아파트라고 택배상자 위에 표시하죠. 다시 한 번 캡슐화하는 것입니다.

 

보내고 받는 아파트의 정보를 캡슐화

 

컴퓨터 세계에서는 서울과 부산과 같은 지역을 네트워크라 부릅니다. 그리고 네트워크와 네트워크의 연결을 인터넷이라 부릅니다. 수많은 네트워크가 연결된, 인터넷에서 특정 주소를 의미하는 단어를 우리는 IP(Internet Protocol) 주소라고 부릅니다. IP는 인터넷 프로토콜의 약어로 인터넷에서 주소를 구분하고 찾기 위해 사용하는 약속입니다. A아파트가 서울에 있다는 것, B아파트가 부산에 있다는 것을 식별하기위해 반드시 필요한 주소입니다. 즉 보내는 호수가 적힌 택배를 다시 택배 상자로 감싸 아파트 주소를 적는 것은, 인터넷에서 특정 네트워크의 컴퓨터를 식별하기위해 붙이는 IP주소로 빗댈 수 있습니다.

 

이 과정은 인터넷에서 목적지 주소를 찾기 위한 단계로, 인터넷 계층이라 부릅니다.

 

포트번호를 캡슐화하는 전송계층, IP주소를 캡슐화하는 인터넷 계층에 해당하는 관리인의 역할을 네트워크에선 ‘운영체제’가 담당하게 됩니다.

 

 

네트워크 계층에서 벌어지는 일

그런데 부산의 B아파트로 보내고자 배달부가 택배상자를 배달하려고 하기 전, 부산에 B아파트라는 동일한 이름이 2곳에 존재한다는 것을 알게 되면 어떻게 될까요?

 

동일한 이름의 아파트로 인해 이씨가 사는 곳을 특정할 수 없다

 

아파트 이름만으로는 이씨가 사는 아파트가 어떤 아파트인지 알 수 없는 상황입니다. 현실에서는 이와 같은 상황에서 ‘지번’을 이용하여 해결할 수 있습니다. 땅 위에 건물들은 허물어짐과 다시 세워짐을 반복하지만 땅의 위치는 변하지 않습니다. 그래서 부산 서부 10-1번지, 부산 동부 20-1번지와 같은 땅의 주소를 이용하여 201호 이씨가 살고 있는 B아파트로 정확하게 전달할 수 있는 것입니다.

 

부산 동쪽 B아파트에 살고 있는 이씨에게 전달

 

또한 이씨가 살고 있는 아파트명이 B아파트에서 BB아파트로 변경된다 한들, 땅의 주소는 변하지 않는 고유한 주소입니다.

 

국내에서는 2014년 1월 1일부터 지번주소 대신 도로명주소를 사용합니다. 하지만 주소를 다르게 표시한다고 해서 그것을 가리키는 땅 위치가 달라진 것은 아닙니다. 이처럼, 땅의 주소를 표현하는 방법은 한 가지가 아닙니다. 서울시청을 “서울특별시 중구 태평로1가 31” 같은 지번으로도 표시할 수 있고, “서울특별시 중구 세종대로 110”와 같은 도로명 주소로도 표시해도 되는 것처럼, 인터넷의 주소도 약속을 정하기만 하면 서로 이해할 수 있습니다.

 

컴퓨터 세계에서도 과 같이 컴퓨터의 고유한 주소를 표시하기 위한 장치가 존재합니다. 바로 NIC(Network Interface Controller) 입니다.

 

NIC 이미지 <출처: 위키백과>

 

이는 컴퓨터가 네트워크로 접속하기위해 반드시 필요한 장치로, 네트워크와 컴퓨터를 이어주는, 즉 인터페이스의 역할을 해주는 장치라는 의미에서 ‘네트워크 인터페이스 기기’라는 이름을 갖고 있는 것입니다.

 

땅 주소를 표기하는 약속으로 지번, 도로명이 있듯 NIC의 주소를 표기하는 방법으로 가장 많이 이용되고 있는 것은 이더넷 프로토콜입니다.

 

이더넷 프로토콜은 주소를 표시하기 위해 MAC(Media Access Control) 주소를 사용합니다. 여기서 미디어(매체)란, 이더넷 케이블, 광섬유 케이블과 같은 유선 의미하거나 와이파이 같은 무선을 뜻합니다. 즉, 유선이 연결되는 NIC나 무선 와이파이를 송ꞏ수신할 수 있는 와이파이 모듈과 같은 장치를 구분하는 주소라는 의미입니다.

 

이더넷 케이블 <출처: 위키백과>

 

이런 고유한 주소, 즉 MAC 주소 덕분에 데이터가 도달되어야 할 명확한 위치를 찾을 수 있었던 것입니다. 이름이 같은 B아파트 중에서 정확한 B아파트의 위치를 찾아낸 것처럼요. 이 과정은 네트워크로 나가기 위한 마지막 단계로, 네트워크에 접속한다는 의미에서 ‘네트워크 액세스 계층’이라 부릅니다. 관리인에게 택배를 전달받은 배달부가 우체국으로 배달하는 것 처럼, NIC의 역할을 하는 것입니다.

 

데이터가 최종 목적지로 전송되기 위해 필요한, 1차 주소 포트번호, 2차 주소 IP주소 그리고 마지막 3차 주소는 MAC 주소인 것입니다.

 

네트워크 액세스 계층 데이터까지 캡슐화

 

지금까지 알아본 4 단계(응용, 전송, 인터넷, 네트워크 액세스)를 우리는 TCP/IP 모델이라고 부릅니다.

 

 

데이터 생성 주체

TCP/IP 4단계를 통해서 네트워크로 내보낼 수 있는 데이터를 생성하였습니다. 각 단계는 수 많은 네트워크가 연결된 인터넷에서 가고자 하는 목적지를 올바르게 찾아갈 수 있도록 캡슐화 되어 있음을 알게 됐습니다.

 

그렇다면 이 캡슐화된 데이터는 누가, 어디에서 만드는 것 일까요? 바로 윈도우즈(Windows), 리눅스(Linux)와 같은 운영체제입니다. 운영체제는 사용자의 응용프로그램에서 생성한 데이터를 응용 → 전송 → 인터넷계층 순서로 단계적으로 캡슐화한 후, NIC로 전달하여 NIC에서는 마지막으로 네트워크로 내보내기 전 네트워크 액세스 계층으로 캡슐화 합니다. 이렇게 캡슐화가 완료된 데이터의 이름을 ‘프레임’ 이라고 합니다. 마지막으로 물리적인 유, 무선 매체를 통해 비트(bit)단위로 전송하게 되는 것입니다.

 

계층별 생성되는 데이터

 

우리는 같은 지역 네트워크에서 올바른 경로를 찾아 택배를 유통해주는 우체국의 존재를 알고 있습니다. 이를 컴퓨터 세계에서는 '스위치'라고 합니다.

 

같은 지역(서울) 안에서는 우체국(스위치)를 통해서 이동이 가능하다

 

그런데 서울에서 부산으로 보낼 때는 다른 지역의 경로를 찾아 이동할 수 있게 해주는 '라우터'라는 것이 필요합니다.

 

다른 지역(서울과 부산) 간의 이동은 톨게이트(라우터)를 통해서 이동이 가능하다다

 

네트워크에서 데이터를 올바른 경로로 이동시키기 위해 스위치, 라우터, 이 2개 장치가 존재한다고 볼 수 있습니다.

 

흔히 스위치를 2계층 장비, 라우터를 3계층 장비라고 표현하곤 합니다. 이는 TCP/IP 모델의 부모 격인, OSI 7계층의 2계층, 3계층을 의미합니다. OSI 7계층에서 2계층은 ‘데이터링크’ 3계층은 ‘네트워크인데요, TCP/IP 4계층에서는 각각 ‘네트워크 액세스, ‘인터넷’ 계층에 해당합니다.

 

OSI 7계층과 TCP/IP의 비교

 

2계층의 대표적인 프로토콜로는 MAC주소를 이용하여 같은 지역 네트워크(LAN)의 장치를 식별하는 이더넷 프로토콜이 있습니다. 3계층의 대표적인 프로토콜로는 IP주소를 이용하여 다른 지역 네트워크의 경로를 식별하는 인터넷 프로토콜(IP) 있습니다.

 

2계층과 3계층 프로토콜을 이용하여 경로를 찾는다는 의미는, 2계층 프로토콜을 해석하여 이동시켜주는 장치인 스위치, 3계층 프로토콜을 해석하여 이동시켜주는 장치인 라우터를 이용한다는 것을 의미합니다.

 

즉, “몇 계층 장비”라는 것은 캡슐화된 데이터를, 장치가 해석할 수 있는 계층까지 역캡슐화하여 프로토콜의 내용을 확인하고 경로를 설정해주는 장비라고 볼 수 있습니다. TCP/IP에서는 인터넷계층까지 역캡슐화하느냐, 네트워크 액세스까지 역캡슐화하느냐를 가르는 장비인 것이죠.

 

스위치는 TCP/IP 모델의 네트워크 액세스 계층까지 역캡슐화하여 MAC 주소값을 이용하여 경로를 정한다 (출처 : 작가)

 

라우터는 인터넷 계층까지 역캡슐화하여 IP 주소값을 이용하여 경로를 정한다 (출처 : 작가)

 

 

결론

위의 내용으로 데이터가 네트워크를 통해 목적지로 전달되려면 필요한 요소들을 알아보았습니다. 다음 글에서는 TCP/IP 모델의 계층별 대표적인 프로토콜을 알아보고, 마지막으로 웹 브라우저를 통해 요즘IT 화면을 요청하면 실제로 어떻게 데이터가 전달되는지 상세히 알아보는 시간을 갖고 마무리하도록 하겠습니다.

 

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

좋아요

댓글

공유

공유

댓글 19
roh_hm
            와우.. XD
          
2023.04.05. 오후 17:43
수정됨
Morian
            @roh_hm 감사합니다! :)
          
2023.04.06. 오후 22:44
백앤드 웹 개발자
86
명 알림 받는 중

작가 홈

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

좋아요

댓글

스크랩

공유

공유

지금 회원가입하고,
요즘IT가 PICK한 뉴스레터를 받아보세요!

회원가입하기
요즘IT의 멤버가 되어주세요! 요즘IT의 멤버가 되어주세요!
요즘IT의 멤버가 되어주세요!
모든 콘텐츠를 편하게 보고 스크랩해요.
모든 콘텐츠를 편하게 보고 스크랩 하기
매주 PICK한 콘텐츠를 뉴스레터로 받아요.
매주 PICK한 콘텐츠를 뉴스레터로 받기
로그인하고 무료로 사용하기