본문 바로가기
Computer Science/Network

[네트워크] "www.google.com"을 입력하면 어떻게 되나? 1편 - LAN/WAN, TCP/IP 4 계층, 패킷 교환 방식

by whatamigonnabe 2022. 8. 4.

전 세계의 컴퓨터들이 인터넷으로 연결되어 있다. 

 

우리는 어떻게 저 먼 미국의 서비스인 구글에 접속할 수 있을까요? 우선은 우리가 사용하는 컴퓨터나 핸드폰이 구글의 서버와 유/무선으로 연결되어 있기 때문입니다. 사실 지구상의 거의 모든 인터넷을 사용할 수 있는 기기들이 연결되어 있죠. 그런데 구글과 내 컴퓨터가 바로 연결된 것이 아니라, LAN과 이 LAN들을 연결한 WAN의 복잡한 연결로 이뤄져 있습니다. 

 

LAN과 WAN

LAN은 Local Area Network의 약자로서, 말 그래도 근거리의 네트워크 장비끼리 연결해주는 네트워크입니다. 우리 근처에서 찾아볼 수 있는 예시로는 집에 있는 공유기가 있을 것입니다. 공유기를 자세히 들여다보면, LAN port라는 이름이 보일 것입니다. 바로 근처에 있는 기기와 유선으로 연결하는 것입니다. 아래 그림처럼 이렇게 연결된 LAN이 전 세계에 수 많이 이뤄져있습니다.

https://ironmask84.tistory.com/357

조금 더 자세히 들여다 보면, LAN에서 기기들을 연결하는 장치가 있는데요, Switch 또는 Hub입니다. 이 기기들이 LAN에서 여러 컴퓨터를 연결해주는 역할을 합니다. 

 

그리고 이런 근거리 네트워크 망을 연결하여 전세계적인 광역 망이 바로 WAN입니다. WAN은 Wide Area Network의 약자로서, 말씀드린 것처럼 LAN들을 연결하는 역할을 합니다. WAN은 국내의 KT/SK와 같은 ISP(Internet Service Provider)가 설치를 하며, 우리는 이 망을 이용하는 대가로 비용을 지불합니다. 추가적으로  이 WAN으로 저기 바다 건너 미국 땅까지 물리적으로 연결되어 있는데요, 되게 신기합니다.

세계 해저 광케이블망 (출처: KT)

 

인터넷 세계의 약속된 언어: 프로토콜

아무튼 이렇게 LAN과 WAN으로 연결되어 있다고는 하지만, 바로 통신을 할 수는 없습니다. 이토록 복잡한 네트워크 속에서 어떤 기기가 어디에 있는지도 알아야하고, 어떤 방법으로 대화를 해야하는지 모르기 때문입니다. 그래서 필요한 게 바로 프로토콜입니다. 프로토콜은 우리말로 '규약'이라고 하는데요, 상호간에 어떤 방법으로 소통을 할지 정해놓은 것입니다. 각 목적에 따라 엄청 나게 다양한 프로토콜들이 있으며, 대표적으로 미 국방성에서 계층 형태로 정리한 프로토콜 모음이 있습니다. 그것이 바로 TCP/IP 4계층 모델입니다.

 

TCP/IP 4계층 모델

TCP/IP 모델은 4개의 층으로 이뤄져있고, 아래처럼 이 모델이 정보를 보내는 측과 받는 측에 아래처럼 각각 있고, 정보가 보내는 측의 Application Layer 부터 받는 측의 Application Layer까지 차례로 거치게 됩니다.

 

Application Layer는 어떤 서비스를 제공하기 위해 어플리케이션끼기 정보를 주보 받는데 사용되는 여러 프로토콜입니다. 여기서 어플리케이션이란 클라이언트 측에서는 크롬이나 사파리 같은 브라우저가 대표적이고, 서버 측에서는 유튜브와 구글과 같은 서비스들이 해당합니다. 그리고 대표적인 프로토콜로는 HTTP(웹서버와 웹브라우저의 소통), FTP(파일전송), SSH(원격접속), DNS(도메인-IP주소 식별) 등이 있습니다. 

 

Transport Layer는 송신된 데이터를 수신측 애플리케이션에 확실하게 전달하는 역할을 하는 프로토콜입니다.. 네트워크 통신을 하는 어플리케이션은 포트번호를 사용하는데, 이것을 사용하여 어플리케이션을 찾아주는 역할을 합니다. 대표적인 프로토콜로는, TCP, UDP 등이 있습니다.

 

Internet Layer는 수신측까지 데이터를 전달하기 위해 사용됩니다. 보내는 측과 받는 측 모두 IP주소라는 논리적 식별 번호가 부여되는 데요. 이것을 바탕으로 올바른 곳으로 찾아갈 수 있게 합니다. 대표적인 프로토콜로는 IP, ARP 등이 있습니다.

 

Network Access Layer는 네트워크게 직접 연결된 기기끼리 통신하는 데 사용됩니다. 여기서는 물리적 주소인 MAC주소를 사용합니다. 대표적인 프로토콜로는 Ethernet, PPP, Token Ring등이 있습니다. 

 

패킷 교환 방식(Packet Switching)

이렇게 다양한 프로토콜들이 있는데, 그래서 어떤 방법으로 이런 프로토콜이 사용될까요? 데이터를 주고 받는 방식에는 회선 교환 방식(Circuit Switching)과 패킷 교환 방식(Packet Switching), 두 가지 방법이 있습니다. 

우선 회선 교환 방식은 통신을 하는 양 측이 1:1로 회선을 연결하여 통신하는 방식이며 대표적인 예로 전화망이 있습니다. 속도가 매우 빠르고 한번 연결이 되면 다른 제약을 받지 않습니다. 하지만, 통신을 위해 양측이 모두 준비가 되어 있어야하고, 1:1로만 통신이 가능하기 때문에, 동시에 여러 상대와 통신을 해야하는 인터넷 사용에는 접합하지 않습니다.

이런 단점을 극복하기 위해서 나온 것이 패킷 교환 방식입니다. 이 방식은 한번에 보내는 데이터를 작은 데이터의 단위, 즉 패킷으로 분활하여 보낸 후, 전달 받은 측에서 조립하여 사용합니다. 이 방식은 회선 교환과는 달리 회선을 특정해놓지 않고 상황에 따라 최적의 루트를 정하여 사용하기 때문에, 데이터의 신뢰성이 높습니다. 또한 작은 패킷들로 나누었기 때문에 한 회선을 여러 사용자가 동시에 사용하는 것이 가능하며, 또 하나의 패킷이 유실되더라도 그것만 복구하면 됨으로 고품질을 보장합니다.

 

패킷의 구성

이 패킷은 크게 헤더와 페이로드로 구성되는데요. 페이로드에는 보내는 진짜 정보가 담기고, 헤더에는 각 계층을 지나면서 필요한 정보들을 담습니다. 데이터가 하나의 계층을 지나올 때마다 헤더를 하나씩 덧붙여서, 패킷을 조립해가는 과정이라고 생각하면 될 것 같습니다. 그리고 이것을 '캡슐화'라고도 부릅니다. 이렇게 하나씩 헤더로 감싸진 패킷을 수신측에 보내면, 수신측에서 각 계층을 거꾸로 거슬러 올라가면서, 계층에 맞는 헤더를 하나씩 벗겨나가면서 통신하는 방식입니다. 

패킷의 구성, 한 계층을 지날 때마다 헤더가 추가된다.

하나만 더 말씀드리자면, 이렇게 헤더가 한 계층에서 하나씩 붙을 때마다 부른는 명칭이 다릅니다. 우선 이런 데이터 단위를 PDU(Protocol Data Unit)이라고 부르며, 각 PDU는 그 계층에서 붙인 헤더인 PCU(Protocol Control Unit)과 이전 계층들의 헤어와 페이로드를 더한 SDU(Service Data Unit)로 구성됩니다.

그리고 각 계층의 PDU는 아래와 같습니다.

계층 PDU
Application Layer Data/Message
Transport Layer Segment
Internet Layer Packet
Network Access Layer Frame

자, 그럼 이제 본격적으로 이해할 준비가 끝난 것 같습니다. 지금까지의 내용을 간단하게 정리해본다면, 물리적으로 연결된 네트워크 기기 끼리 통신을 하기 위해서는 프로토콜이라는 약속에 맞춰서 통신해야하는데, 이 프로토콜은 4개의 계층을 구성되어 있으며, 각 계층을 지나갈 때마다 사용하는 프로토콜에 맞는 헤더를 패킷에 붙여서 보낸 후, 수신측에서 이 계층을 거꾸로 올라가며 헤더 정보를 하나씩 벗겨가며 해석합니다.

 

다음 포스트부터, 주소창에 'www.google.com'을 입력한 이후부터 따라가며, 다시 네트워크를 이해해보겠습니다.

 

 

참조

https://medium.com/@suhas_chatekar/why-you-should-use-the-recommended-http-methods-in-your-rest-apis-981359828bf7

https://pjoongq.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%ED%97%A4%EB%8D%94header%EC%99%80-%ED%8E%98%EC%9D%B4%EB%A1%9C%EB%93%9Cpayload

http://www.jidum.com/jidums/view.do?jidumId=456

https://www.youtube.com/watch?v=BEK354TRgZ8

https://velog.io/@hidaehyunlee/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%84%B8%EA%B7%B8%EB%A8%BC%ED%8A%B8-%ED%8C%A8%ED%82%B7-%ED%97%B7%EA%B0%88%EB%A6%B4-%EB%95%90-PDU%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90