-
강의 과제) 응용 계층, DNS, HTTPTIL-sparta 2024. 6. 20. 10:40
학습 키워드: application layer, DNS, HTTP
1. 응용 계층이란?
응용 계층(application layer, L7)은 OSI 모델의 최상단에 위치한 계층으로, TCP/IP 모델에서는 전송 계층(L4) 상단의 계층을 통틀어 의미하며, 앱 개발자에게 보여지는 부분입니다. 응용 계층은 클라이언트의 요청을 전송 계층으로 전달하는 역할을 하는데, 운영체제의 커널과 앱 사이에서 메세지를 전송해 주는 작업을 socket이 담당합니다.
2. DNS란?
DNS는 Domain Name System의 약자로, 숫자로 이루어져 알아보기 힘든 IP 주소를 사용자가 읽기 쉽도록 문자로 된 주소로 변환하는 것을 말합니다. DNS가 관리되는 DNS 서버가 존재하며, 사용자가 브라우저에 DNS 주소를 입력하게 되면 라우터 혹은 개인 PC의 네트워크 설정에 기록된 DNS 서버 주소를 찾아가고, DNS서버는 해당 주소에 대치되는 IP를 찾아 반환합니다.
3. HTTP란? (이전 TIL 내용)
1) What is it?:
- HTTP는 Hypertext Transfer Protocol의 약자로, hypertext를 전송하는 규약 (protocol)을 의미한다. 여기서 hypertext란, 디스플레이에 표시되는 텍스트나 이미지 등을 포괄적으로 의미하며, 이 hypertext가 담긴 문서(documnent)는 서로 간에 마우스 클릭이나 화면 터치 등으로 동작하는 hyperlink로 연결되어있다.
- HTTPS의 S는 secure의 약자다. 보안이 취약한 HTTP 대신 암호화를 통한 안전한 연결을 제공한다.
2) How does it work?:
HTTP Request, 출처: 강의 노트
HTTP Response, 출처: 강의 노트
- HTTP는 클라이언트의 Request와 그 요청을 처리하는 서버의 Response로 구성되며, request에는 5가지의 주요 method (GET: 조회, POST: 생성, PUT: 대체 및 생성, PATCH: 일부 변경, DELETE: 삭제)가 존재한다.
- 클라이언트의 요청이 없으면 서버가 응답을 먼저 보낼 수 없는 단방향의 구조다.
- 요청 후 연결하고, 서버의 응답과 함께 연결이 종료되기 때문에 'connectionless' 하다 라고 표현한다(비연결성).
- HTTP에도 버전이 있다. 전 세계적으로 가장 많이 사용되는건 HTTP/1 이며, 네이버, 인스타그램, 페이스북 등에서 사용하는 HTTP/2, 구글에서 사용하는 HTTP/3 도 존재한다. 크롬의 개발자 도구에서 Network 탭의 column에 protocol을 추가하면 나타나는 h2나 h3가 HTTP의 버전을 의미한다. 1과 2는 TCP, 3은 UDP 기반이다.
- HTTP에는 request의 처리 결과를 숫자로 알려주는 status code (status code 목록) 가 있는데, 가장 유명한 404 not found 처럼 상황에 맞게 돌려주는 번호들이 존재한다. 단순한 약속이나 가이드 같은 것이라서 코드 번호가 올바르지 않더라도 작동에는 문제가 없으나, 올바른 코드 번호를 설정해두면 문제가 생겼을 때 원인을 빠르게 파악하는데 도움이 된다.
- HTTP는 암호화 없이 평문으로 통신하며, 통신 상대를 검증하지 않기 때문에 보안에 취약하다.
3) Why use HTTPS?:
- HTTPS를 왜 사용하는가는 사실 HTTP의 보안 문제와 HTTPS의 존재 그 자체로 설명된다. HTTP의 보안상의 약점을 보완한 것이 바로 HTTPS기 때문이다. HTTPS는 브라우저와 웹사이트간의 암호화된 연결을 수립하는 SSL (Secure Sockets Layer) 기술이나, 거기서 더 발전되어 DigiCert의 보안 인증서를 도입하는 TLS (Transport Layer Security) 기술을 사용한다. 암호화와 복호화에 사용하는 키가 같으면 대칭키, 다르면 비대칭키 방식이라고 부른다.
- 비대칭키 방식은 공개키와 개인키를 사용하는데, 공개키로 암호화했다면 개인키로, 개인키로 암호화했다면 공개키로만 복호화할 수 있다. 서버에서는 서버의 개인키가 있는데, 이 키는 복호화에만 사용되며, 대중에게 공개되는 공개키로는 암호화만 진행할 수 있다. 따라서 어떤 데이터가 탈취 당하더라도 탈취자가 서버의 개인키를 알 방법이 없으므로 정보를 복호화할 수 없다. 보안이 뛰어나지만 구현이 어렵고, 암호화 복호화 과정에 시간이 걸린다는 단점이 있다. 전자 서명이나 메세지 전송등 탈취에 민감한 데이터를 주고받을 때 주로 사용된다고 한다.
- 비대칭키 방식의 SSL인증 과정: 클라이언트가 접속 요청 > 서버에서 공개키 전송 > 클라이언트가 수신한 공개키로 대칭키 암호화 > 서버에서 수신한 대칭키를 개인키로 복호화 > 이 후 주고받는 데이터는 대칭키를 이용
- SSL handshake: 대칭키, 비대칭키 방식을 모두 사용하여 요청과 응답을 암호화하며, 서버가 인증서를 발급받은 외부 기관(DigiCert 등, CA라고 칭함)에서 공개 키의 유효성을 검증/보증 해주는 방식이다.
--
REFERENCES:> "[네트워크] 응용 계층" by 박성재
> "Application Layer 개요" by dong1
728x90'TIL-sparta' 카테고리의 다른 글
프로그래머스) 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 풀이 (MySQL) (0) 2024.06.22 [TIL] 타워 디펜스 팀 프로젝트 종료 (D-Day) (0) 2024.06.21 [TIL] 타워 디펜스 팀 프로젝트 진행 (D-2) (0) 2024.06.19 [TIL] 타워 디펜스 팀 프로젝트 진행 (D-3) (0) 2024.06.19 [TIL] 타워 디펜스 팀 프로젝트 발제 (D-4) (0) 2024.06.17