[CS] 그림으로 알아보는 네트워크 - 계층화와 OSI, TCP/IP, UDP의 특징과 차이점

emplam27·2021년 1월 31일
10

CS

목록 보기
5/6
post-thumbnail

통신을 위해서는 바이너리 데이터를 주고받는 과정들이 필요하고, 이는 네트워크를 통해 진행됩니다. 네트워크는 어떻게 통신하고 계층화를 어떤 방법으로 적용하였는지에 대해 알아보고, 프로토콜 중 대표적인 프로토콜인 OSI, TCP/IP, UDP와 각 프로토콜의 차이점에 대해 중점적으로 정리해 보겠습니다. 추가적인 설명이나 개념이 필요한 부분을 첨가하며 각 프르토콜은 어떤 특징들이 알아보겠습니다.


통신은 어떻게? - 계층(layer)과 패킷(packet)

해당 그림은 기본적인 네트워크 통신의 과정을 매우 간략히 그린 그림입니다. 통신 프로토콜에 대해 얘기하기 전에 먼저 바이너리 데이터를 어떤 방법으로 주고 받는지 부터 알아야 할 것 같습니다. 인터넷을 통해 주고받는 바이너리 데이터 블록(조각)를 포괄적으로 패킷(packet)이라 부르며, 그 형식은 프로토콜마다 특징적인 규정이 존재합니다. 패킷이 사용되는 이유는 보내는 데이터를 작은 단위로 나눠 빠르고 효율적이게 전달하기 위함입니다. 큰 용량의 데이터를 패킷으로 나누지 않고 한번에 보내게 당장 해당 파일을 보낼때는 빠를 수 있습니다. 하지만 현대의 컴퓨터는 하나의 프로그램에서 네트워크를 사용하지 않으며, 다른 프로그램에서 데이터를 주고받는 데에 방해를 받을 수 있습니다.

위 그림으로 보면 송신측의 데이터를 적당한 크기로 쪼개에 추가정보를 붙인 하나의 데이터 단위가 패킷이고, 패킷에 붙인 추가정보들을 주로 헤더(header)라고 부릅니다. 그림에 보이는 헤더는 그저 단순한 데이터처럼 보이지만 사실 매우 많은 정보들이 들어갑니다. 보내야하는 곳은 어디인지, 어떤 데이터인지, 해당 데이터가 손실이 일어난 데이터인지 등등 많은 정보들이 들어갑니다. 그렇다면 이러한 데이터를 쪼개고, 헤더들를 붙이는 작업들은 어디서 어떻게 진행할까요? 한번의 작업으로 이런 정보들을 붙이는 걸까요?

여러 통신 프로토콜은 이러한 정보 작성 과정을 계층화를 적용하여 작성합니다. 통신 프로토콜마다 여러 계층이 존재하고, 해당 계층에서 필요한 헤더들만 패킷에 차곡차곡 덧붙여 나가는 방식으로 이해하면 편하겠습니다. 또한 특정한 계층에서 발생하는 오류를 빠르게 찾아내기 위함이라고도 합니다. 프로토콜마다 다른 형식의 정보들을 붙이기 때문에 각 프로토콜에서 사용하는 정보들의 특징들을 다뤄보도록 하겠습니다.



각 계층에서는 패킷에 어떤 헤더(header)들이 추가되는가?

그렇다면 각 계층에서는 어떠한 정보의 헤더들로 추가정보를 줄까요? 아래 설명할 OSI나 TCP는 계층수나 디테일에는 차이가 있으나 보통 header에 추가되는 정보들을 비슷하므로 대략적으로 TCP 4계층 기준으로 설명해보도록 하겠습니다.

데이터를 전달하고 받기 위해서는 미리 약속된 통신 규약에 맞는 정보들이 필요합니다. 필요한 정보들은 대표적으로 어떤 내용?, 어떤 형식의 메세지?, 어떤 종류의 통신?, 어디로? 등이 있습니다. 이러한 정보들을 한번에 추가하기에는 어렵기 때문에 각 계층에서 순서에 맞게 추가하여 데이터를 전송합니다. 받는측에서는 그의 역순으로 해제하여 데이터를 확인하게 됩니다. 아래 그림을 통해 과정을 살펴보겠습니다.

위 그림은 데이터를 송신하는 컴퓨터와 수신하는 컴퓨터에서 일어나는 각 계층 헤더 추가 과정과 데이터를 수신받는 컴퓨터에서 일어나는 입니다. 모든 값들은 예시이기 때문에 어떤 종류의 값들이 들어갔는지 위주로만 보시면 됩니다. 각 계층은 계층마다의 데이터를 붙이거나 해석하는 역할이 존재합니다. 송신측은 수신측이 알아야할 정보들을 각 계층에서 추가하면서 데이터를 전달하고, 수신측은 송신측이 보낸 정보들을 각 계층에서 해석해 나가면서 데이터를 전달받습니다.

이제 계층단위에서 어떠한 일을 하는지 알았으니, OSI 7계층 & TCP/IP 4계층의 차이점과 어떠한 계층들이 존재하고, 그 계층들은 어떤 정보들을 추가하는지 알아보겠습니다.



OSI 7계층 & TCP/IP 4계층

OSI 7계층과 TCP/IP 4계층에 대해서 얘기해보겠습니다. 아래 그림에서 계층들의 색깔은 위 그림에서 동일한 색의 헤더가 추가되는 계층입니다.

현대에는 TCP/IP 4계층을 더 많이 사용한다고 합니다만, 자세한 설명이 가능한 OSI 7계층을 기준으로 각 계층에 대해 설명하겠습니다. TCP 프로토콜은 위 그림에 맞춰 생각하여 7계층을 4계층으로 줄여서 생각하면 되겠습니다. 아래에서 등장하는 PDU는 Packet Data Unit으로 각 계층에서 처리하는 패킷 데이터의 단위입니다.


7계층: 응용 계층 (Application Layer)

응용프로그램(사용자)에서 정보를 전달받아 컴퓨터가 통신할 수 있게 전달하는 역할을 수행하는 계층입니다. 대표적인 어플리케이션 프로토콜로 HTTP, FTP, DNS 등이 있습니다.

6계층: 표현 계층 (Presentation Layer)

응용 계층에서 받은 데이터의 인코딩과 디코딩, 암호화, 압축등을 수행하여 컴퓨터가 보낼 수 있는 데이터 형식으로 바꿔주는 계층입니다. 대표적인 형식으로 JPEG, MPEG, GIF 등이 있습니다.

5계층: 세션 계층 (Session Layer)

통신장치간의 연결을 관리하는 계층입니다. 세션을 만들고, 종료하고, 복구하는 등 기능을 수행합니다. 통신 연결은 포트 기반으로 연결되며, 대표적인 프로토콜로 SSH, TLS 등이 있습니다. OS가 세션계층에 속하며, 소켓 프로그래밍이 해당되는 부분입니다. 소켓 프로그래밍에 대해서는 다음 포스팅에서 자세히 다루겠습니다.

4계층: 전송 계층 (Transport Layer)

port 번호를 사용하여 출발지에서 목적지까지 데이터를 전송할 수 있게 하는 계층입니다. 데이터를 분할하고, 전송하고, 오류가 있다면 다시 받아내고, 받은 데이터의 순서를 맞추는 등의 역할을 수행합니다. PDU는 TCP/IP는 세그먼트(Segment), UDP는 데이터그램(Datagram) 입니다. 대표적인 프로토콜은 TCP, UDP가 있습니다.

3계층: 네트워크 계층 (Network Layer)

IP를 통해 보내는 곳의 주소를 확인하고, 라우터를 통해 해당 주소로 이동하는 경로를 선택하는 역할을 수행하는 계층입니다. PDU는 패킷(Packet)입니다. 대표적인 프로토콜은 IP, ICMP 등 입니다. 라우터와 스위치가 해당 계층에서 사용되는 장비입니다.

네트워크 기기들 사이에 데이터 전송을 하는 계층으로 하드웨어(LAN card)적으로 구현되어 있습니다. 데이터 전송 오류를 감지하거나, 오류를 감지하면 재전송하는 계층이며, 데이터의 시작과 끝을 알기 위해 데이터의 앞뒤에 특정한 비트열을 붙이는 작업(framing)을 수행합니다. PDU는 프레임(Frame)입니다.

1계층: 물리 계층 (Pysical Layer)

바이너리 데이터를 물리적으로 연결하고 전송하는 계층으로 하드웨어적(PHY칩)으로 구현되어 있습니다. 모든 메세지를 바이너리 전기신호로 변환하여 전송하는 역할을 수행합니다. PDU는 비트(Bit)입니다.



TCP/IP & UDP

두 프로토콜의 가장 큰 차이점은 신뢰성입니다. 개괄적으로 TCP는 데이터의 무결성을 보장합니다. 하지만 UDP는 데이터가 손실될 수 있습니다. 내용에 등장하는 handshake에 대한 부분은 다음 포스팅에서 적어보겠습니다.

TCP 특징

TCP는 무결성을 보장하는 통신방법이기 때문에 데이터가 손실되면 다시 서버에게 요청하여 해당 데이터를 받아옵니다. 또한 데이터의 전송 순서를 보장하며 안정적이라는 특징 때문에 대부분의 통신 방법으로 사용됩니다. 안정적인 통신을 위해 통신 이전에 handshake과정을 수행하여 송수신부가 연결을 수행한 후 데이터를 주고받습니다. TCP 헤더에는 다음과 같은 정보들이 들어있습니다.

  1. 출발지 및 목적지의 포트번호
  2. 데이터 중 패킷의 순서
  3. handshake시 정보를 전송하고 확인하기 위한 플래그 비트
  4. 헤더의 크기
  5. 데이터가 손실되었는지 확인할 수 있는 체크섬
  6. 윈도우 사이즈, 긴급포인터, 옵션 등등

헤더의 크기가 UDP보다 상대적으로 크기 때문에 UDP보다 속도가 느리고 부하가 큽니다.

UDP 특징

UDP는 무결성을 보장하지 않는 통신방법이기 때문에 데이터가 손실되었다면 해당 데이터를 버려버립니다. 또한 데이터의 전송 순서 역시 보장하지 않습니다. 안정적인 통신이 필요하지 않아 handshake과정을 수행하지 않는 특징이 있습니다. UDP 헤더에는 다음과 같은 정보들이 들어있습니다.

  1. 출발지 및 목적지의 포트번호
  2. 헤더의 크기
  3. 데이터가 손실되었는지 확인할 수 있는 체크섬

TCP 헤더에 비해 매우 적은양의 내용만 들어가 있어 TCP보다 상대적으로 빠른 속도가 빠르고 부하가 적습니다. 데이터의 무결성 보다는 전달 속도가 중요한 스트리밍 서비스와 같은 곳에서 사용합니다.



마치며

네트워크에 대해서 공부를 시작할 때에는 바로 OSI 7계층을 외웠던 기억이 납니다. 네트워크가 어떤방식으로 작동되는지 최대한 쉽게 알려드리려고 노력했습니다. 네트워크를 처음 접하시는 분들이 네트워크가 어떻게 작동되는지 감을 잡으실 수 있는 포스팅이었으면 합니다.

profile
내가 다시 보고 싶은 글이어야 남들도 보고 싶은 글이라 생각하며 작성합니다. 공부한 내용들을 건강하게 공유하며 함께 성장하고자 합니다😊😊

2개의 댓글

comment-user-thumbnail
2022년 2월 2일

글 정말 잘읽었어요. 공부하다가 어려웠는데 글을 알기 쉽게 써주셔서 이해하는데 도움이 되었어요~! 정말감사합니다.

답글 달기
comment-user-thumbnail
2024년 2월 12일

감사합니다

답글 달기