1. 원격 터미널 프로토콜
Telnet과 SSH는 원격으로 서버에 접속하기 위한 프로토콜이다.
Telnet
Telnet은 Telecommunications and Networks의 약자로, TCP/IP 프로토콜을 사용하는 원격 터미널 접속 프로토콜이다. 1969년에 개발되어 네트워크 상에서 다른 컴퓨터에 로그인하여 작업을 수행할 수 있도록 설계되었다. 기본 포트 번호로 23번을 사용한다.
동작 방식
- 연결 형성
- Telnet client가 server에 TCP 연결을 요청한다.
- 이를 server가 수락하면 양방향 text 기반의 세션이 시작된다.
- 데이터 교환 : 연결이 시작되면, client와 server 사이에 데이터가 평문으로 교환된다.
- 협상 Negotiation
- Telnet session이 시작되면, client와 server는 연결 터미널 유형, 문자 형식 등의 option을 조정한다.
- 이를 통해 해당 연결의 각 종단은 교환되는 데이터를 해석하는 방식을 공유하고 있음을 보장한다.
특징
- 네트워크 가상 터미널 (NVT) = 원격지 시스템과 로컬 시스템이 다를 경우 원활한 통신을 위한 데이터 변환 가상 장치
- 명령어 구조 : 데이터 스트림에 Telnet 명령어가 삽입되어 통신한다.
- 옵션 협상 : session 동안 터미널 유형, 속도, 글꼴 등을 조정한다.
한편, Telnet은 전송되는 데이터와 ID, 비밀번호를 암호화하지 않기 때문에 도청자의 탈취에 취약한데, 전송 데이터의 인증 기능을 가진 SSH가 Telnet을 제치고 대세가 되었다.
SSH
SSH는 Secure Shell의 약자로, Telnet의 보안 문제를 해결하기 위해 개발된 프로토콜로, 데이터를 암호화하여 보안성을 강화한 것이 특징이다. 주로 서버 관리자가 안전하게 원격 관리 작업을 수행하기 위해 사용한다. 기본 포트 번호는 22번을 사용한다.
동작 방식
- 연결 형성 : SSH client가 server에 연결을 요청하고, 암호화된 채널을 형성한다.
- 인증 과정 : SSH client는 공개키, 비밀번호 등 다양한 방법으로 인증을 수행할 수 있다.
- 암호화된 통신 : 모든 명령어와 파일 전송이 암호화되어 진행된다.
특징
- 암호화 : 모든 통신 내용이 암호화되어, 도청과 데이터 변조를 방지한다.
- 공개키 인증 : 사용자는 공개키를 서버에 등록하여 비밀번호 없이 접속 가능하다.
- 포트 포워딩 : 안전하지 않은 application을 SSH 터널을 통해 보안 연결로 전환할 수 있다.
주요 차이점
Telnet | SSH | |
사용 목적 | 간단한 텍스트 전송 | 파일전송과 서버 관리 등 광범위 사용 |
보안 | 평문으로 데이터 전송 | 모든 데이터를 암호화하여 전송 |
포트 번호 | 23번 | 22번 |
대체 | 보안 문제로 인해 Telnet은 대부분의 환경에서 SSH로 대체됐다. |
2. 애플리케이션 프로토콜
HTTP
특징
- Stateless : HTTP는 상태 정보를 저장하지 않는다.
- 각 요청은 독립적으로 처리되며, 서버는 이전 요청들에 대한 정보를 기억하지 않기 때문에 모든 정보는 요청 자체에 포함되어야 한다.
- 이로 인해 서버의 복잡성은 줄어들지만, 사용자 세션을 유지하기 위해선 cookie나 session token 등의 기능이 필요하다.
- Connectionless
- HTTP에서 각 요청은 독립적으로 처리되며, 서버는 이전 요청의 상태를 기억하지 않는다.
- client가 server에 요청을 보낼 때마다 새로운 TCP 연결이 설정되고, 응답이 완료되면 연결이 종료된다.
- Flexible : HTTP는 HTML 뿐만 아니라, 이미지, 비디오, 애플리케이션 데이터 등 다양한 데이터 전송 가능
HTTPS
HTTPS는 HTTP에 보안 기능을 추가한 것으로, client와 server 간 통신을 암호화하여 안전하게 만든다. 이는 주로 TLS (Transport Layer Security) 또는 과거에는 SSL (Secure Sockets Layer)을 사용하여 구현된다.
특징
- Encryption
- HTTPS는 데이터를 암호화하여 사용자와 웹 사이트 간에 교환된 정보를 보호한다.
- 이는 데이터가 도청되거나 조작되는 것을 방지한다.
- Authentication
- HTTPS는 서버의 신원을 인증하고, 사용자가 진짜 해당 서버와 통신하고 있음을 보장한다.
- 이는 중간자 man-in-the-middle 공격을 방지한다.
- Data Integrity : HTTPS는 전송 중 교환된 데이터가 변질되지 않았는지 확인한다.
동작 방식
- SSL/TLS Handshake :
- HTTPS 연결이 시작될 때, server와 client 사이에는 SSL/TLS handshaking이 수행된다.
- 이 과정에서 server는 자신의 인증서를 client에게 제공하고, 양측은 암호화된 session을 설정하기 위해 키 교환을 수행한다.
- Secure Communication
- Handshaking이 완료되면, 데이터의 전송과 수신은 암호화되어 처리된다.
- 이는 데이터의 기밀성과 무결성을 보장한다.
- Session Termination
- 통신이 종료되면 양측은 session을 안전하게 종료하고, 사용된 암호화 키는 폐기된다.
3. 도메인 네임 서버 (DNS)
DNS는 분산형 디지털 데이터베이스 시스템으로, 전 세계에 걸쳐 수많은 서버에 걸쳐 운영된다. 사용자가 웹 브라우저에 URL을 입력하면, DNS 서버는 해당 URL의 도메인 이름을 IP 주소로 변환하여 사용자가 원하는 서버에 접속할 수 있도록 돕는다.
동작 방식
- 사용자 요청 : 사용자가 웹 브라우저에 URL을 입력한다.
- 로컬 DNS 서버 조회 : 사용자 디바이스는 설정된 로컬 DNS 서버에 도메인 이름을 조회/요청한다.
- 재귀적/반복적 조회 : 로컬 DNS 서버가 해당 정보를 갖고 있지 않은 경우, 다른 DNS 서버에 요청을 전달하여 필요 정보를 얻는다.
- IP 주소 반환 : 최종적으로 도메인의 IP 주소가 확인되면, 이 정보가 사용자에게 반환되어 웹 사이트에 접속할 수 있게 된다.
특징
- 분산형 네트워크
- DNS는 전세계에 분산된 서버 네트워크에 의해 지원된다.
- 이는 DNS 시스템의 견고함과 확장성을 보장한다.
- Caching
- DNS 정보는 일정 시간 동안 로컬 DNS 서버나 사용자 컴퓨터에 저장될 수 있다.
- 이는 DNS 조회 시간을 단축시키고, 네트워크 트래픽을 줄이는 데 도움이 된다.
- Scalability
- 새로운 도메인 이름과 IP 주소가 계속해서 추가될 수 있으며, DNS는 이런 변경 사항을 자동으로 처리할 수 있다.
DNS는 인터넷 사용의 기본이며, 거의 모든 인터넷 통신 활동에서 중심 역할을 수행한다. 웹 브라우징, 이메일 전송, 클라우드 서비스 접근 같이 도메인 이름을 요구하는 모든 서비스에서 DNS가 핵심적인 기능을 수행한다. 또한, DNS는 네트워크 보안에서도 중요한 역할을 하며, DNS spoofing이나 DNS 증폭 공격 같은 여러 보안 위협에 대응하기 위해 계속 진화하고 있다.
참고 출처
- Difference between SSH and Telnet
- What is SSH, and how do I use it?
'리팩토링 > 1. CS' 카테고리의 다른 글
리팩토링 5주차. OSI 계층 별 프로토콜 특징 (1) (1) | 2024.07.15 |
---|---|
리팩토링 4주차. OSI 계층별 네트워크 장비 특징 (2) | 2024.07.02 |
리팩토링 3주차. TCP와 UDP의 특징과 차이점 (1) | 2024.06.18 |
리팩토링 2주차. OSI 7계층 (1) | 2024.06.10 |
리팩토링 1주차. 제로 트러스트(Zero Trust)에 대해 (1) | 2024.06.03 |