1. 도메인 이름 체계(DNS)
인터넷에 접속할 때 복잡한 숫자로 된 IP 주소 대신 `www.example.com` 같은 사람이 읽기 쉬운 도메인 이름을 사용한다. DNS(Domain Name System)는 이런 도메인 이름을 계층적으로 관리한다. 각 계층은 관리 책임이 다른 구역(Zone)으로 나뉘며, 이를 명칭 공간(namespace)이라 부른다.
- 서브도메인: `en.wikipedia.org`에서 `en`은 위키피디아의 영어판을 의미하는 서브도메인이다.
- 도메인 이름: `.wikipedia` 같은 이름은 국제인터넷주소관리기구(ICANN)이 관리하고, 도메인 등록 대행 업체(register)를 통해 누구나 구매할 수 있다.
- 최상위 도메인(TLD): `.com, .org, .net` 같은 일반 도메인과 `.kr, .jp, .uk` 같은 국가 코드 도메인이 있다.
2. 도메인 이름을 IP 주소로 변환하기
1️⃣ 로컬 DNS 변환기(Local DNS Resolver)
- 컴퓨터는 먼저 로컬 DNS 변환기에게 해당 도메인의 IP 주소를 물어본다.
- 이 변환기는 보통 집에서 사용하는 홈 라우터나 ISP가 제공하는 DNS 서버다.
- 여기서 말하는 DNS 서버 주소는 우리가 흔히 설정하는 `8.8.8.8(Google DNS)`, `1.1.1.1(Cloudflare DNS)` 같은 것이다.
2️⃣ 루트 서버(Root Server)
- 로컬 DNS 변환기가 답을 모르면, 루트 서버에 질의한다.
- 루트 서버는 해당 도메인의 최상위 도메인(TLD, Top-Level Domain) 서버 주소를 알려준다.
3️⃣ TLD 서버(Top-Level Domain Server)
- `.com, .org, .kr` 같은 최상위 도메인을 관리한다.
- TLD 서버는 다시 해당 도메인을 관리하는 권한 있는 네임 서버(Authoritative Name Server) 의 주소를 알려준다.
4️⃣ 권한 있는 네임 서버(Authoritative Name Server)
- 최종적으로 특정 도메인(example.com)에 대한 IP 주소를 실제로 보관·관리하는 서버다.
- 이 서버가 최종 응답으로 실제 IP 주소를 반환한다.
3. 하이퍼텍스트 전송 규약(HTTP)
HTTP(Hypertext Transfer Protocol)는 웹에서 정보를 주고받는 규약이다.
- 클라이언트-서버 모델: 사용자가 브라우저(클라이언트)로 요청을 보내면, 서버가 응답을 보낸다.
- 응용 계층 프로토콜: HTTP 자체는 “언어” 역할을 하고, 실제 데이터 전송은 하위 계층인 TCP가 담당한다.
- 요청과 응답: 브라우저가 서버에 요청을 보내면, 서버는 응답 메시지와 함께 HTML, JSON 같은 데이터를 돌려준다.
- HTTP 헤더: 데이터 유형, 브라우저 정보, 운영체제, 콘텐츠 유형 등 부가 정보를 담고 있다.
4. 보안 HTTP(HTTPS)
HTTP는 평문으로 데이터를 주고받기 때문에 중간에 노출될 위험이 있다. 이를 보완한 것이 HTTPS다.
- HTTPS는 데이터를 전송하기 전 암호화된 봉투에 넣어 보낸다.
- IP 주소 같은 라우팅 정보는 암호화하지 않지만, 실제 메시지와 헤더는 보호된다.
- 암호화에는 TLS(전송 계층 보안, Transport Layer Security) 프로토콜이 사용된다.
5. 전송 계층 보안(TLS)
TLS는 클라이언트와 서버 사이의 통신을 안전하게 만드는 핵심 기술이다.
- 핸드셰이크: 통신을 시작할 때 서버와 클라이언트가 비밀 키를 주고받아 이후 모든 데이터를 암호화한다.
- 인증서: 서버는 신뢰할 수 있는 기관(CA, Certificate Authority)에서 발급받은 디지털 인증서를 통해 자신이 진짜임을 증명한다. 인증서에는 서버 이름, 공개키, 소유자 정보 등이 들어 있다.
- 취약점: CA 자체가 공격을 당하거나 위조 인증서가 발급될 경우, 보안 체계가 무너질 수 있다.
6. 암호 기법
1) 데이터 서명(Digital Signature, 인증)
- 데이터가 위·변조되지 않았음을 증명하고, 발신자가 누구인지 인증하는 기술.
- 예: JWT 서명, 인증서 서명, 소프트웨어 패키지 서명.
2) 암호화 (Encryption)
- 평문(Plaintext) → 읽을 수 없는 암호문(Ciphertext) 으로 변환하는 과정.
- 반대로 암호문을 평문으로 되돌리는 과정을 복호화(Decryption)라고 한다.
- 암호화 알고리즘은 키(Key) 라는 매개변수를 사용하여 데이터를 변환한다.
대칭키 암호: 암호화와 복호화에 동일한 비밀 키를 사용하는 방식
비대칭키 암호 (공개키 암호): 공개키(Public Key) 와 개인키(Private Key) 한 쌍을 사용하는 방식,
공개키로 암호화한 데이터는 해당 개인키로만 복호화할 수 있음.
7. 전송 암호화
- 데이터(패킷)가 네트워크를 통해 이동할 때 전송 경로 자체를 암호화하는 것.
- 대표적으로 TLS(Transport Layer Security) 가 사용된다.
- TLS는 HTTPS, 이메일, 메시징 등 대부분의 네트워크 통신 보안에 적용된다.
한계
- TLS는 “전송 중인 연결”만 암호화한다.
- 데이터가 서버에 도착해 저장된 이후에는 평문일 수도 있음.
- 공격자가 중간자 공격(MITM, Man-in-the-Middle)을 시도하면, 수신자인 척 위장해 데이터를 탈취할 위험이 있다.
8. 순방향 비밀성
- 과거 통신 데이터가 나중에 키가 유출되더라도 복호화되지 않도록 보장하는 기능.
- 방법: 각 통신 세션마다 새로운 단기 세션 키(Ephemeral Key) 를 생성하여 사용한다.
- 이 세션 키는 일회성이므로, 통신이 끝나면 폐기된다. 따라서 탈취한 패킷도 나중에 복호화할 수 없다.
✍️ 『읽자마자 IT 전문가가 되는 네트워크 교과서』의 내용을 참고해 정리한 글입니다.
'CS' 카테고리의 다른 글
| [네트워크] 데이터를 전송하는 방법 - UDP, TCP, QUIC (1) | 2025.08.03 |
|---|---|
| [네트워크] 인터넷에서 정보가 이동하는 구조 - BGP, IXP (3) | 2025.07.27 |
| [네트워크] 인터넷에서 기기가 통신하는 방법 – 패킷, 프로토콜, NAT (0) | 2025.07.18 |
| [네트워크] 기기가 네트워크에 연결되는 과정 (0) | 2025.07.07 |