인터넷이 작동하는 원리
네트워크란, 서로 연결된 컴퓨터나 장치의 그룹을 뜻합니다. 이렇게 서로 연결된 컴퓨터나 장치의 그룹이 다시 한번 결합되는 것을 인터넷이라고 합니다. 즉, 인터넷이란 네트워크간의 네트워크입니다.
인터넷은 표준화된 프로토콜을 사용해서 작동합니다. 장치, 네트워크 간에 정보가 교환되는 방식을 정의함으로써 안정적이고 안전하게 전송되는 것을 보장합니다.
핵심은 서로 다른 장치와 시스템이 트래픽을 전달할때 담당하는 상호 연결된 라우터의 네트워크입니다. 인터넷을 통해서 데이터를 보내면 패킷으로 나누어 장치 -> 라우터로 전송되는데, 라우터는 이 패킷을 검사하여 다음 라우터로 전달하는 반복을 최종 목적지로 전달할 때 까지 계속하게 됩니다.
패킷이 올바르게 전송되고 수신되도록 하기 위해서 인터넷 프로토콜, 전송 제어 프로토콜 등 다양한 프로토콜을 사용한다. IP(인터넷 프로토콜)는 패킷을 올바른 대상으로 라우팅 하는 역할, TCP(전송 제퍼 프로토콜)은 패킷이 올바른 순서로 전송되도록 보장합니다.
프로토콜 외에도 DNS, HTTP 및 보안 프로토콜 까지 포함하여 여러가지 기술들이 있습니다. SSL, TLS 등, 개발자로서 이러한 다양한 기술 / 프로토콜이 어떻게 함께 어우러져 작동하는지에 대한 이해가 필요합니다.
기본 용어
위에서 언급했던 단어들이 생소하다면, 이러한 기본적인 단어가 무엇을 뜻하는 지 부터가 중요합니다.
- 패킷 : 인터넷을 통해 전송되는 데이터의 단위
- 라우터 : 서로 다른 네트워크 간에 데이터 패킷을 전달하는 장치
- IP 주소 : 네트워크의 각 장치에 할당한 고유 식별자, 데이터를 올바른 대상으로 라우팅
- 도메인 이름 : naver.com과 같이 웹 사이트를 식별하는 데 사용되는 통용되는 이름(주소)
- DNS : 도메인 이름을 IP 주소로 바꿔주는 역할
- HTTP : 클라이언트와 서버간에 데이터를 전송하는 데 사용
- HTTPS : 클라이언트와 서버 간의 보안 통신을 제공하는 데 사용되는 암호화된 HTTP
- SSL/TLS : SSL (Secure Sockets Layer) 및 전송 계층 보안 프로토콜은 인터넷을 통한 보안 통신을 제공
IP 주소 및 도메인 이름 이해
DNS는 도메인 이름을 IP 주소로 변환하는 역할을 하는 인터넷 인프라의 중요한 부분입니다. 웹에 도메인 이름을 입력하면 컴퓨터는 DNS 서버에 DNS 쿼리를 보내고, DNS 서버는 해당 IP 주소를 반환합니다. 그렇게 해서 컴퓨터는 해당 IP 주소를 사용하여 요청한 웹 사이트나 기타 리소스에 연결합니다.
DNS 쿼리의 처리 과정
- 브라우저에 naver.com 을 입력합니다.
- 로컬내의 hosts 파일에 naver.com 의 ip 주소 정보가 있나 확인합니다.
- hosts 파일이란, ip 주소와 host name을 매칭시켜 놓은 텍스트 파일
- hosts 파일에 정보가 없다면, 컴퓨터에 local DNS cache에 ip 주소를 확인
- Local DNS 에 도메인의 IP 주소가 캐싱되어 있다면 연결됨
- Local DNS 에 도메인의 IP 주소가 없다면, Root DNS 서버 탐색
- Root DNS 서버 탐색:
- 로컬 DNS 서버가 IP 주소 정보를 모를 때, Root DNS 서버로 쿼리를 시작합니다.
- Root DNS 서버는 해당 도메인의 주소 정보를 직접 알고 있지 않지만, 해당 도메인을 관리하는 TLD (Top Level Domain, 예: .com, .org)의 DNS 서버 정보를 알려줍니다.
- TLD (Top Level Domain) DNS 서버 탐색:
- 로컬 DNS 서버는 Root DNS 서버로부터 받은 TLD DNS 서버 정보로 TLD DNS 서버에 연결합니다.
- TLD DNS 서버는 해당 도메인의 authoritative DNS 서버 정보를 알려줍니다.
- Authoritative DNS 서버 탐색:
- 로컬 DNS 서버는 TLD DNS 서버로부터 받은 authoritative DNS 서버 정보로 해당 서버에 연결합니다.
- Authoritative DNS 서버는 해당 도메인에 대한 최종적인 IP 주소를 제공합니다.
- IP 주소 받아오기:
- 로컬 DNS 서버는 authoritative DNS 서버로부터 받은 IP 주소 정보를 로컬 캐시에 저장합니다. 이렇게 저장된 정보는 일정 시간동안 유효하게 되며, 이 시간 동안은 같은 도메인에 대한 쿼리가 올 경우 로컬 캐시에 있는 정보를 바로 사용하게 됩니다.
- 로컬 DNS 서버는 브라우저에 해당 IP 주소를 전달합니다.
- 웹사이트 접속:
- 브라우저는 전달받은 IP 주소로 웹 서버에 접속하게 됩니다.
- 웹 서버는 브라우저에 웹페이지 데이터를 전달하고, 브라우저는 해당 데이터를 해석하여 사용자에게 웹페이지를 표시합니다.
TCP/IP 를 사용하여 어플리케이션 구축
대부분 인터넷 기반 응용 프로그램과 서비스에서 사용되는 기본 통신 프로토콜 입니다. 서로 다른 장치에서 실행되는 애플리케이션 간에 안정적이고, 순서가 보장된 데이터 전달 제공을 목적으로 합니다.
- 포트 : 장치에서 실행중인 애플리케이션이나 서비스를 식별하는 데 사용
- 소켓 : IP 주소, 포트 번호의 조합으로 통신을 위한 특정 엔드포인트 역할 즉, 프로그램이 네트워크를 통해 다른 프로그램과 통신 하려면 소켓을 사용해야 함
- 연결 : 두 장치가 서로 통신하려고 할 때, 소켓 사이에 연결이 설정됨 다양한 매개변수를 협상하여 데이터가 전송되는 방식을 결정
- 데이터 전송 : 연결이 설정되면 각 장치에서 실행되는 애플리케이션 간에 데이터를 전송할 수 있음
SSL/TLS로 인터넷 통신 보안
전송되는 데이터를 암호화 하는 곳에 사용하는 프로토콜입니다. 일반적으로 웹 브라우저, 이메일 클라이언트, 파일 전송 프로그램과 같은 애플리케이션에 보안 연결을 제공하는 데 사용합니다. SSL/TLS는 데이터를 암호화 후 전송하기 때문에, 중간에 가로채도 원본 내용을 알 수 없습니다.
SSL/TLS 를 사용하여 통신을 보안할 때에 이해해야 하는 주요 개념들이 존재한다.
- 인증서 : 클라이언트와 서버간의 신뢰를 구축하는데 사용합니다. 서버의 대한 정보가 포함되어 있으며, 신뢰성을 확인하기 위해 제3의 서명을 받습니다.
- 핸드셰이크 : SSL/TLS 핸드셰이크 프로세스 중에 클라이언트와 서버는 보안 연결을 위한 암호화 알고리즘 및 기타 매개변수를 협상하기 위해 정보를 교환합니다.
- 암호화 : 보안 연결이 설정되면 합의된 알고리즘을 사용하여 데이터가 암호화되며 클라이언트와 서버 간에 안전하게 전송될 수 있습니다.
SSL/TLS의 작동 과정은 다음과 같습니다:
- 핸드쉐이크: 클라이언트와 서버는 통신을 시작할 때 핸드쉐이크 과정을 거칩니다. 이 과정에서 양측은 암호화 방법, 키 교환 메커니즘, 인증서 검증 등에 관한 정보를 교환합니다.
- 키 교환: 핸드쉐이크 과정 중에 양측은 통신에 사용할 공통의 비밀 키를 생성하고 교환합니다.
- 데이터 전송: 비밀 키를 사용하여 데이터를 암호화하고 전송합니다.
- 세션 종료: 통신이 끝나면 세션을 안전하게 종료합니다.
'기본 CS지식' 카테고리의 다른 글
DNS란 (0) | 2023.10.16 |
---|---|
브라우저란 (0) | 2023.10.16 |
HTTP란 (1) | 2023.10.12 |
Backend Developer 백엔드 로드맵 따라가기 23.10.19 (0) | 2023.10.10 |
MSA 아키텍처에 대해 (1) - Micro Services Architecture (0) | 2023.09.11 |