1. SMTP란?

SMTP를 처음 들어보셨나요? 걱정하지 마세요! SMTP는 "Simple Mail Transfer Protocol"의 약자로, 우리가 일상적으로 사용하는 이메일을 보내는 데 핵심적인 역할을 하는 통신 프로토콜입니다.

간단히 말해, SMTP는 마치 디지털 우체부와 같습니다. 여러분이 작성한 이메일을 받아서 목적지인 받는 사람의 메일 서버까지 안전하게 전달해주는 역할을 합니다.

 

2. SMTP의 작동 방식

SMTP의 작동 방식을 우체국에 편지를 보내는 과정에 비유해보겠습니다:

  1. 여러분이 이메일 작성 → 우체국(SMTP 서버)에 편지 접수
  2. 우체국은 받는 사람의 주소(이메일 도메인)를 확인
  3. 해당 주소의 우체국(수신 SMTP 서버)에 편지 전달
  4. 받는 사람의 메일함에 안전하게 도착

 

3. SMTP에 대해 자세히 알아보기

SMTP 명령

SMTP 서버는 몇 가지 기본적인 명령어로 통신합니다:

  • HELO: 보내는 서버가 자신을 소개하는 명령
  • MAIL FROM: 보내는 사람의 이메일 주소 지정
  • RCPT TO: 받는 사람의 이메일 주소 지정
  • DATA: 실제 이메일 내용 전송 시작
  • QUIT: 통신 종료

SMTP 응답 코드

SMTP 서버는 작업 상태를 숫자 코드로 알려줍니다:

  • 200번대: 성공적인 작업
  • 500번대: 서버 오류
  • 400번대: 클라이언트 측 오류

 

4. SMTP 서버란?

SMTP 서버: 전송 전용 우체국

SMTP 서버는 이메일을 보내는 전용 서버입니다. Gmail, Outlook, Naver 등에서 모두 사용됩니다. 마치 우체국에서 편지를 접수하고 다른 우체국으로 전달하는 것처럼 작동합니다.

메일 서버: 우체국 종합 카운터

메일 서버는 더 복합적인 기능을 가집니다:

  • 이메일 수신
  • 이메일 저장
  • 사용자 인증
  • 스팸 필터링

SMTP 서버의 주요 기능과 역할

  • 이메일 라우팅
  • 전송 오류 관리
  • 이메일 대기열 관리
  • 보안 및 인증

 

5. 보충: SMTP의 역사 (초기 이메일 전송)

1982년, Jon Postel에 의해 RFC 821로 최초 표준화되었습니다. 당시에는 대학과 연구 기관 간 간단한 메시지 교환을 위해 개발되었죠. 지금은 전 세계 이메일 통신의 기본 프로토콜로 자리 잡았습니다.

흥미로운 사실

  • 초기 SMTP는 평문으로 데이터를 전송해 보안에 취약했습니다.
  • 현대의 SMTP는 SSL/TLS 암호화로 보안성을 대폭 개선했습니다.
728x90

'1일 1네트워크 > 제 6장: 애플리케이션 계층 프로토콜' 카테고리의 다른 글

MIME와 MIME타입이란?  (0) 2025.04.04
IMAP이란?  (0) 2025.04.03
POP란?  (0) 2025.03.28
FTP란?  (0) 2025.03.26
HTTP와 HTTPS란?  (0) 2025.03.24

1. FTP의 기본 개념

FTP(File Transfer Protocol)는 인터넷을 통해 파일을 주고받는 표준 네트워크 프로토콜입니다. 쉽게 말해, 컴퓨터와 서버 사이에서 파일을 안전하고 효율적으로 전송할 수 있게 해주는 통신 방식입니다.

FTP의 클라이언트-서버 모델

FTP는 클라이언트와 서버 간의 상호작용을 기반으로 합니다:

  • 클라이언트: 파일을 요청하고 전송하는 사용자의 컴퓨터
  • 서버: 파일을 저장하고 있는 원격 컴퓨터

 

2. FTP 통신 방식: 두 개의 TCP 연결

FTP는 두 가지 연결을 사용합니다:

제어 연결

  • 사용자 인증, 명령 전송 담당
  • 기본적으로 21번 포트 사용
  • 파일 전송과 관련된 제어 정보 교환

데이터 연결

  • 실제 파일 데이터 전송 담당
  • 20번 포트(액티브 모드) 또는 동적 포트(패시브 모드) 사용

 

3. FTP 모드: 액티브 vs 패시브

액티브 모드

  • 서버가 클라이언트에게 직접 연결
  • 방화벽 통과에 문제가 있을 수 있음

패시브 모드

  • 클라이언트가 서버에 연결 요청
  • 방화벽 친화적
  • 현대적인 네트워크 환경에서 더 선호됨

 

4. FTP 작동 원리: 5단계 프로세스

1단계: 서버 연결

  • 클라이언트가 FTP 서버의 IP 주소와 포트(21)로 연결
  • 예: ftp://ftp.example.com

2단계: 사용자 인증

  • 사용자 이름(ID)과 비밀번호 입력
  • 익명(anonymous) FTP 서버의 경우 인증 생략 가능

3단계: 데이터 연결 설정 (액티브 모드)

  • 서버와 클라이언트 간 데이터 전송 경로 확립

4단계: 파일 전송

  • 업로드 또는 다운로드 실행
  • 명령어: put (업로드), get (다운로드)

5단계: 세션 종료

  • quit 또는 exit 명령어로 FTP 세션 종료

 

5. FTP 주요 명령어

  • ls: 디렉토리 내용 나열
  • cd: 디렉토리 변경
  • mkdir: 새 디렉토리 생성
  • delete: 파일 삭제
  • rename: 파일 이름 변경

 

728x90

'1일 1네트워크 > 제 6장: 애플리케이션 계층 프로토콜' 카테고리의 다른 글

MIME와 MIME타입이란?  (0) 2025.04.04
IMAP이란?  (0) 2025.04.03
POP란?  (0) 2025.03.28
SMTP란?  (1) 2025.03.27
HTTP와 HTTPS란?  (0) 2025.03.24

1. 전제: 웹 페이지가 표시되는 방식

우선 웹 페이지가 어떻게 우리 화면에 표시되는지 이해하는 것이 중요합니다. 이 과정은 마치 식당에서 음식을 주문하는 것과 비슷합니다

  1. 여러분(브라우저)이 서버(식당)에 특정 웹 페이지(메뉴)를 요청합니다.
  2. 서버는 이 요청을 받아 처리한 후 해당 웹 페이지 데이터(음식)를 여러분에게 전송합니다.
  3. 브라우저는 받은 데이터를 해석하여 화면에 표시합니다(음식을 먹습니다).

이 모든 통신 과정에서 사용되는 규칙을 '프로토콜'이라고 하며, HTTP와 HTTPS는 웹에서 가장 널리 사용되는 프로토콜입니다.

 

2. HTTP란?

HTTP(HyperText Transfer Protocol)는 웹에서 정보를 주고받기 위한 통신 규약입니다. 이름에서 알 수 있듯이, 주로 하이퍼텍스트(HTML)를 전송하기 위해 만들어졌지만, 현재는 이미지, 비디오, 오디오 등 다양한 데이터를 전송하는 데 사용됩니다.

쉽게 설명하자면, HTTP는 인터넷이라는 거대한 도시에서 데이터가 이동하는 방식에 관한 '교통 규칙'이라고 생각하면 됩니다. 모든 웹 브라우저와 서버는 이 규칙을 따라 소통합니다.

HTTP의 특징

  • 상태를 유지하지 않음(Stateless): 각 요청은 독립적이며, 서버는 이전 요청을 기억하지 않습니다. 마치 식당에서 매번 주문할 때마다 처음 온 손님처럼 대하는 것과 같습니다.
  • 단순함: 텍스트 기반이므로 사람이 읽고 이해할 수 있습니다.
  • 확장 가능함: 헤더를 통해 추가 기능을 구현할 수 있습니다.

 

3. HTTP 요청

브라우저가 서버에 보내는 메시지를 HTTP 요청이라고 합니다. 이 요청은, 제가 카페에 들어가서 "아메리카노 한 잔 주세요"라고 말하는 것과 비슷합니다. HTTP 요청은 세 부분으로 구성됩니다.

3.1 HTTP 요청: 요청 행

요청 행은 HTTP 요청의 첫 줄로, 다음 세 가지 정보를 포함합니다:

  1. 메서드(Method): 수행할 작업의 종류(GET, POST, PUT, DELETE 등)
  2. URI(Uniform Resource Identifier): 요청 대상의 경로
  3. HTTP 버전: 사용 중인 HTTP 프로토콜의 버전

예시

GET /index.html HTTP/1.1

이것은 "index.html 페이지를 가져와 달라(GET)"는 요청입니다. 실생활에서는 "메뉴판 좀 보여주세요"라고 요청하는 것과 같습니다.

주요 HTTP 메서드

  • GET: 정보를 요청합니다(데이터 조회).
  • POST: 새로운 정보를 제출합니다(데이터 생성).
  • PUT: 기존 정보를 업데이트합니다.
  • DELETE: 정보를 삭제합니다.

3.2 HTTP 요청: 헤더

헤더는 요청에 대한 추가 정보를 제공합니다. 마치 커피를 주문할 때 "설탕은 적게, 우유는 많이 넣어주세요"라고 부가 정보를 전달하는 것과 같습니다.

Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8

각 헤더의 의미:

  • Host: 요청하는 서버의 도메인 이름
  • User-Agent: 브라우저와 운영체제 정보
  • Accept: 브라우저가 처리할 수 있는 콘텐츠 유형
  • Accept-Language: 사용자가 선호하는 언어

3.3 HTTP 요청: 본문

본문(Body)은 서버로 전송하는 데이터를 포함합니다. GET 요청에는 보통 본문이 없지만, POST 요청에는 폼 데이터와 같은 정보가 포함됩니다.

예를 들어, 로그인 폼을 제출할 때:

username=user123&password=pass456

이것은 마치 주문서에 상세한 요구사항을 적는 것과 같습니다.

 

4. HTTP 응답

서버가 브라우저의 요청에 대해 보내는 메시지를 HTTP 응답이라고 합니다. 이것은 카페에서 "여기 주문하신 아메리카노 나왔습니다"라고 말하며 커피를 건네주는 것과 같습니다.

4.1 HTTP 응답: 상태 행

상태 행은 응답의 첫 줄로, 다음 정보를 포함합니다:

  1. HTTP 버전: 사용 중인 HTTP 프로토콜의 버전
  2. 상태 코드: 요청 처리 결과를 나타내는 숫자 코드
  3. 상태 메시지: 상태 코드에 대한 간략한 설명
HTTP/1.1 200 OK

주요 HTTP 상태 코드

  • 200 OK: 요청이 성공적으로 처리됨 (주문한 커피가 잘 준비됨)
  • 404 Not Found: 요청한 리소스를 찾을 수 없음 (메뉴에 없는 음료를 주문함)
  • 500 Internal Server Error: 서버 내부 오류 (커피 기계가 고장남)
  • 301 Moved Permanently: 요청한 리소스가 영구적으로 이동함 (매장이 이전함)
  • 403 Forbidden: 접근 권한 없음 (직원 전용 구역에 들어가려 함)

4.2 HTTP 응답: 헤더

응답 헤더는 응답에 대한 추가 정보를 제공합니다. 바리스타가 "핫 아메리카노고, 원두는 에티오피아산이에요"라고 설명하는 것과 같습니다.

Date: Mon, 24 Mar 2025 12:28:53 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html; charset=UTF-8
Content-Length: 29253

 

  • Date: 응답이 생성된 날짜와 시간
  • Server: 서버 소프트웨어 정보
  • Content-Type: 응답 본문의 미디어 타입
  • Content-Length: 응답 본문의 크기(바이트)

4.3 HTTP 응답: 바디

응답 본문은 클라이언트에게 전송되는 실제 데이터를 포함합니다. 이것은 요청한 웹 페이지의 HTML, 이미지 파일, JSON 데이터 등이 될 수 있습니다.

<!DOCTYPE html>
<html>
<head>
    <title>환영합니다</title>
</head>
<body>
    <h1>안녕하세요!</h1>
    <p>이것은 예시 웹 페이지입니다.</p>
</body>
</html>

이것은 실제로 주문한 커피를 받는 것과 같습니다.

 

5. HTTPS란? (HTTP와의 차이는?)

HTTPS(HTTP Secure)는 HTTP에 보안 기능을 추가한 프로토콜입니다. 기본적인 작동 방식은 HTTP와 동일하지만, SSL/TLS라는 암호화 프로토콜을 사용하여 데이터를 암호화합니다.

 

HTTP vs HTTPS

HTTP는 데이터를 일반 텍스트로 전송하는 반면, HTTPS는 데이터를 암호화하여 전송합니다. 이 차이는 마치 일반 우편(HTTP)과 보안 봉투에 담긴 등기 우편(HTTPS)의 차이와 같습니다.

HTTPS의 주요 특징과 장점

  1. 데이터 암호화: 제3자가 통신 내용을 읽을 수 없게 합니다. 누군가가 네트워크 통신을 가로채도 암호화된 정보만 볼 수 있어 내용을 알 수 없습니다.
  2. 데이터 무결성: 전송 중 데이터가 변조되지 않았음을 보장합니다. 마치 봉인된 택배 상자에 "개봉 흔적 있음" 표시가 있는지 확인하는 것과 같습니다.
  3. 인증: SSL/TLS 인증서를 통해 웹사이트의 신원을 확인합니다. 사용자는 접속한 사이트가 진짜인지 확인할 수 있습니다. 이것은 마치 공식 매장에서 발급한 영수증을 확인하는 것과 비슷합니다.
  4. 신뢰성 향상: 브라우저는 HTTPS 사이트에 자물쇠 아이콘을 표시하여 보안 연결임을 사용자에게 알립니다.
  5. SEO 우대: 구글 등의 검색 엔진은 HTTPS 웹사이트를 검색 결과에서 우대합니다.

HTTPS 작동 방식

  1. 핸드셰이크(Handshake): 클라이언트와 서버가 서로를 인증하고 어떤 암호화 방식을 사용할지 결정합니다.
  2. 인증서 확인: 서버는 신뢰할 수 있는 인증 기관(CA)에서 발급한 인증서를 제공하고, 브라우저는 이를 확인합니다.
  3. 키 교환: 안전한 통신을 위한 대칭 키를 교환합니다.
  4. 암호화된 통신: 이후 모든 데이터는 앞서 합의한 키를 사용해 암호화되어 전송됩니다.

 

결론

HTTP와 HTTPS는 웹 페이지를 보기 위한 통신 규약입니다. HTTP는 단순하고 기본적인 통신 방법이지만 보안에 취약하고, HTTPS는 암호화와 인증을 통해 안전한 통신을 제공합니다. 현대 웹에서는 사용자 정보 보호와 신뢰성 확보를 위해 점점 더 많은 웹사이트가 HTTPS를 채택하고 있습니다.

여러분이 웹 주소창에서 http:// 또는 https://를 볼 때, 이제는 그것이 단순한 글자가 아니라 여러분의 데이터가 어떻게 전송되는지를 나타내는 중요한 정보임을 알 수 있을 것입니다.

728x90

'1일 1네트워크 > 제 6장: 애플리케이션 계층 프로토콜' 카테고리의 다른 글

MIME와 MIME타입이란?  (0) 2025.04.04
IMAP이란?  (0) 2025.04.03
POP란?  (0) 2025.03.28
SMTP란?  (1) 2025.03.27
FTP란?  (0) 2025.03.26

커넥션형 통신의 구조

커넥션형 통신은 데이터를 주고받기 전에 먼저 연결을 설정하고, 데이터 전송이 끝나면 연결을 종료하는 방식입니다. 이 방식은 마치 전화 통화와 비슷합니다.

전화 통화로 이해하기

  1. 연결 설정: 전화를 걸어 상대방이 받을 때까지 기다립니다.
  2. 데이터 전송: 상대방이 전화를 받으면 대화를 주고받습니다.
  3. 연결 종료: 대화가 끝나면 "안녕"하고 전화를 끊습니다.

커넥션형 통신에서는 데이터를 보내기 전에 양쪽 컴퓨터가 서로 "준비됐어?"라고 확인하는 과정을 거칩니다. 이를 '핸드셰이크(handshake)'라고 부릅니다. 그 후 안정적인 통신 경로가 설정되면 데이터를 주고받고, 모든 통신이 끝나면 연결을 종료합니다.

연결형 통신의 대표 프로토콜: TCP

TCP(Transmission Control Protocol)는 커넥션형 통신의 대표적인 프로토콜입니다. 인터넷에서 가장 널리 사용되며, 다음과 같은 특징이 있습니다:

  1. 신뢰성 보장: 데이터가 손실되면 재전송합니다.
  2. 순서 보장: 보낸 순서대로 데이터가 도착합니다.
  3. 흐름 제어: 수신자가 처리할 수 있는 속도로 데이터를 전송합니다.
  4. 혼잡 제어: 네트워크 상황에 따라 전송 속도를 조절합니다.

TCP 연결 과정

TCP는 '3-way handshake'라는 과정을 통해 연결을 설정합니다:

  1. SYN: 클라이언트가 서버에 연결 요청(SYN)을 보냅니다.
  2. SYN-ACK: 서버가 요청을 수락하고 응답(SYN-ACK)을 보냅니다.
  3. ACK: 클라이언트가 응답을 확인(ACK)하고 연결이 완료됩니다.

실생활 예시: 택배 서비스

TCP는 마치 등기 택배 서비스와 같습니다. 택배를 보내기 전에 배송지 확인 전화가 오고(연결 설정), 택배가 잘 도착했는지 확인 서명을 받으며(데이터 확인), 문제가 있으면 다시 배송합니다(재전송). 배송이 완료되면 서비스가 종료됩니다(연결 종료).

 


커넥션리스형 통신의 구조(데이터그램 방식)

커넥션리스형 통신은 사전 연결 설정 없이 바로 데이터를 전송하는 방식입니다. 각 데이터 패킷은 독립적으로 전송되며, 이를 '데이터그램' 방식이라고도 합니다.

편지로 이해하기

이 방식은 마치 편지를 보내는 것과 비슷합니다:

  1. 편지를 쓰고 봉투에 주소를 적습니다.
  2. 우체통에 넣기만 하면 됩니다(사전 연결 불필요).
  3. 각 편지는 독립적으로 배달됩니다.
  4. 상대방이 받았는지 확인하기 어렵습니다.

커넥션리스형 통신에서는 각 데이터 패킷에 목적지 주소를 붙여서 네트워크에 던져 넣습니다. 목적지까지 어떤 경로로 갈지, 제대로 도착할지 보장하지 않습니다.

비연결형 통신의 대표 프로토콜: UDP

UDP(User Datagram Protocol)는 커넥션리스형 통신의 대표적인 프로토콜입니다. 다음과 같은 특징이 있습니다:

  1. 연결 설정 없음: 바로 데이터를 전송합니다.
  2. 비신뢰성: 데이터 손실을 확인하거나 복구하지 않습니다.
  3. 순서 보장 없음: 데이터가 보낸 순서와 다르게 도착할 수 있습니다.
  4. 가벼움: 오버헤드가 적어 빠른 전송이 가능합니다.

UDP 통신 과정

UDP는 매우 단순한 구조를 가지고 있습니다:

  1. 데이터를 패킷으로 나누고 목적지 주소를 붙입니다.
  2. 네트워크에 패킷을 바로 전송합니다.
  3. 수신자는 도착한 패킷을 처리합니다.
  4. 확인이나 재전송 과정이 없습니다.

실생활 예시: 일반 우편

UDP는 마치 일반 우편과 같습니다. 편지를 우체통에 넣기만 하면 됩니다(연결 설정 없음). 편지가 잘 도착했는지 확인할 수 없고(비신뢰성), 같은 날 보낸 여러 편지가 다른 날에 도착할 수 있습니다(순서 보장 없음). 하지만 빠르고 간단하게 전송할 수 있습니다.

 


 

각 통신 방법의 장점/단점

커넥션형(TCP) 통신

장점:

  • 신뢰성: 데이터 손실이 거의 없습니다.
  • 순서 보장: 데이터가 보낸 순서대로 도착합니다.
  • 오류 제어: 손상된 데이터를 감지하고 복구합니다.

단점:

  • 오버헤드: 연결 설정, 확인, 재전송 등으로 인해 추가 부담이 있습니다.
  • 지연: 신뢰성을 보장하기 위한 절차로 인해 전송 속도가 느려질 수 있습니다.
  • 리소스 사용: 연결 상태를 유지하기 위해 메모리와 CPU 자원을 사용합니다.

 

커넥션리스형(UDP) 통신

장점:

  • 속도: 연결 설정이나 확인 과정이 없어 빠릅니다.
  • 단순성: 프로토콜 구조가 간단합니다.
  • 효율성: 오버헤드가 적어 네트워크 자원을 효율적으로 사용합니다.

단점:

  • 비신뢰성: 데이터 손실이 발생할 수 있습니다.
  • 순서 보장 없음: 데이터가 다른 순서로 도착할 수 있습니다.
  • 오류 제어 없음: 손상된 데이터를 감지하지 못할 수 있습니다.

 

어떤 통신 방식을 언제 사용할까?

TCP(커넥션형)가 적합한 경우:

  • 웹 브라우징(HTTP/HTTPS): 웹페이지의 모든 내용이 정확히, 순서대로 로드되어야 합니다.
  • 이메일(SMTP): 메일 내용이 손실 없이 전달되어야 합니다.
  • 파일 전송(FTP): 파일의 모든 부분이 정확히 전송되어야 합니다.
  • 데이터베이스 쿼리: 중요한 정보가 손실되면 안 됩니다.

UDP(커넥션리스형)가 적합한 경우:

  • 실시간 스트리밍(비디오/오디오): 약간의 데이터 손실은 허용되지만, 지연이 적어야 합니다.
  • 온라인 게임: 빠른 업데이트가 중요하며, 일부 패킷 손실은 게임 경험에 큰 영향을 주지 않습니다.
  • DNS 조회: 빠른 응답이 중요합니다.
  • IoT 장치: 제한된 자원으로 간단한 통신이 필요한 경우가 많습니다.

 

결론

커넥션형 통신(TCP)과 커넥션리스형 통신(UDP)은 각각 다른 상황에 적합한 특성을 가지고 있습니다. 어떤 것이 "더 좋다"라고 단정할 수 없으며, 응용 프로그램의 요구사항에 따라 적절한 프로토콜을 선택해야 합니다.

  • 정확성과 완전성이 중요하다면 → TCP
  • 속도와 효율성이 중요하다면 → UDP
728x90

'1일 1네트워크 > 제 5장: 트랜스포트층의 프로토콜' 카테고리의 다른 글

포트 번호란?  (0) 2025.03.20
TCP와 UDP란?  (0) 2025.03.19

PORT번호 예시

포트 번호란? (포트번호 = 프로그램 식별)

포트 번호는 컴퓨터에서 실행 중인 특정 프로그램이나 서비스를 구분하기 위한 번호입니다. 쉽게 말해, 하나의 건물 안에 여러 개의 방이 있고 각 방마다 번호가 붙어 있는 것과 비슷합니다.

예를 들어, 여러분의 컴퓨터가 하나의 아파트라고 생각해 봅시다. 이 아파트에는 '웹 브라우저', '이메일 프로그램', '게임' 등 다양한 프로그램(거주자)이 살고 있습니다. 이 아파트의 주소(IP 주소)로 택배(데이터)가 오면, 택배기사는 어느 방(포트 번호)으로 배달해야 할지 알아야 합니다.

만약 포트 번호가 없다면, 컴퓨터는 인터넷에서 받은 데이터를 어느 프로그램에 전달해야 할지 알 수 없습니다. 포트 번호는 0부터 65535까지 총 65536개가 있으며, 각각의 번호는 특정 서비스나 프로그램을 위해 예약되어 있거나 자유롭게 사용할 수 있습니다.

 

포트 번호의 작동 방식

네트워크 통신에서 데이터는 IP 주소와 포트 번호의 조합을 통해 정확한 목적지에 도달합니다. IP 주소가 컴퓨터를 찾아가는 도로 주소라면, 포트 번호는 그 컴퓨터 안의 특정 프로그램을 찾아가는 호수(방 번호)라고 볼 수 있습니다.

예를 들어, 웹사이트를 방문할 때 브라우저는 http://www.example.com:80과 같은 주소를 사용합니다. 여기서 :80이 바로 포트 번호입니다. 이 번호는 웹 서버에게 "HTTP 서비스를 요청합니다"라고 알려주는 역할을 합니다.

포트 번호는 크게 세 가지 범주로 나눌 수 있습니다.

 

웰노운(Well Known) 포트 번호 (0-1023)

웰노운 포트는 인터넷에서 가장 기본적이고 중요한 서비스들을 위해 예약된 번호입니다. 이 포트들은 국제 인터넷 표준화 기구(IANA)에 의해 관리되며, 특별한 권한 없이는 사용할 수 없습니다.

  • 포트 80: HTTP(웹사이트) - 우리가 일반적으로 웹사이트를 방문할 때 사용
  • 포트 443: HTTPS(보안 웹사이트) - 암호화된 웹 통신에 사용
  • 포트 21: FTP(파일 전송) - 서버와 파일을 주고받을 때 사용
  • 포트 22: SFTP , SSH - 암호화 된 파일을 주고 받을 때 사용
  • 포트 25: SMTP(이메일 발송) - 이메일을 보낼 때 사용
  • 포트 110: POP3(이메일 수신) - 이메일을 받을 때 사용
  • 포트 53: DNS(도메인 이름 서비스) - 도메인 이름을 IP 주소로 변환할 때 사용

일상생활에서의 예시를 들자면, 웰노운 포트는 마치 대도시의 주요 관공서나 시설과 같습니다. 예를 들어 어느 도시에 가더라도 119는 소방서, 112는 경찰서인 것처럼, 어느 컴퓨터에서든 포트 80은 웹 서비스를 의미합니다.

 

등록(Registered) 포트 번호 (1024-49151)

등록 포트는 기업이나 단체가 자신들의 특정 응용 프로그램이나 서비스를 위해 등록하여 사용하는 포트입니다. 이 포트들도 IANA에 등록되어 있지만, 웰노운 포트와 달리 특별한 권한 없이도 사용할 수 있습니다.

  • 포트 3306: MySQL 데이터베이스
  • 포트 8080: 대체 HTTP 포트(프록시 서버나 두 번째 웹 서버)
  • 포트 1521: Oracle 데이터베이스
  • 포트 5432: PostgreSQL 데이터베이스
  • 포트 3389: 원격 데스크톱 프로토콜(RDP)

일상에서 비유하자면, 등록 포트는 각 회사나 기관의 대표 전화번호와 같습니다. 공식적으로 등록되어 있지만, 웰노운 포트보다는 덜 알려져 있고 주로 특정 서비스나 프로그램을 이용하는 사람들에게만 의미가 있습니다.

 

다이나믹/프라이빗(Dynamic and/or Private) 포트 번호 (49152-65535)

다이나믹/프라이빗 포트는 임시적인 연결이나 개인적인 용도로 사용되는 포트 번호입니다. 이 포트들은 특별히 예약되어 있지 않으며, 필요에 따라 자유롭게 사용할 수 있습니다.

예를 들어, 웹 브라우저로 웹사이트에 접속할 때, 브라우저는 서버와 통신하기 위해 자동으로 이 범위 내의 임시 포트를 사용합니다. 연결이 끝나면 이 포트는 다시 사용 가능한 상태가 됩니다.

일상생활의 예시로는, 다이나믹 포트는 마치 임시로 사용하는 회의실 번호나 호텔 객실 번호와 같습니다. 필요할 때 할당받아 사용하고, 사용이 끝나면 반납하여 다른 사람이 사용할 수 있게 됩니다.

 

포트 번호의 실생활 응용 예시

포트 번호가 실제로 어떻게 작동하는지 더 이해하기 쉽도록 몇 가지 일상적인 예시를 살펴보겠습니다:

예시 1: 웹 브라우징

여러분이 웹 브라우저에서 www.example.com을 입력하면, 브라우저는 기본적으로 포트 80(HTTP) 또는 포트 443(HTTPS)을 사용하여 해당 웹 서버에 연결합니다. 이때 브라우저는 다이나믹 포트 범위에서 임시 포트(예: 54321)를 선택하여 서버의 포트 80과 통신합니다. 이 과정을 수식으로 표현하면:

(내 컴퓨터 IP:54321) ↔ (www.example.com:80)

예시 2: 이메일 확인

이메일 프로그램으로 메일을 확인할 때, 프로그램은 포트 110(POP3) 또는 포트 143(IMAP)을 통해 메일 서버에 연결합니다. 이 과정은 다음과 같습니다:

(내 컴퓨터 IP:55555) ↔ (mail.example.com:110)

예시 3: 게임 서버 연결

온라인 게임을 할 때, 게임 클라이언트는 특정 포트(예: 포트 27015)를 통해 게임 서버에 연결합니다:

(내 컴퓨터 IP:58765) ↔ (game.example.com:27015)

 

결론

포트 번호는 인터넷 통신의 핵심 요소로, 데이터가 올바른 프로그램에 전달되도록 보장합니다. 웰노운 포트, 등록 포트, 다이나믹 포트로 구분되며, 각각 다른 용도와 특성을 가지고 있습니다.

인터넷을 사용하다 보면 가끔 "포트를 열어야 한다"거나 "포트가 차단되었다"는 말을 들을 수 있는데, 이는 특정 프로그램이나 서비스가 사용하는 포트에 대한 접근을 허용하거나 차단하는 것을 의미합니다. 방화벽이나 라우터 설정에서 이러한 포트 관리가 이루어집니다.

728x90

VMware Workstation에서 Network Adapter를 "Bridged"로 설정하면, 가상 머신(VM)이 마치 실제 물리적 컴퓨터처럼 호스트 시스템과 동일한 네트워크에 연결되기 때문이에요. 이를 쉽게 풀어서 설명하면:

"Bridged" 모드란?

  • Bridged 모드는 가상 머신을 실제 네트워크에 직접 연결하는 방식입니다.
  • 이 설정을 사용하면 가상 머신이 호스트 컴퓨터와 동일한 IP 주소 대역에서 작동하며, 네트워크에 있는 다른 장치들(예: 라우터, 다른 컴퓨터)과 직접 통신할 수 있습니다.

SSH와 FTP 연결이 가능한 이유

  1. 독립적인 IP 주소:
    • "Bridged" 모드에서는 가상 머신이 라우터로부터 자체적인 IP 주소를 부여받습니다.
    • 이 IP 주소를 통해 가상 머신은 네트워크의 다른 장치와 통신할 수 있으며, 다른 장치들도 가상 머신에 접근할 수 있습니다.
  2. 직접 네트워크 연결:
    • 가상 머신이 호스트 네트워크와 동일한 네트워크 환경에 있기 때문에, SSH(포트 22)와 FTP(포트 21)와 같은 프로토콜을 사용한 연결이 가능해집니다.
    • 이는 물리적인 컴퓨터 간에 네트워크 연결을 설정하는 것과 동일하게 작동합니다.
  3. NAT 모드와의 차이점:
    • NAT(Network Address Translation)는 가상 머신이 호스트의 IP 주소를 공유하기 때문에 외부에서 직접적으로 접근하기 어렵습니다.
    • 반면 Bridged 모드는 가상 머신을 네트워크 상에서 독립적으로 나타내기 때문에 SSH나 FTP와 같은 접속 요청을 직접 받을 수 있습니다.

즉, Bridged 모드를 사용하면 가상 머신이 네트워크 상에서 "자기만의 위치(IP)"를 가지게 되어, 외부 장치가 이를 인식하고 통신할 수 있게 되는 것이죠!

728x90

'1일 1네트워크' 카테고리의 다른 글

SSH란?  (0) 2025.03.18

TCP (Transmission Control Protocol)

TCP는 '전송 제어 프로토콜'의 약자로, 데이터를 안정적으로 전송하기 위해 설계된 프로토콜입니다. TCP는 데이터가 손실 없이 정확하게 전달되도록 보장하며, 데이터의 순서가 유지되는 특징이 있습니다.

 

UDP (User Datagram Protocol)

UDP는 '사용자 데이터그램 프로토콜'의 약자로, TCP보다 단순한 구조를 가지고 있습니다. UDP는 데이터의 안정적인 전송보다는 빠른 전송에 중점을 둡니다.

 

TCP의 작동 방식

TCP는 '연결 지향적' 프로토콜로, 데이터를 주고받기 전에 먼저 연결을 설정합니다. 이 과정은 '3-way 핸드셰이크'라고 불리는데, 다음과 같이 진행됩니다

  1. 연결 요청: 클라이언트가 서버에 연결 요청(SYN) 메시지를 보냅니다.
  2. 응답: 서버는 요청을 받고 승인(SYN-ACK) 메시지를 보냅니다.
  3. 확인: 클라이언트가 서버의 응답을 받고 확인(ACK) 메시지를 보내면 연결이 설정됩니다.

연결이 설정된 후에는 다음과 같은 과정으로 데이터가 전송됩니다

  • 데이터를 작은 단위(세그먼트)로 나눕니다.
  • 각 세그먼트에 순서 번호를 부여합니다.
  • 수신자는 받은 데이터에 대한 확인(ACK) 메시지를 보냅니다.
  • 만약 확인 메시지가 일정 시간 내에 오지 않으면, 송신자는 해당 데이터를 다시 전송합니다.

이러한 과정을 통해 TCP는 데이터의 안전한 전송을 보장합니다.

 

UDP의 작동 방식

UDP는 '비연결형' 프로토콜로, TCP와 달리 연결 설정 과정이 없습니다. 데이터(데이터그램)를 바로 전송하며, 그 과정이 매우 단순합니다

  1. 데이터를 패킷으로 나눕니다.
  2. 각 패킷에 목적지 정보를 추가합니다.
  3. 네트워크를 통해 패킷을 바로 전송합니다.

UDP는 데이터가 제대로 전달되었는지 확인하지 않으며, 데이터의 순서를 보장하지 않습니다. 이 때문에 일부 데이터가 손실되거나 순서가 뒤바뀔 수 있지만, 전송 속도가 빠른 장점이 있습니다.

 

TCP와 UDP의 주요 차이점

연결 방식 연결 지향적 비연결형
신뢰성 높음 (데이터 손실 복구) 낮음 (데이터 손실 가능)
속도 상대적으로 느림 빠름
순서 보장 순서 보장 순서 보장 없음
오류 검출 있음 기본적인 오류 검출만 있음
용량 헤더 크기 20-60 바이트 헤더 크기 8 바이트
적합한 용도 정확성이 중요한 데이터 실시간 데이터, 속도가 중요한 경우

 

실생활 사용 예시

TCP 사용 예시

  1. 웹 브라우징: 웹페이지를 정확하게 로드하기 위해 HTTP/HTTPS는 TCP를 사용합니다.
  2. 이메일 전송: 이메일 프로토콜(SMTP, POP3, IMAP)은 메시지가 온전히 전달되도록 TCP를 사용합니다.
  3. 파일 다운로드: FTP와 같은 파일 전송 프로토콜은 파일이 손상 없이 전송되도록 TCP를 사용합니다.
  4. 온라인 뱅킹: 금융 거래는 데이터의 정확성이 매우 중요하므로 TCP를 사용합니다.

UDP 사용 예시

  1. 실시간 영상 통화: Zoom, Skype 등의 화상 회의는 속도가 중요하기 때문에 UDP를 사용합니다.
  2. 온라인 게임: 실시간 반응이 중요한 게임은 지연을 최소화하기 위해 UDP를 사용합니다.
  3. 실시간 스트리밍: 유튜브 라이브, 트위치 등의 실시간 방송은 UDP를 사용하여 지연을 줄입니다.
  4. DNS 조회: 도메인 이름을 IP 주소로 변환하는 과정에서 UDP를 사용합니다.

 

쉬운 비유로 이해하기

TCP와 UDP의 차이를 일상생활의 비유로 설명하면 다음과 같습니다:

TCP는 등기우편과 같습니다:

  • 보내기 전에 받는 사람의 주소를 확인합니다(연결 설정).
  • 우편물을 보낸 후 배달 확인을 받습니다(ACK).
  • 우편물이 제대로 배달되지 않으면 다시 보냅니다(재전송).
  • 여러 봉투로 나누어 보낸 경우, 받는 사람이 순서대로 정리할 수 있도록 번호를 매깁니다(순서 보장).

UDP는 일반 우편과 같습니다:

  • 받는 사람의 주소만 적고 바로 우편함에 넣습니다(비연결형).
  • 배달 확인을 받지 않습니다(확인 없음).
  • 우편물이 분실되어도 다시 보내지 않습니다(손실 가능).
  • 여러 봉투를 보낸 경우, 어떤 순서로 도착할지 보장하지 않습니다(순서 보장 없음).

 

결론

TCP와 UDP는 각각 장단점이 있으며, 사용 목적에 따라 적합한 프로토콜을 선택하는 것이 중요합니다. 데이터의 정확성과 안정성이 중요한 경우에는 TCP를, 빠른 전송 속도가 중요한 실시간 서비스에는 UDP를 사용하는 것이 일반적입니다. 이 두 프로토콜의 이해는 네트워크 통신의 기본을 이해하는 데 큰 도움이 됩니다.

728x90

SSH란?

SSH(Secure Shell)는 네트워크 상의 다른 컴퓨터에 안전하게 접속하기 위한 암호화 네트워크 프로토콜입니다. 주로 원격 서버 관리, 파일 전송, 터널링 등에 사용됩니다.

SSH의 주요 특징

  • 암호화 통신: 클라이언트와 서버 간의 모든 데이터를 암호화하여 전송합니다.
  • 강력한 인증: 비밀번호, 키 기반 인증 등 다양한 인증 방식을 지원합니다.
  • 포트 포워딩: 로컬 포트를 원격 서버의 포트로 연결하거나 그 반대로 연결할 수 있습니다.
  • 다양한 응용: 원격 명령 실행, 파일 전송(SCP, SFTP), X11 포워딩 등 다양한 기능을 제공합니다.

SSH의 작동 원리

SSH는 클라이언트-서버 모델을 기반으로 작동합니다.

  1. 연결 설정: 클라이언트가 서버에 연결을 요청합니다.
  2. 키 교환: 서버와 클라이언트는 공개키 암호화를 사용하여 세션 키를 안전하게 교환합니다.
  3. 인증: 사용자 인증이 이루어집니다(비밀번호, 공개키 등).
  4. 세션 생성: 인증 성공 후 암호화된 SSH 세션이 생성됩니다.

SSH vs 텔넷: 무엇이 다른가?

SSH는 텔넷(Telnet)의 안전한 대안으로 개발되었습니다. 주요 차이점은 다음과 같습니다:

  • 텔넷: 모든 데이터가 평문으로 전송되어 제3자가 쉽게 도청할 수 있습니다.
  • SSH: 모든 통신이 암호화되어 데이터 유출 위험이 크게 줄어듭니다.

실생활 예시로, 텔넷은 마치 유리창이 있는 방에서 비밀 회의를 하는 것과 같고, SSH는 방음 시설이 갖춰진 보안실에서 회의를 하는 것과 같습니다.

SSH 인증 방식

비밀번호 인증

가장 기본적인 인증 방식으로, 사용자 이름과 비밀번호를 입력합니다.

$ ssh user@10.10.10.1 -p 22
user@10.10.10.1's password: ********

공개키 인증

더 안전하고 편리한 인증 방식으로, 개인키와 공개키 쌍을 사용합니다.

  1. 키 생성:
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
  1. 공개키 서버에 등록:
$ ssh-copy-id user@example.com
  1. 키 기반 로그인:
$ ssh user@example.com

실생활 예시로, 공개키 인증은 열쇠(개인키)와 자물쇠(공개키)와 같습니다. 자물쇠(공개키)는 서버에 설치하고, 열쇠(개인키)는 자신만 가지고 있습니다. 서버에 접속할 때 열쇠를 사용하여 자물쇠를 열 수 있는지 확인합니다.

 

SSH 활용 사례

1. 원격 서버 관리

서버 관리자는 SSH를 사용하여 물리적으로 떨어진 서버에 접속하고 관리합니다.

$ ssh admin@server.example.com
admin@server:~$ sudo apt update
admin@server:~$ sudo apt upgrade

2. 파일 전송

SCP(Secure Copy Protocol)나 SFTP(SSH File Transfer Protocol)를 사용하여 파일을 안전하게 전송합니다.

# 로컬에서 원격으로 파일 전송
$ scp local_file.txt user@example.com:/path/to/destination/

# 원격에서 로컬로 파일 전송
$ scp user@example.com:/path/to/remote_file.txt local_destination/

3. 터널링

SSH 터널링을 사용하여 방화벽을 우회하거나 보안이 취약한 프로토콜을 보호할 수 있습니다.

# 로컬 포트 8080을 원격 서버의 80 포트로 포워딩
$ ssh -L 8080:localhost:80 user@example.com

이 명령어를 실행한 후, 로컬 컴퓨터에서 http://localhost:8080에 접속하면 원격 서버의 80 포트(웹 서버)에 접속한 것과 같은 효과를 얻을 수 있습니다.

4. 개발 환경

개발자들은 SSH를 사용하여 원격 개발 환경에 접속하거나 깃(Git) 리포지토리에 접근합니다.

# GitHub에 SSH로 접속하여 리포지토리 클론
$ git clone git@github.com:username/repository.git

 

SSH 보안 강화 방법

1. 루트 로그인 비활성화

서버의 /etc/ssh/sshd_config 파일에서 다음과 같이 설정합니다:

PermitRootLogin no

2. 공개키 인증만 허용

비밀번호 인증을 비활성화하고 공개키 인증만 허용합니다:

PasswordAuthentication no
PubkeyAuthentication yes

3. 비표준 포트 사용

기본 SSH 포트(22) 대신 다른 포트를 사용합니다:

Port 2222

4. 접속 제한

특정 IP나 네트워크에서만 접속할 수 있도록 제한합니다:

# 방화벽 설정
$ sudo ufw allow from 192.168.1.0/24 to any port 22

 

초보자를 위한 SSH 활용 팁

1. SSH 설정 파일 사용

~/.ssh/config 파일을 생성하여 자주 사용하는 서버 정보를 저장할 수 있습니다:

Host webserver
    HostName example.com
    User admin
    Port 2222
    IdentityFile ~/.ssh/webserver_key

이후 ssh webserver 명령어만으로 접속할 수 있습니다.

2. 키 관리

SSH 키를 안전하게 보관하고 주기적으로 갱신합니다:

# 키 백업
$ cp -r ~/.ssh ~/.ssh_backup

# 새 키 생성
$ ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_new

3. 에이전트 포워딩

여러 서버를 거쳐 접속할 때 키를 재사용할 수 있게 합니다:

$ ssh -A user@example.com

결론

SSH는 현대 네트워크 환경에서 원격 접속의 표준이 되었습니다. 강력한 암호화와 인증 메커니즘을 통해 안전한 원격 관리와 파일 전송을 가능하게 합니다. 특히 클라우드 컴퓨팅과 원격 근무가 확대되는 현대 IT 환경에서 SSH의 중요성은 더욱 커지고 있습니다.

초보자도 몇 가지 기본 명령어만 알면 SSH를 활용할 수 있으며, 이를 통해 원격 서버 관리, 안전한 파일 전송, 그리고 보안 강화된 네트워크 연결을 구현할 수 있습니다. SSH는 마치 인터넷이라는 거친 바다를 항해할 때 필요한 안전한 배와 같다고 할 수 있습니다.

728x90

'1일 1네트워크' 카테고리의 다른 글

VMware Workstation 설정을 통한 Network 연결  (0) 2025.03.19

+ Recent posts