hy30nq's blog

프로토콜 본문

ELITE HACKER bootcamp/Pre.web

프로토콜

hy30nq 2024. 3. 28. 13:54
728x90

OSI 7계층 모델은 네트워크에서 데이터가 어떻게 이동하는지 이해하는 데 도움을 주는 개념적 프레임워크입니다.
이 모델은 데이터 통신을 일련의 단계로 나누며, 각 단계는 특정 작업과 표준을 담당합니다. OSI 모델은 7개의 계층으로 구성되어 있으며, 각 계층은 특정 프로토콜과 관련이 있습니다.

1. 물리 계층 (Physical Layer)

  • 기능: 데이터 전송과 수신을 위한 하드웨어적 전송 매체(케이블, RJ45 등)의 전기적, 물리적 세부 사항을 처리합니다.
  • 프로토콜 예시: Ethernet, USB
  • 예시: 네트워크 케이블을 통해 데이터를 전송하거나 수신하는 것

2. 데이터 링크 계층 (Data Link Layer)

  • 기능: 네트워크에서 데이터의 오류 없는 전송을 보장합니다. MAC 주소를 사용하여 장치를 식별합니다.
  • 프로토콜 예시: Ethernet, Wi-Fi (IEEE 802.11)
  • 예시: Wi-Fi 신호를 통해 노트북과 라우터 간의 데이터 전송

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

  • 기능: 데이터 패킷을 소스에서 목적지로 라우팅합니다. IP 주소를 사용하여 장치를 식별합니다.
  • 프로토콜 예시: IP (IPv4, IPv6)
  • 예시: 이메일을 보낼 때 이메일이 인터넷을 통해 수신자에게 도달하도록 하는 과정

4. 전송 계층 (Transport Layer)

  • 기능: 두 장치 간의 데이터 전송을 관리합니다. 신뢰할 수 있는 통신을 위해 세그먼트로 데이터를 분할하고 재조합합니다.
  • 프로토콜 예시: TCP (Transmission Control Protocol), UDP (User Datagram Protocol)
  • 예시: 웹 페이지를 요청할 때 브라우저와 서버 간의 데이터 전송 관리

5. 세션 계층 (Session Layer)

  • 기능: 양방향 통신 세션을 설정, 관리, 종료합니다. 이를 통해 어플리케이션 간의 대화가 가능해집니다.
  • 프로토콜 예시: 없음 (APIs와 서비스가 이 역할을 수행)
  • 예시: 온라인 게임 중 서버와의 연결 관리

6. 표현 계층 (Presentation Layer)

  • 기능: 데이터 형식을 변환하고, 암호화 및 압축을 담당합니다. 이를 통해 데이터가 다른 시스템에서도 이해할 수 있는 형식으로 전송됩니다.
  • 프로토콜 예시: SSL/TLS
  • 예시: 웹 브라우저가 HTTPS를 사용하여 데이터를 암호화하고 전송하는 과정

7. 응용 계층 (Application Layer)

  • 기능: 사용자와 가장 가까운 계층으로, 네트워크 서비스를 사용자 어플리케이션에 제공합니다.
  • 프로토콜 예시: HTTP (웹 서비스), FTP (파일 전송), SMTP (이메일
  • 전송)
  • 예시: 웹 브라우저를 통해 웹사이트에 접속하는 것

참고 자료


TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 데이터를 전송하는 데 사용되는 두 가지 주요 프로토콜로, 전송 계층(Transport Layer)에 속합니다. 이들은 데이터를 어떻게, 얼마나 신뢰성 있게 전송할지에 대해 서로 다른 접근 방식을 취합니다.

TCP (Transmission Control Protocol)

  • 기능: 신뢰할 수 있는 데이터 전송을 보장합니다. 데이터가 목적지에 도착하지 않았을 경우 재전송을 시도하며, 데이터가 올바른 순서로 도착하도록 합니다.
  • 특징:
    • 연결 지향적: 데이터 전송 전에 통신을 시작할 두 단말 간에 연결을 설정합니다.
    • 신뢰성 있는 데이터 전송: 손실된 패킷은 재전송됩니다.
    • 순서 보장: 데이터 패킷은 전송된 순서대로 도착합니다.
    • 혼잡 제어 및 흐름 제어: 네트워크 혼잡 상태와 수신자의 수용 능력에 따라 데이터 전송 속도를 조절합니다.
  • 적용 예시: 웹 페이지 로딩, 이메일 전송, 파일 전송 등 오류 없이 완전한 데이터 전송이 필요한 경우

UDP (User Datagram Protocol)

  • 기능: 연결을 설정하지 않고 데이터를 전송합니다. 신뢰성이 낮지만, 처리 속도가 빠릅니다.
  • 특징:
    • 비연결 지향적: 사전에 연결을 설정하지 않고, 데이터를 바로 전송합니다.
    • 신뢰성 없는 데이터 전송: 데이터가 손실되거나 순서가 바뀌어도 재전송하지 않습니다.
    • 순서 없는 데이터 전송: 데이터는 어떤 순서로도 도착할 수 있습니다.
    • 경량 프로토콜: 오버헤드가 낮아 네트워크 자원을 적게 사용합니다.
  • 적용 예시: 실시간 스트리밍, 온라인 게임, 음성 및 비디오 통화 등 실시간성이 중요하고 일부 데이터 손실이 용납되는 경우

TCP와 UDP 사이의 선택은 애플리케이션의 요구 사항에 따라 달라집니다. 신뢰성과 데이터 순서가 중요한 경우 TCP가 적합하며, 빠른 데이터 전송과 효율성이 중요한 경우 UDP를 선택합니다. 이러한 차이로 인해 각 프로토콜은 네트워크 통신의 다양한 측면을 서로 보완하며 사용됩니다.

참고 자료


TCP(Transmission Control Protocol)와 IP(Internet Protocol)는 인터넷에서 데이터를 전송하는 데 사용되는 두 가지 기본 프로토콜입니다. 이 두 프로토콜은 함께 작동하여 인터넷 통신의 핵심을 이루며, 때로는 TCP/IP라고 불립니다. 이 프로토콜들의 연계를 이해하기 위해서는 각각의 역할과 함께 인터넷에서 데이터가 어떻게 이동하는지에 대한 기본적인 이해가 필요합니다.

IP(Internet Protocol)의 역할

IP의 주요 역할은 데이터 패킷을 올바른 목적지까지 전달하는 것입니다. 각기 다른 네트워크 장치(예: 컴퓨터, 스마트폰)는 고유한 IP 주소를 가지고 있으며, 이 주소를 사용하여 데이터를 서로에게 전송합니다. IP는 편지를 보내는 것과 비슷한 방식으로 작동합니다. 즉, 각 패킷에는 발신자와 수신자의 주소가 포함되어 있어 패킷이 최종 목적지까지 올바르게 전달될 수 있도록 합니다. 그러나 IP 자체는 패킷이 손실되거나 순서대로 도착하지 않는 문제를 해결하지 않습니다.

TCP(Transmission Control Protocol)의 역할

여기서 TCP의 역할이 중요해집니다. TCP는 데이터가 정확하게, 순서대로, 손실 없이 전달되도록 보장합니다. 데이터를 송신할 때, TCP는 데이터를 여러 개의 패킷으로 나누고, 각 패킷을 인터넷을 통해 전송합니다. 목적지에서는 TCP가 이 패킷들을 원래의 데이터 순서대로 재조합합니다. 만약 어떤 패킷이 손실되거나 오류가 발생하면, TCP는 해당 패킷을 재전송하도록 요청합니다. 이 과정은 데이터가 정확하게 전송될 때까지 계속됩니다.

TCP와 IP의 연계

TCP와 IP는 함께 작동하여 인터넷 통신을 가능하게 합니다. IP는 데이터 패킷이 최종 목적지까지 도달할 수 있도록 경로를 제공하는 반면, TCP는 데이터가 올바르게, 순서대로 전송되고, 필요한 경우 재전송을 관리하여 데이터의 정확성을 보장합니다.

이 두 프로토콜의 결합은 효율적이고 신뢰할 수 있는 데이터 통신을 가능하게 하여, 이메일, 웹 브라우징, 파일 전송 등 우리가 일상에서 사용하는 다양한 인터넷 서비스의 기반이 됩니다.

실제 응용

인터넷 상에서의 데이터 전송은 이 두 프로토콜의 협력 없이는 불가능합니다. 예를 들어, 웹사이트를 방문할 때 브라우저는 해당 웹사이트의 서버로 HTTP 요청을 보냅니다. 이 요청은 TCP를 통해 여러 개의 패킷으로 분할되고, IP를 사용하여 인터넷을 통해 서버로 전송됩니다. 서버에서는 TCP를 통해 이 패킷들을 수신하고 재조합하여 원래의 HTTP 요청을 복원하고, 그에 따른 응답을 다시 클라이언트로 보냅니다.

이러한 방식으로 TCP와 IP는 인터넷 상에서 복잡하고 다양한 데이터 전송 작업을 가능하게 하는 핵심 기술입니다.

참고 자료1
참고 자료2


TCP/IP 통신에서 "3-way handshake"와 "4-way handshake"는 연결 설정과 해제 과정을 의미합니다. 이 과정들은 인터넷이나 다른 네트워크에서 데이터를 안정적으로 전송하기 위한 핵심적인 메커니즘입니다.

3-Way Handshake (연결 설정)

3-way handshake는 TCP 연결을 시작할 때 사용됩니다. 이 과정은 서버와 클라이언트 간에 안정적인 연결을 설정하는 데 필요한 세 단계로 구성됩니다.

  1. SYN(Synchronize): 클라이언트가 서버로 연결 요청을 보냅니다. 이 패킷은 클라이언트가 데이터를 보낼 준비가 되었다는 것을 알리고, 연결을 시작하는 신호로 작동합니다.

  2. SYN-ACK(Synchronize-Acknowledgment): 서버가 클라이언트의 요청을 받고 연결을 수락합니다. 서버는 클라이언트로 SYN-ACK 패킷을 보내 연결 요청을 인정하고 자신도 데이터를 보낼 준비가 되었다는 것을 알립니다.

  3. ACK(Acknowledgment): 클라이언트가 서버의 SYN-ACK를 받고, 이에 대한 확인으로 ACK 패킷을 보냅니다. 이 시점에서 연결이 성공적으로 설정되고, 데이터 전송이 시작될 수 있습니다.

예시:

  • 클라이언트: "안녕, 서버야. 연결하자! (SYN)"
  • 서버: "안녕, 클라이언트야. 너의 요청을 받았어. 나도 준비됐어! (SYN-ACK)"
  • 클라이언트: "좋아, 시작하자! (ACK)"

4-Way Handshake (연결 해제)

4-way handshake는 TCP 연결을 종료할 때 사용됩니다. 이 과정은 연결을 안전하게 종료하기 위해 필요한 네 단계로 구성됩니다.

  1. FIN(Finish): 연결을 종료하고자 하는 측(예: 클라이언트)이 FIN 패킷을 보냅니다. 이는 데이터 전송이 완료되었고 연결을 종료하고자 함을 알립니다.

  2. ACK(Acknowledgment): 다른 측(예: 서버)은 FIN 패킷을 받고, 이에 대한 확인으로 ACK 패킷을 보냅니다.

  3. FIN(Finish): 이번에는 서버가 연결 종료를 위해 FIN 패킷을 클라이언트에게 보냅니다.

  4. ACK(Acknowledgment): 클라이언트는 서버의 FIN 패킷을 받고, 마지막으로 ACK 패킷을 보냅니다. 이후 연결이 종료됩니다.

예시:

  • 클라이언트: "나 끝났어. 연결 끊자! (FIN)"
  • 서버: "알겠어, 요청 받았어. (ACK)"
  • 서버: "나도 준비됐어. 이제 끊자! (FIN)"
  • 클라이언트: "알겠어, 그럼 안녕! (ACK)"

이렇게 3-way handshake와 4-way handshake는 TCP 통신에서 연결의 시작과 끝을 관리하는 중요한 프로세스입니다. 데이터가 안정적으로 전송되기 위해 이러한 단계를 거치는 것은 네트워크 상에서 신뢰할 수 있는 통신을 보장하기 위함입니다.

참고 자료


IPv4(인터넷 프로토콜 버전 4)와 IPv6(인터넷 프로토콜 버전 6)는 인터넷상에서 기기들이 서로를 인식하고 통신하기 위해 사용하는 주소 체계입니다. 이 두 버전은 기본적으로 같은 목적을 가지고 있지만, 주소의 구조, 용량, 몇 가지 기능 면에서 차이가 있습니다.

IPv4

IPv4는 1983년부터 사용되어 온 인터넷 주소 체계입니다. IPv4 주소는 32비트로 구성되어 있으며, 점으로 구분된 네 부분으로 표시됩니다. 예를 들어, 192.168.0.1과 같은 형식입니다. 이 32비트 구조 때문에 약 43억 개의 고유한 주소만을 제공할 수 있습니다.

IPv4의 특징:

  • 주소 형식: 점으로 구분된 10진수 (예: 192.168.1.1)
  • 주소 공간: 약 43억 개의 고유 주소
  • 보안: 기본적인 인터넷 통신을 위해 설계되었으며, 보안은 나중에 추가된 개념
  • NAT (Network Address Translation): 사설 네트워크 내의 여러 기기가 하나의 공인 IP 주소를 사용할 수 있게 해주는 기술로 주소 부족 문제를 부분적으로 해결

IPv6

IPv6는 IPv4의 주소 공간 부족 문제를 해결하기 위해 도입된 새로운 인터넷 주소 체계입니다. IPv6 주소는 128비트로 구성되어 있으며, 콜론으로 구분된 여덟 부분으로 표시됩니다. 예를 들어, 2001:0db8:85a3:0000:0000:8a2e:0370:7334와 같은 형식입니다. 이 128비트 구조는 엄청나게 많은 수의 고유한 주소를 제공합니다 (약 340경 개).

IPv6의 특징:

  • 주소 형식: 콜론으로 구분된 16진수 (예: 2001:db8::1)
  • 주소 공간: 거의 무한에 가까운 고유 주소 제공
  • 보안: 보안을 기본적으로 고려하여 설계되었으며, IPsec이 기본적으로 포함
  • 자동 구성: 네트워크 기기가 자동으로 IP 주소를 할당받을 수 있음
  • NAT 불필요: 네트워크 기기마다 고유한 공인 IP 주소를 가질 수 있어, NAT가 필요 없음

IPv4와 IPv6의 주요 차이점

  • 주소의 길이와 구조: IPv4는 32비트, IPv6는 128비트
  • 주소 공간: IPv4는 43억 개, IPv6는 340경 개 이상의 주소 제공
  • 보안: IPv6는 보안 기능을 더 향상시킴
  • 구성의 용이성: IPv6는 자동 주소 할당 등을 통해 네트워크 관리를 단순화

현재 인터넷은 IPv4와 IPv6가 공존하고 있으며, 점차 IPv6로의 전환을 진행 중입니다. IPv6는 더 많은 주소를 제공하고, 여러 기능이 개선되었지만, 전 세계적으로 모든 네트워크가 IPv6를 지원하도록 업데이트하는 데는 시간이 필요합니다.

참고 자료


DNS(Domain Name System)는 인터넷의 전화번호부라고 할 수 있어요. 사람들이 웹사이트 주소(예: www.example.com)를 웹 브라우저에 입력할 때, 컴퓨터는 이 주소를 인터넷 프로토콜(IP) 주소로 변환해야 하는데, 이 과정에서 DNS가 중요한 역할을 합니다. IP 주소는 컴퓨터나 기타 네트워크 장비가 인터넷상에서 서로를 식별하고 통신하기 위해 사용하는 고유한 숫자의 집합입니다. DNS는 사람들이 기억하기 어려운 숫자의 나열인 IP 주소 대신, 기억하기 쉬운 도메인 이름을 사용할 수 있게 해줍니다.

DNS 작동 원리

  1. 사용자의 요청: 사용자가 웹 브라우저에 도메인 이름을 입력하면, 사용자의 디바이스는 먼저 해당 도메인 이름의 IP 주소를 알아내야 합니다.

  2. DNS 쿼리 발생: 디바이스는 설정된 DNS 서버에 쿼리(질문)를 보내어, 입력한 도메인 이름에 대응하는 IP 주소를 요청합니다.

  3. 루트 DNS 서버: 첫 번째 단계로, 쿼리는 인터넷의 루트 DNS 서버로 전송됩니다. 루트 서버는 전 세계에 13개가 있으며, 도메인 이름의 최상위 레벨(예: .com, .net, .org)에 대한 정보를 관리합니다. 루트 서버는 요청받은 도메인의 최상위 레벨에 대한 정보를 가진 TLD(Top-Level Domain) 서버를 가리키는 정보를 제공합니다.

  4. TLD 서버: TLD 서버는 도메인 이름의 최상위 레벨(예: .com)에 대한 정보를 관리하며, 요청된 도메인 이름의 존재와 관련된 네임서버 정보를 가지고 있습니다. TLD 서버는 해당 도메인을 관리하는 권한이 있는 네임서버의 주소를 DNS 쿼리로 반환합니다.

  5. 권한 있는 네임서버: 마지막으로, 쿼리는 도메인의 권한 있는 네임서버로 전송되며, 이 서버는 해당 도메인에 대한 구체적인 IP 주소를 가지고 있습니다. 네임서버는 이 IP 주소를 사용자의 디바이스로 반환합니다.

  6. 결과 반환 및 캐싱: 사용자의 디바이스는 받은 IP 주소를 사용하여 웹사이트에 접속합니다. 이 과정에서 얻은 IP 주소는 일정 시간 동안 캐시(임시 저장)되어, 동일한 도메인 이름에 대한 후속 요청을 빠르게 처리할 수 있습니다.

DNS의 중요성

  • 사용 용이성: DNS는 사람들이 웹사이트에 접속할 때 기억하기 쉬운 이름을 사용할 수 있게 해주므로, 인터넷의 사용성을 크게 향상시킵니다.
  • 유연성: 웹사이트의 IP 주소가 변경되더라도, 도메인 이름은 동일하게 유지될 수 있습니다. 이는 웹사이트 이전이나 서버 변경 시 사용자에게 투명하게 이루어질 수 있게 해줍니다.
  • 분산 시스템: DNS는 전 세계에 분산된 서버 네트워크를 통해 작동하기 때문에, 하나의 서버에 문제가 발생해도 전체 시스템에 영향을 미치지 않습니다.

DNS는 인터넷의 핵심 기술 중 하나로, 웹사이트에 쉽게 접근할 수 있게 하는 데 필수적인 역할을 합니다.

참고 자료


포트와 포트 포워딩에 대해 처음 접하는 사람도 이해하기 쉽게 설명해보겠습니다.

포트(Port)란?

네트워크에서 포트는 데이터가 인터넷을 통해 컴퓨터로 들어오고 나가는 '가상의 입구'와 같습니다. 실제 물리적인 입구가 아니라, 컴퓨터 내에서 소프트웨어적으로 구현된 개념입니다. 각각의 포트 번호는 특정한 서비스나 애플리케이션에 할당되어 있어서, 네트워크를 통해 전송된 데이터가 올바른 프로그램에 도달할 수 있도록 합니다.

예를 들어, 웹 서버는 주로 80번(비암호화)과 443번(암호화, HTTPS) 포트를 사용하고, 이메일 서버는 다른 포트(예: SMTP는 25번, IMAP은 143번)를 사용합니다. 이렇게 포트 번호에 따라 네트워크 트래픽이 올바른 서비스로 라우팅됩니다.

포트 포워딩(Port Forwarding)이란?

포트 포워딩은 네트워크의 특정 포트로 들어오는 트래픽을 내부 네트워크의 다른 주소와 포트로 전달(리디렉션)하는 과정을 말합니다. 주로 홈 네트워크 또는 소규모 사무실 네트워크에서 사용되며, 인터넷에서 직접 접근할 수 없는 로컬 네트워크에 있는 장치(예: 개인 컴퓨터, 웹 서버)에 외부에서 접근할 수 있게 해줍니다.

포트 포워딩 설정하는 방법:

  1. 라우터 로그인: 우선, 라우터의 관리 인터페이스에 로그인해야 합니다. 이는 보통 웹 브라우저를 통해 라우터의 IP 주소로 접속하여 이루어집니다.
  2. 포트 포워딩 설정 찾기: 라우터 관리 인터페이스에서 "포트 포워딩", "가상 서버", "애플리케이션" 등의 섹션을 찾습니다. 메뉴 이름은 라우터 제조사마다 다를 수 있습니다.
  3. 규칙 설정: 포트 포워딩 규칙을 만들 때, 외부에서 접속할 때 사용할 포트 번호를 입력하고, 이 트래픽을 전달할 내부 네트워크의 IP 주소와 포트 번호를 지정합니다. 예를 들어, 외부에서 8080 포트를 통해 접속하면, 이를 내부의 192.168.1.100 주소, 80 포트로 전달하도록 설정할 수 있습니다.
  4. 저장 및 적용: 설정을 마친 후에는 변경사항을 저장하고 적용해야 합니다. 일부 라우터는 변경사항을 적용하기 위해 재부팅할 필요가 있습니다.

포트 포워딩의 주요 용도:

  • 외부 접속 허용: 집이나 사무실의 네트워크에 있는 서버에 인터넷에서 접근할 수 있도록 합니다.
  • 게임 및 통신: 온라인 게임, VoIP 통신 등 특정 애플리케이션의 연결성을 향상

시키기 위해 사용됩니다.

  • 보안 카메라 접근: 인터넷을 통해 보안 카메라에 원격으로 접근할 수 있게 합니다.

포트 포워딩을 설정할 때는 보안을 고려해야 합니다. 필요한 서비스에만 포트 포워딩을 설정하고, 사용하지 않는 규칙은 정리해야 합니다. 또한, 가능하다면 강력한 암호화와 인증을 사용하는 서비스를 우선하십시오.

참고 자료

728x90