✅ 프로토콜

  • 컴퓨터간 통신을 하기 위한 규칙을 프로토콜이라고 말합니다.
    • 프로토콜은 독립적인 여러 규칙이 필요합니다.

예시
택배 물건 준비 ➡️ 우체국 방문 ➡️ 택배 물건 회수 ➡️ 물류센터에서 분류 ➡️ 택배 물건 이송 ➡️ 택배 수령

각 순서에 따라 담당자가 정해져 있어 그 담당자는 그 업무만 반복 수행하게 됩니다.
이 예시와 같이 프로토콜도 여러개의 프로토콜이 각자의 역할을 담당하며 컴퓨터와의 통신이 이루어집니다.

1️⃣ OSI 7 Layer

  • ISO(국제표준화기구)에서 OSI 모델을 제정 하였습니다.
    • 여러 컴퓨터 간의 데이터 전송을 지원할 수 있는 추상 모델을 표준화 한 것

  • Layer의 역할

    Layer는 반드시 순서를 지켜 데이터를 보냅니다. (ex: 7Layer ➡️ 1Layer 는 안됨)

    • 1Layer(물리계층) : 시스템간 물리적 연결과 전기신호 변환 및 제어
    • 2Layer(데이터링크 계층) : 네트워크 기기간 데이터 전송 및 물리 주소 결정
    • 3Layer(네트워크 계층) : 다른 네트워크와 통신을 위한 경로 설정 및 논리 주소 결정
      • 여러 네트워크를 거치는 경로를 관리한다고 생각하면 됩니다.
    • 4Layer(전송 계층) : 신뢰할 수 있는 통신 구현
      • 데이터가 중간에 깨지면, 깨진 부분을 확인해서 재전송을 한다던지 등 전송한 대로 받을 수 있게 해줍니다.
    • 5Layer(세션 계층) : 세션 채결, 통신 방식등을 결정
      • 세션 간에 통신을 담당하는 계층입니다.
    • 6Layer(표현 계층) : 문자 코드, 압축, 암호화 등의 데이터 변환
      • 네트워크 통신 중 데이터가 해킹될 수 있기 때문에 암호화를 진행하는 계층이라고 보시면 됩니다.
    • 7Layer(응용 계층) : 이메일, 파일 전송, 웹사이트 열람등 애플리케이션에 대한 서비스 제공
      • 응용 프로그램이 필요로 하는 기능을 지원하는 계층입니다.

더 자세한 설명은 아래 작성

2️⃣ 캡슐화와 역캡슐화

캡슐화란?

데이터를 전송할 때 캡슐처럼 데이터를 헤더에 감싸 전송하는 것을 캡슐화라고 합니다.
header 는 데이터와 같이 전송되는데 이를 간단히 설명하면 택배 송장과 같이 정보를 붙여 전송하는 것 입니다. (각 레이어에 정의되어 있는 정보를 보냄)
body 는 실제 데이터를 의미합니다.

  • 송신 : 캡슐화(Encapsulation) / 수신 : 역캡슐화(Decapsulation)

3️⃣ Layer의 역할

❶ 물리 계층 (Physical Layer)

  • 데이터를 전기 신호로 디지털 신호로 변환해서 송수신 (0와 1로)
  • 물리적 네트워크 사이의 데이터 송수신을 담당
  • 대표적인 프로토콜로는 Ethernet(이더넷) 프로토콜 입니다.
  • 물리 계층과 다른점은 헤더의 MAC Address 확인 후 데이터를 전송합니다.

❸ 네트워크 계층 (Network Layer)

  • 네트워크 상에서, 컴퓨터간 논리적 연결을 위해 사용됩니다.
  • 논리적 연결이란?
    • 각 컴퓨터 간의 주소(IP)를 구분하여 해당 컴퓨터로 데이터가 갈 수 있도록 하는 것이 논리적 연결입니다.
  • 대표적인 포로토콜은 IP 프로토콜 입니다.

❹ 전송 계층 (Transport Layer)

  • 데이터가 이동이 될 때, 네트워크 문제로 인해 데이터가 손실이 되거나 전달이 안 될 수 있는데, 이 부분을 체크해서 정확한 전달이 되도록 하는 부분을 담당합니다.
  • 데이터가 어느 응용 프로그램으로 전달되어야 하는지 포트로 알려줍니다.
  • 대표적인 프로토콜로는 TCP, UDP 프로토콜 입니다.

❺ 세션 계층 (Session Layer)

  • 세션별로 데이터 송수신이 가능하게 합니다.
    • 예시로 FTP로 여러 파일을 받을 때, 각 파일 별로 연결/관리 처리

❻ 표현 계층 (Presentation Layer)

  • 응용 계층으로 부터 전달 받거나, 전달하는 데이터의 암호화를 담당합니다.
    • 해커가 데이터를 모니터링 할 수 도 있습니다. 정보 유출을 막기 위해 암호화를 하여 데이터를 보호합니다.

❼ 응용 계층 (Application Layer)

  • 네트워크 응용 프로그램을 위한 인터페이스를 제공합니다.
  • 응용프로그램 별로 데이터를 처리함에 있어 별도의 포로토콜을 사용할 때가 있기 때문입니다.
    • 대표적인 프로토콜로는 HTTP가 있습니다.

💡 용어

  • 패킷 (Packet) : 네트워크 계층에서 정의되는 데이터 단위
  • 프레임 : 데이터 링크 계층에서 정의되는 데이터 단위

✅ TCP와 UDP 프로토콜

프로그램 언어에서도 어떤 프로토콜을 사용할 지 정하는 함수가 많습니다.

  • TCP : 연결형 프로토콜로 데이터의 전송 순서를 보장하고, 데이터의 신뢰성을 보장합니다.
    • 데이터의 신뢰성이란, 데이터가 손실, 유실되지 않고 정확하게 전달한다는 의미 입니다.
    • TCP는 연결 단계를 거쳐 전송 단계에 도달하게 되는데, 이때 송신자가 데이터를 보내고 수신자는 데이터 전송을 잘 받았는지를 확인 시켜 신뢰성을 보장합니다.

  • TCP 3-way-handshake : TCP 통신을 위한 연결 설정 과정입니다.
    * TCP의 연결 단계를 뜻하며, 클라이언트에서 SYN을 보내 수신 가능 확인을 하고, 서버에서 SYN, ACK로 송신이 가능한지 확인하여 클라이언트에 보냅니다. 클라이언트는 이를 확인하고 ACK를 보내 연결을 마칩니다.

  • TCP 4-way-handshake : TCP의 연결 해제 과정입니다.
    * 데이터를 다 보내고 난 뒤, 연결을 해제할 때 나타나는 과정입니다.
    클라이언트에서 FIN을 보내 연결을 종료한다고 알리고, 서버에서 ACK를 보내 연결을 종료해도 되는지 확인합니다. 확인을 마친 후 FIN을 클라이언트로 보내 종료를 해도 된다고 알린 뒤, 클라이언트가 ACK를 보내 연결을 종료 합니다.

  • UDP : 비연결형 프로토콜로 TCP보다 전송속도가 빠릅니다. 주로 스트리밍, 브로드캐스팅 서비스에 사용합니다.
    • 빠르기 때문에 사용하는 것은 아닙니다. 신뢰성이 TCP보다 중요하지 않을 때 주로 사용합니다.
    • 비연결형이란 송신자가 데이터를 보내면 수신자는 데이터를 받았는지에 대해 확인을 하지 않습니다.
      그렇기 때문에 데이터 손실이 일어날 수 있지만, TCP보다 로직이 복잡하지 않아 전송 속도가 빠릅니다.

✅ TCP 제어

  • 흐름 제어(sliding window)

    • 매번 ACK를 기다리지 않고, 여러 패킷을 연속해서 송신하기 위해 사용됩니다.
    • 송,수신자의 윈도우 사이즈를 확인하고, 윈도우 사이즈 만큼 ACK없이 연속해서 송신하는 기법입니다.
  • 혼잡 제어(Congestion window)

    • 느린 시작(Slow Start) : 처음에는 CWND = 1로 시작하고 ACK가 도착하면(패킷 전송 성공)
      CWND = CWND*2로 증가합니다. 그 후 ACK가 일정시간 동안 도착하지 않을 경우(패킷 전송 실패) CWND = 1로 초기값으로 만듭니다.
    • 혼잡 회피(Congestion Avoidance) : CWND가 일정 크기에 도달하면, ACK 도착(패킷 전송 성공)시 CWND = CWND + 1을 하게 됩니다.

✅ IP

  • Internet Protocol version 4를 사용하고 있습니다.
    • 32bit로 구성 되어있습니다. (0.0.0.0 ~ 255.255.255.255)
    • Internet Protocol version 6 도 있지만, 대부분 v4를 사용하고 있기 때문에 잘 사용하지는 않습니다.(v6는 128bit로 구성되어 있음)

💡 IP 모델

  • 인터넷 통신을 위한 모델입니다.
  • TCP는 7계층이 있지만 IP모델은 4개의 계층으로 구성 되어 있습니다.
    • 네트워크 접속 계층 (Network Access Layer)
    • 인터넷 계층 (Internet Layer)
    • 전송 계층 (Transport Layer)
    • 응용 계층 (Application Layer)

💡 용어

  • 포트 : 목적지의 어떤 응용 프로그램에 데이터를 전달해야하는지 식별하는 기능을 합니다.
    • 포트 번호는 0 ~ 65535 로 구성되어 있고, 일반적인 포트 번호는 웹서버 80, 이메일 110, FTP21 로 되어있습니다.

💁🏻‍♀️ UDP는 다음 게시물에서 자세히 다루도록 하겠습니다.

profile
#UXUI #코린이

0개의 댓글