컴퓨터 네트워크 모델과 계층

김아현·2024년 1월 11일
0

Computer-Science

목록 보기
2/6
post-thumbnail

컴퓨터 네트워크 모델이란?

컴퓨터 네트워크에는 다양한 기기 간 통신을 위해 약속된 구조가 존재합니다.

OSI Model
TCP/IP Model

이러한 모델들의 목표는 한 컴퓨터 시스템으로부터 다른 컴퓨터 시스템으로의 데이터 전송입니다. 모델은 여러 계층으로 이루어져있고, 각 계층에선 신뢰성 있는 전송 서비스가 요구됩니다.

또한, 이러한 목적으로 만들어졌기 때문에 통신이 일어나는 과정을 단계별로 파악할 수 있습니다. 계층화를 통해 데이터 흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉬워 집니다. OSI 모델의 경우 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있습니다.

OSI 7 Layer Model

OSI 7 계층(Open Systems Interconnection Reference Model)은 표준 프로토콜을 사용하여 다양한 통신 시스템이 통신할 수 있도록 국제표준화기구에서 만든 개념 모델입니다. 이 모델은 7개의 추상적 계층으로 통신 시스템을 나누며 각 계층은 다음 계층 위에 쌓인 형태입니다.

  • 7.응용 프로그램 계층 (Application Layer)
  • 6.표현 계층 (Presentation Layer)
  • 5.세션 계층 (Session Layer)
  • 4.전송 계층 (Transport Layer)
  • 3.네트워크 계층 (Network Layer)
  • 2.데이터 링크 계층 (Data Link Layer)
  • 1.물리 계층 (Physical Layer)

OSI 7계층 모델에서의 데이터의 송수신은 간략하게 아래와 같이 말할 수 있습니다.

송신 : 높은 계층에서 낮은 계층으로 데이터 전달
수신 : 낮은 계층에서 높은 계층으로 데이터 전달

각 계층은 서로 독립적이며, 송신 과정에서 각 계층에 필요한 정보를 점진적으로 추가해 데이터를 가공합니다. 이때, 각 데이터를 제어하는 헤더(header)트레일러(trailer)가 붙게 되는데 이 과정을 데이터 캡슐화라고 부릅니다.

데이터 캡슐화(Encapsulation)과 역캡슐화(Decapsulation)

은닉화 : 캡슐화는 한 계층에서 추가된 헤더를 다른 계층이 볼 수 없게하는 은닉의 효과를 갖는다.

다음으로, OSI 7계층에서 가장 상위에 위치한 응용 프로그램 계층부터 탑다운으로 살펴보겠습니다.

7.응용 프로그램 계층 (Application Layer)

요약 : HTTP, SMTP, FTP 등의 프로토콜을 사용자에게 UI를 통해 제공한다.

응용 프로그램 계층은 사용자의 데이터와 직접 인터랙션하는 유일한 계층입니다. 웹 브라우저 및 이메일 클라이언트와 같은 SW 애플리케이션들은 통신을 위해 이 계층을 의지합니다. 즉, HTTP, FTP, SMTP와 같은 프로토콜을 응용 프로그램의 UI를 통해 제공하는 계층입니다. 더 정확히 말하자면 응용 프로그램 계층은 소프트웨어가 사용자에게 의미있는 데이터를 제공하기 위한 프로토콜과 데이터를 조작하는 역할을 합니다.

6.표현 계층 (Presentation Layer)

요약 : 데이터를 표준화된 형식으로 변경한다.

표현 계층은 주로 데이터의 번역을 담당하며, 응용 프로그램 계층 대신 사용자 시스템에서 데이터 형식 처리를 진행합니다. 즉, 데이터 변환, 암호화, 압축을 담당합니다. 예시로는, SMTP 프로토콜에 사용되는 전자우편 포맷인 "MIME"의 인코딩과 암호화가 이 계층에서 이루어집니다.

데이터 변환 : 서로 다른 두 통신 장치는 서로 다른 인코딩 방법을 사용하고 있을 수도 있으므로, 표현 계층은 수신 장치의 애플리케이션이 이해할 수 있는 구문으로 수신 데이터를 변환합니다.

암호화 : 장치가 암호화된 연결로 통신할 경우, 최종 송신자에게 암호화를 추가하거나 수신자에게 디코딩해 읽기 쉬운 데이터로 애플레킹션 계층 사용을 돕는 역할을 합니다.

압축 : 애플리케이션 계층에서 수신한 데이터를 제 5계층인 세션 계층으로 전송하기 전에 압축합니다. 전송 데이터 양을 최소화하여 통신 속도와 효율을 높입니다.

5.세션 계층 (Session Layer)

요약 : 세션의 유지 및 해제 등 응용 프로그램 간 통신 제어와 동기화를 한다.

세션 계층에서는 세션 복구도 가능한데 이때, 체크포인트라는 것을 통해 동기화를 진행한다. 예를 들어 클라이언트에서 서버로 데이터를 전송할 때, 5MB를 체크포인트로 설정하고 48MB 데이터 전송 중 연결이 끊어졌다고 해봅시다. 5MB 단위의 체크포인트 설정으로 인해 45MB부터 데이터 전송 세션을 재개할 수 있습니다.

4.전송 계층 (Transport Layer)

요약 : 신뢰성 있는 데이터 전달을 위한 계층으로, TCPUDP같은 전송 방식과 포트번호를 결정한다. 세션 계층에서 가져온 데이터를 하위로 보내기 전에 데이터를 세그먼트로 분할하는 역할을 한다.

서로 다른 두 네트워크 간의 전송을 담당하는 계층으로, 상위 계층에서 데이트를 받아세그멘테이션하여 하위 계층으로 데이터를 전송합니다. 작은 단위로 나뉜 데이터로 인해 유튜브 영상을 보는 것과 같이, preload된 데이터를 미리 볼 수 있고 손실률이 적어집니다.
흐름제어는 서로 전송 속도가 다른 기기 사이에서 전송률을 알고리즘을 통해 제어하는 방식입니다.
오류제어는 전송 과정에서 보낸 데이터에 오류가 발생했는지 확인하고 제어하는 방식입니다.

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

요약 : 데이터를 송신부에서 수신부가지 보내기 위한 최적 경로를 선택하는 라우팅을 수행한다. 이때 선택한 최적 경로를 라우트(route)라고 한다. 네트워크 계층의 장비로는 라우터(router)가 있다.

데이터의 전송을 담당하며 호스트에게 IP번호를 부여하고, 도착지까지 최적 경로를 찾습니다. 데이터 링크 계층은 동일한 네트워크 내의 전송을 담당하는 한편, 네트워크 계층은 서로 다른 두 네트워크의 전송을 담당합니다.

요약 : 데이터 흐름을 관리하며 동일한 네트워크에 있는 두 장치 간 데이터 전송을 용이하게 한다. 데이터의 오류 검출 및 복구를 수행하며, 브릿지(bridge), 스위치(Switch), 이더넷(Ethernet)의 장치가 이 계층에 속한다.

데이터 링크 계층의 데이터 단위를 프레임이라고 부릅니다. 프레임은 데이터그램에 헤더와 트레일러를 붙여 캡슐화한 단위입니다. 이때, MAC 주소가 프레임 헤더에 들어있어 데이터의 출처와 목적지를 알 수 있습니다. 물리적 주소인 MAC address는 xx:xx:xx:xx:xx:xx 형식의 6Byte로 전 세계에서 유일한 주소입니다.

데이터 링크 계층도, 전송 계층과 유사한 오류제어흐름제어를 지원합니다. 단, 차이점은 데이터 링크 계층은 전진 오류 수정방식을 사용하고, 전송 계층은 검출 후 재전송 방식을 사용한다는 점입니다.

  • 오류제어 : 송신 측에서 데이터를 프레이밍하고 이를 0과 1 bit로 변환해 수신자에게 보내, 물리적 손실과 전기적 신호 변형 등에 매우 취약한 형태입니다. 따라서, 수신 장치의 링크 계층이 데이터를 받은 후 프레이밍 하는 과정에서 에러를 검출합니다.
  • 흐름제어 : 송신자와 수신자의 처리 속도 차이를 해결합니다.

1.물리 계층 (Physical Layer)

요약 : 데이터를 bit 단위의 0과 1의 신호로 변환한 후 송신자가 장비를 사용해 전송하거나, 수신자가 전기 신호로 데이터를 복원한다. 스위치(Switch)리피터(repeater)허브(hub), 케이블 등이 물리 계층에 해당하는 장치이다.

OSI 모델과 TCP/IP 모델의 차이점

  • OSI는 7개의 계층이 있다. 반면, TCP/IP는 4개의 계층이 있다.
  • OSI는 수직적 접근 방식을 따른다. TCP/IP는 수평적 접근 방식을 따른다.
  • OSI는 다른 상호 연결 및 통신이 가능한 시스템에서 사용되는 네트워크 통신(개방형 시스템 상호 연결)을 정의하는 논리 모델이다. TCP/IP는 특정한 컴퓨터를 인터넷에 연결하는 방법과 컴퓨터 간 전송(Transmission 제어 프로토콜)을 정의한다.
  • OSI 헤더는 5Byte이다. TCP/IP 헤더는 20Byte이다.
  • OSI는 라우터, 스위치, 마더보드 및 기타 하드웨어를 표준화한다. TCP/IP는 서로 다른 유형의 컴퓨터 간 연결 설정을 돕는다.

TCP/IP Model

  • TCP(Transmission Control Protocol)는 데이터를 나눈 단위인 패킷의 전달 여부와 전송 순서를 보장하는 통신 방식입니다.
  • IP(Internet Protocol)은 인터넷 주소 체계로, 소스 장치에서 대상 장치로 패킷을 전달하는 것이 핵심 기능입니다.

TCP/IP란 OSI 7계층을 단순화해 만든 인터넷에서 데이터를 주고받기 위한 네트워크 프로토콜입니다. 이 4계층의 데이터 흐름과 각 계층의 역할은 아래와 같습니다.

4.응용 계층 (Application Layer)
3.전송 계층 (Transport Layer)
2.인터넷 계층 (Internet Layer)
1.네트워크 인터페이스 계층 (Network Interface Layer)
- 1.1 물리 계층(Physical Layer)
- 1.2 데이터 링크 계층(Data Link Layer)

1. 네트워크 인터페이스 계층(Network Interface Layer)

요약 : 네트워크 접근 계층이라고도 하며, 데이터를 전기 신호로 변환하고 MAC주소를 사용해 기기에 데이터를 전달한다. 이더넷, Wi-fi등이 대표적인 프로토콜이다.

2. 인터넷 계층 (Internet Layer)

요약 : 데이터를 최종 목적지까지 도달할 수 있게 하는 계층으로, IP가 대표적인 프로토콜이다. 이 계층에서는 전송 계층으로부터 받은 데이터에 헤더를 붙여 캡슐화하는데 이를 패킷(Packet) 혹은 데이터그램(Datagram)이라 한다.

3.전송 계층 (Transport Layer)

요약 : 데이터의 신뢰성을 보장하며, 포트 번호로 데이터를 적절한 응용 프로그램에 전달하는 역할을 한다. TCPUDP 프로토콜이 이 계층에 속하며 데이터 단위는 Segment라고 부른다.

4.응용 계층 (Application Layer)

요약 : 사용자와 소프트웨어를 연결하는 계층. HTTP, HTTPS, DNS 등의 프로토콜이 작동한다.

프로토콜의 개념과 Application Protocols

프로토콜이란?

네트워크에서 프로토콜은 둘 이상 장치에서 서로 통신하고 이해할 수 있도록 특정 작업을 수행하고 데이터 형식을 지정하는 표준화된 방법입니다. 다양한 프로토콜이 있지만 이번 포스트에서는 아래 프로토콜들에 대해서 알아보겠습니다.

  1. TCP (Transmission Control Protocol, 전송 제어 프로토콜)
  2. UDP (User Datagram Protocol, 사용자 데이터그램 프로토콜)
  3. DNS (Domain Name System)
  4. FTP (File Transfer Protocol)
  5. SMTP (Simple Mail Transfer Protocol)
  6. SNMP (Simple Network Management Protocol)
  7. HTTP (HyperText Transfer Protocol)

1. TCP (Transmission Control Protocol, 전송 제어 프로토콜)

TCP (Transmission Control Protocol, 전송 제어 프로토콜)는 OSI와 TCP/IP의 전송 계층에서 사용되는 연결 지향적 프로토콜입니다. 여기서, 연결 지향적이란 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜을 의미합니다. 대표적인 예로는 P2P Socket 통신이 있습니다. TCP에서 가장 중요한 점은, 신뢰성 있는 데이터 통신을 목적으로 한다는 점입니다.

TCPUDP 모두 포트 번호를 이용하여 주소를 지정하는 것과 데이터 오류 검사를 위한 Checksun이 존재하는 공통점을 갖고 있습니다. 하지만, 정확성을 추구할지(TCP)와 신속성을 추구할지(UDP)에 따라 차이점을 갖습니다.

TCP 프로토콜의 기능은 아래와 같습니다.
1. 신뢰성 있는 데이터 전송
2. 흐름 제어 (Flow Control)
3. 혼잡 제어 (Congestion Control)
4. 오류 감지 (Error Detection)

TCP의 데이터 전송 (Data delivery)

TCP 프로토콜은 데이터 정확히, 유실 없이, 올바른 순서로 데이터가 전송됨을 보장합니다. 만일 TCP가 사용되지 않았다면 부정확한 데이터가 전송될 수도 있습니다. 이러한 신뢰성 있는 데이터 전송을 위해, TCP는 연결을 시작할 때엔 3-way handshake를, 연결을 종료할 때는 4-way handshake를 통해 통신을 수행합니다. handshake의 과정에서는 송신부와 수신부 간의 연결을 제어 및 관리할 수 있도록 flag값을 주고받습니다.

주요한 flag의 종류

  • SYN : Synchronization(동기화)의 약자로, 연결을 생성할 때 사용
  • FIN : Finish(종료)의 약자로, 연결을 끊을 때 사용
  • ACK : Acknowledgement(승인)의 약자로, 데이터를 전송하면 수신자가 받았음을 알려줄 때 사용

3-way handshake

TCP 통신을 위한 네트워크 연결은 3-way handshake 방식으로 연결됩니다. 3 way handshake는 서로 포트를 확인하고 3번의 요청/응답 이후에 연결되어 UDP 방식보다 속도가 느려지는 원인이 된다.

연결 과정

  1. SYN, Client -> Server : 첫번째 단계로, 클라이언트는 서버와 연결을 요청하려 합니다. SYN 과 함께 Segment를 보냅니다.
  2. SYN-ACK, Server : LISTEN 상태에서 클라이언트로부터 SYN 데이터를 받고 SYN_RCV(SYN Received)로 상태가 변경된다. 서버 호스트는 클라이언트에게 SYN-ACK bit set을 응답으로 보냅니다. 이는 정상적인 세그먼트 수신의 응답인 ACK 신호와 함께 클라이언트 포트를 연결해달라는 요청인 SYN을 전송합니다.
  3. ACK, Client : SYN-ACK를 받은 클라이언트는 ESTABLISHED로 상태를 변경하고 서버에게 정상적인 수신의 응답인 ACK를 전송합니다.ACK를 받은 서버 또한 상태가 ESTABLISHED가 됩니다.

위와 같은 연결 과정을 거쳐, 1~3번의 통신이 정상적으로 이루어지면 서로의 포트가 ESTABLISHED 되며 연결됩니다.

4-way handshake

4-way handshake는 TCP 연결을 해제할 때 이뤄지는 과정입니다. 연결을 해제할 때에는 이름과 마찬가지로 요청과 응답을 총 4번 주고받게 됩니다.

해제 과정

  1. FIN, Client -> Server : 클라이언트가 서버와의 연결을 종료하고자 FIN 메세지를 보냅니다. 송신에 성공하면 서버는 FIN_WAIT1 상태가 됩니다.
  2. ACK, Server -> Client : 서버가 클라이언트로부터 FIN 메세지를 성공적으로 받으면 응답으로 ACK 메세지를 보냅니다. 이때 클라이언트는 CLOSE_WAIT 상태가 되고, 앱을 종료하는 등의 작업을 수행합니다. 동시에 서버에서는 ACK 메세지에 의해 FIN_WAIT2 상태가 됩니다.
  3. FIN, Client -> Server : 클라이언트에서는 연결 종료 준비가 끝나면 서버에 FIN 메세지를 보내고 LAST_WAIT 상태가 됩니다.
  4. ACK, Server -> Client : 서버는 3단계 클라이언트에서 보낸 FIN 메세지에 응답하기 위해 ACK 메세지를 보내고 TIME_WAIT 상태가 됩니다. 일정 시간 동안 TIME_WAIT 상태를 유지하여 수신 지연으로 발생한 패킷 유실이나 ACK가 제대로 전달되지 않아 발생한 연결 미해지에 대비합니다. LAST_WAIT 상태의 클라이언트는 서버로부터 ACK를 받고 CLOSED 상태가 됩니다.

2. UDP (User Datagram Protocol, 사용자 데이터그램 프로토콜)

UDP (User Datagram Protocol)는 OSI와 TCP/IP의 전송 계층에서 사용되는 비연결 지향적 프로토콜입니다. 비연결이란 통신 전에 연결 설정이 되어있지 않다는 점으로, TCP와 가장 큰 차이점입니다. 또한, UDP는 데이터 패킷 전달을 보장하지 않습니다. 수신자 측에서의 데이터 수신 여부가 중요치 않기 때문에 TCP보다 빠릅니다.

이러한 특징에 의해 UDP는 주로 빠른 통신이 필요한 곳에 사용되며 게임, 스트리밍, 비디오 및 음악 스트리밍과 같이 안정성을 고려하지 않는 네트워크에서 사용합니다.

TCP와 UDP의 차이점

3. DNS (Domain Name System)

DNS는 사용자가 숫자로된 인터넷 프로토콜 주소(IP)대신 인터넷 도메인 이름과 검색 가능한 URL을 사용하여 웹사이트에 접속하는 것을 가능하게 합니다.

4. FTP (File Transfer Protocol)

FTP파일 전송 프로토콜의 약자로 TCP/IP 네트워크의 장치가 파일을 전송할 때 사용하는 규칙입니다. FTP는 클라이언트-서버 프로토콜로, 클라이언트 파일 요청 시 서버가 요청한 파일을 제공할 수 있습니다. 따라서 FTP 프로토콜 연결 설정을 위해선 두 가지 기본 채널이 필요합니다.

FTP의 원리

  • 명령 채널 : 명령을 시작해 어떤 파일에 엑세스할 것인지 등과 같은 기본 정보를 전달한다. 제어 포트인 21번 포트로 사용자 인증, 명령을 위한 채널이 만들어진다.
  • 데이터 채널 : 두 장치 간에 파일 데이터를 전송한다.

연결을 설정하려면 사용자가 FTP 서버 로그인 정보를 제공해야 합니다. 일반적으론 21번 포트를 기본 통신 모드로 사용하며, 데이터 채널의 연결 모드에는 능동 모드수동 모드 2가지가 존재합니다.

FTP의 보안

FTP는 보안 프로토콜로 계획되지 않았기 때문에 FTP 전송은 암호화되지 않아 수많은 보약 취약점이 존재합니다. 대표적인 취약점은 아래와 같습니다.

  • 무차별 대입 공격
  • FTP 바운스 어택
  • 패킷 캡처
  • 포트 재킹
  • 스푸핑
  • 사용자 이름 열거

이러한 보안상 단점으로 오늘 날엔 FTP를 대체할 SFTP, HTTPS등의 프로토콜 옵션이 시장에 출시되었으며 2020년부터 Google은 FTP 지원을 중단했습니다.

5. SMTP (Simple Mail Transfer Protocol)

단순 전자우편 전송 프로토콜(SMTP)은 네트워크를 통해 전자우편-이메일-을 전송하는 기술 표준입니다. 다른 네트워킹 프로토콜들과 마찬가지로, HW나 SW관계없이 데이터를 교환할 수 있습니다.

6. SNMP (Simple Network Management Protocol)

SNMP))는 UDP/IP(사용자 데이터그램 프로토콜/인터넷 프로토콜)를 사용하여 이더넷 연결을 통해 네트워크 관리 작업을 수행하는 응용 계층 프로토콜입니다.

⭐️7. HTTP (HyperText Transfer Protocol)

HTTP (HyperText Transfer Profocol)는 인터넷상에서 데이터를 전송하기 위한 프로토콜로, TCP/IP 4계층에서 응용 계층에 속한다. 주로 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다. 주로 TCP를 사용하고, HTTP/3부터는 UDP를 사용하며 80번 포트를 사용한다.

HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며 클라이언트-서버 사이에서 이루어지는 요청/응답(Request/Response) 프로토콜입니다. 여기서 클라이언트-서버 프로토콜이란 수신자 측(클라이언트)에 의해 요청이 초기화되는 프로토콜입니다.

위 이미지는 TCP/IP 4번째 계층인 응용 계층에서 Web application과 HTTP 프로토콜의 관계를 나타낸 그림입니다.

클라이언트와 서버는 데이터 스트림과는 대조적으로, 개별적인 메세지 교환에 의해 통신합니다. 보통 브라우저인 클라이언트에 의해 전송되는 메세지를 요청(requests)라 부르며, 그에 대해 서버에서 응답으로 전송되는 메세지를 응답(responses)라고 부릅니다.

HTTP의 특징

  1. 비연결성
  2. 무상태

1. 비연결성(connectionless)

HTTP의 비연결성(Connectionless)클라이언트에서 요청을 보낸 후 서버로부터 응답을 받으면 연결을 끊는 것을 의미합니다. 비연결성은 불특정 다수를 대상으로 하는 서비스에 유리합니다. 서버에서 응답을 받고 서도 연결을 유지하려면 그만큼 자원을 사용하게 됩니다. 따라서 연결을 필요시에만 유지하면 자원을 효율적으로 사용할 수 있습니다.

하지만, 이런 특징 때문에 서버가 클라이언트를 기억할 수 없다는 단점이 있습니다. 또한, 동일한 클라이언트에서 연속적으로 요청이 오면 연결과 해제 과정이 반복되어 자원이 낭비됩니다.

이러한 단점을 보완하기 위해 HTTP 헤더의 일종인 HTTP Keep Alive를 사용하여 마지막 응답 이후 일정 시간 동안 연결을 유지합니다. 이를 통해 동일한 클라이언트로부터 온 요청이 오면 연결을 생략할 수 있습니다.

2. 무상태(stateless)

HTTP에서의 무상태(Stateless)서버에서 클라이언트의 상태를 저장하지 않는 것을 의미합니다. 따라서 클라이언트는 요청에 필요한 데이터를 모두 가지고 있어야 합니다. 또는 서버가 클라이언트로 받은 요청 사항을 모두 저장해야 합니다. 이 방법들을 쿠키(Cookie)세션(Session)이라고 부릅니다.

무상태의 장점은 서버 확장성이 높다는 점입니다. 클라이언트 상태를 저장하지 않기에, 요청에 응답하는 서버가 바뀌어도 됩니다. 따라서 특정 서버에 문제가 생겨 응답하지 않더라도 신규 서버 확장으로 요청에 따른 응답을 보내 문제를 해결할 수 있습니다.

쿠키와 세션?

쿠키 (Cookie) : 클라이언트 로컬 웹 브라우저에 저장하는 데이터파일로, 키와 값을 저장한다. 대표적인 예로는 로그인 정보와 장바구니가 있으며 약 4kb이다.
세션 (Session) : 서버에서 클라이언트와 연결 정보를 저장 및 관리하는 것을 말한다. 서버에 데이터가 저장되므로 보안 면에서는 쿠키보다 좋지만, 접속자가 많을 경우 서버에 과부하가 올 수 있다. 용량에 제한이 없다.

HTTP 메세지 구조

클라이언트와 서버 사이 소통은 ASCII 메세지로 이루어진다.

HTTP 메서드


참고자료
IBM - DNS(Domain Name System)란 무엇인가요?
Dropbox - what is FTP
MDN web docs - HTTP Overview
[Network] TCP / UDP의 개념과 특징, 차이점

profile
멘티를 넘어 멘토가 되는 그날까지 파이팅

0개의 댓글