[Network] 계층 별 프로토콜 (2)
SSH, HTTPS, DNS는 안전한 통신을 위한 프로토콜입니다. 원격 접속과 웹 통신을 암호화하고, 도메인을 IP로 연결하여 인터넷을 안전하고 편리하게 만드는 핵심 기술의 차이를 설명합니다.
프로토콜

데이터를 교환하고 통신하기 위해 컴퓨터간 상호 약속된 규칙의 집합
Telnet(Telecommunication Network Protocol)
개념
- 원격 호스트에 접속하기 위해 사용하는 프로토콜
- 네트워크를 통해 다른 컴퓨터의 명령창을 사용
 
 - 인터넷 초기 원격 접속 기술로 사용
 
동작 방식
- 클라이언트-서버 구조 23번 포트 사용
 
특징
- 대부분의 운영체제 지원
 - 실시간 양방향 통신
 - 간단한 프로토콜
 
단점
- 모든 데이터를 평문으로 전송
- ID/PWD 노출
 - 세션 전체가 도청될 가능성
- 중간자 공격
 
 - 데이터가 변조될 수 있음
 
 
이를 보완하기 위해 나온 개념이 SSH임.
SSH(Secure shell)

개념
- 원격 호스트에 접속하기 위해 사용하는 프로토콜
 - 모든 통신이 암호화됨(데이터, 비밀번호, 명령어 등)
 
특징
- 22번 포트를 사용
 - 비밀번호 인증과 공개키/비밀키 인증 방식 존재
- 주로 공개키/비밀키 방식을 사용
 
 - 포트 포워딩으로 안전한 터널 생성
 - telnet, ftp, rcp, rexec 등 기존 비보안 도구를 대체
 - 세션 관리 가능
- 다중 채널, Keep-alive 속성 등
 
 - 대부분의 운영체제 지원할 뿐만 아니라 IoT 기기에서도 사용 가능
 
단점
- 복잡한 키 관리
- 키 생성, 배포, 순환, 폐기
 - 키 분실 시 접근이 불가능하며 백업되어있지 않다면 영구 잠금
 
 - 방화벽 차단 혹은 NAT 장비에서 포트 포워딩 설정 필요
- 인터넷에 노출된 SSH 서버는 공격 대상 → Bastion host
 
 
Telnet vs SSH
| 구분 | Telnet | SSH | 
|---|---|---|
| 보안성 | 평문 전송, 도청 위험 | 암호화 통신, 안전함 | 
| 인증 | 기본적인 ID/PW만 | 비밀번호, 공개키, 2FA 등 | 
| 포트 | 23번 (표준) | 22번 (표준) | 
| 리소스 사용 | 매우 적음 | 암호화로 인한 오버헤드 | 
| 설정 복잡도 | 매우 간단 | 키 관리 등 복잡 | 
| 호환성 | 모든 시스템 지원 | 일부 구형 시스템 제한 | 
| 디버깅 | 평문으로 쉬운 분석 | 암호화로 분석 어려움 | 
| 파일 전송 | 별도 프로토콜 필요 | SCP, SFTP 내장 | 
| 터널링 | 지원 안함 | 포트 포워딩 지원 | 
| 현재 사용 | 보안상 거의 사용 안함 | 표준 원격 접속 도구 | 
HTTP(Hypertext Transfer Protocol)

개념
- HyperText(한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트) 기반 정보를 주고 받을 수 있는 프로토콜
 - Web에서 정보를 주고받기 위함
 
특징
- 80번 포트를 사용
 - Request/Response 기반 클라이언트-서버 모델
 - Stateless 기반 요청간 상태를 저장하지 않음
 - 헤더를 통해 인증, 세션 등 다양한 기능으로 확장 가능
 - 운영체제나 하드웨어에 관계없이 사용 가능
 - 텍스트 기반으로 디버깅과 모니터링이 용이
- 에러 코드 + 텍스트
- 200 - OK, 400 - Bad request, 404 Resource not found
 
 
 - 에러 코드 + 텍스트
 - 메소드 기반 요청 파악 용이(GET/POST/PUT/DELETE)
 
단점
- 모든 데이터가 평문으로 전송되며 데이터 변조 여부 확인 어려움
- 패스워드, 개인정보같은 민감 정보가 그대로 노출됨
 
 - 상태 정보를 유지하기 위한 별도의 로직 구성
- 쿠키, 세션 등 외부 저장소 의존
 
 - HTTP 버전에 따라 연결 오버헤드, 요청 블로킹이 발생
- 매 요청간 TCP Connection 생성 (HTTP/1.0)
 - 대용량 요청 지연 시 뒤 요청들도 대기 (HTTP1.1)
 
 
HTTPS(HyperText Transfer Protocol Secure)
개념
- HTTP를 확장하여 데이터를 안전하게 전송하는 프로토콜
 - SSL/TLS 기반의 기밀성, 무결성, 전송/수신자 인증을 보장함
 
특징
- 443번 포트를 사용
 - 통신을 시작하기 전 디지털 인증서를 통해 서버의 신원을 검증
- CA(Certificate Authority)에서 발급한 신뢰할 수 있는 인증서 사용
 
 - 민감한 정보, 데이터 무결성 보장
 - TLS 기반 인증서 교환 메커니즘
- 현재 TLS v1.3 기반의 메커니즘을 주로 사용
- 지속적으로 개선되고 있음
 
 
 - 현재 TLS v1.3 기반의 메커니즘을 주로 사용
 
단점
- 인증서 관리 필요
- 인증서 발급/설치/갱신/삭제 등 추가 리소스 관리
- 인증서 만료시 접근이 차단될 수 있음
 
 - Private CA 를 사용하는 경우 더 복잡함
 - 도메인 별 인증서 발급
 
 - 인증서 발급/설치/갱신/삭제 등 추가 리소스 관리
 
HTTP vs HTTPS
| 구분 | HTTP | HTTPS | 
|---|---|---|
| 보안 | 평문 전송, 보안 없음 | SSL/TLS 암호화 | 
| 포트 | 80 | 443 | 
| 인증서 | 불필요 | SSL 인증서 필수 | 
| 성능 | 빠름 | HTTP 대비 느림 (암호화 처리) | 
| 데이터 보호 | 스니핑 위험 | 암호화로 보호 | 
| 서버 인증 | 없음 | 디지털 인증서로 검증 | 
| 브라우저 표시 | 경고 표시 | 자물쇠 아이콘 | 
| SEO | 불리 | 우선순위 | 
| 비용 | 무료 | 인증서 관리 비용 | 
| 사용 권장 | 권장하지 않음 | 현재 웹 표준 | 
DNS(Domain Name System)
개념
- 도메인 네임 시스템에서 클라이언트와 서버 간 통신을 위한 응용 계층 프로토콜
 - 도메인 이름과 IP 주소 간 매핑 정보를 교환
- 숫자 IP 주소 대신 호스트 이름으로 접속할 수 있게 됨
 
 
특징

- UDP 53번 포트를 사용하나 구성에 따라 TCP도 사용 가능
- UDP 기반 경량 프로토콜로 빠른 응답
 
 - 패킷은 Header, Question, Answer, Authority, Additional 구조
- Header - 제어정보, 패킷의 정보를 가짐
 - Question - 도메인명, 레코드 타입을 가짐
- A 레코드 → 도메인의 IPv4 주소
 - AAAA 레코드 → 도메인의 IPv6 주소
 - CNAME(Canonical NAME) 레코드 → 도메인 이름 별칭
- www.example.com → example.com
 
 - MX, TXT 레코드 → 메일 관련 레코드
 - NS 레코드 → 실제 DNS 레코드를 갖고 있는 서버
- 서버 다운을 방지하여 여러 개의 NS 레코드가 제공됨
 
 - SOA → 도메인 또는 영역에 대한 중요한 정보를 저장
- 관리자의 이메일, 마지막 업데이트 시간, 레코드 새로고침 대기 시간 등
 
 
 - Answer - DNS 서버가 Question에 답변을 제공
 - Authority - 요청, 상위 도메인을 관리하는 네임서버 정보 제공
 - Additional - 레코드 타입에 따라 추가 정보 제공
 
 - TTL 기반의 데이터 캐싱 지원
 - IP 주소가 변경되어도 도메인 이름은 유지되어 서버 이전이나 확장 용이
 
단점
- UDP 기반 응답이 손실될 가능성
 - 잘못된 정보가 캐싱되면 TTL이 만료될 때까지 잘못된 결과 제공
 - 가용성 및 단일 장애점 관리 필요
- 네임서버 장애시 도메인을 통한 접근 어려움
 
 - 처음 접근하는 도메인은 루트 서버부터 시작
- 콜드 스타트 문제