뚝딱햄 탈출기

DNS, HTTP, 기타 전송 및 보안 프로토콜, 쿠키 세션 JWT 본문

데이터 통신 & 컴퓨터 네트워크

DNS, HTTP, 기타 전송 및 보안 프로토콜, 쿠키 세션 JWT

hyrmzz1 2023. 8. 27. 17:30
EliceAcademy <실천 압축 컴퓨터 개론> 강의 내용 정리 (Chap.4 네트워크)

DNS (Domain Name System)

도메인 이름(ex. www.naver.com)은 인터넷에서 서로를 식별할 때 사용되는 고유한 이름으로, 기억하기 쉽기 때문에 IP 주소 대신 사용.

DNS는 도메인 이름과 IP 주소 간의 변환을 처리하는 시스템.

인터넷 서비스 제공자(IPS. ex. lg, kt, skt)가 제공하는 DNS 서버를 통해 실행됨.

DNS 동작 과정

  1. 웹 브라우저에 입력된 도메인 이름(www.elice.io)을 입력하여 접속
  2. DNS 서버에서 실제 주소(IP 주소. 192.168.123.132)로 변환
  3. IP 주소를 통해 웹 서버에 페이지를 요청
  4. 웹 브라우저에 웹 페이지가 나타남.

HTTP (Hypertext Transfer Protocol)

웹 브라우저와 웹 서버 간의 통신에서 HTML 문서, 이미지, 오디오, 비디오 등의 리소스를 전송하기 위해 사용하는 규칙.

HTTP 특징

무상태 (Stateless)

  • 서버가 클라이언트의 상태를 보존하지 않음. => 이전 요청 기억 X
  • 클라이언트 요청은 독립적으로 처리되며, 서버는 요청에 대한 응답만 전송.
    => 서버의 확장성 ↑

비연결성 (Connectionless)

  • 클라이언트의 요청과 서버의 응답 사이에 연결을 유지하지 않음.
    => 서버는 불필요한 연결을 줄여 많은 클라이언트의 요청을 동시 처리할 수 있음.

HTTP 메시지

클라이언트/서버 모델을 따름.

클라이언트는 HTTP 요청 메시지를 서버에 전송하고, 서버는 HTTP 응답 메시지를 클라이언트에 반환함.

HTTP 구조

Start Line, Header, Blank Line, Body 로 구성.

요청 메시지와 응답 메시지에 따라 담기는 내용에 차이가 있음.

HTTP 요청 메시지

Start Line

  • HTTP Method : 요청의 의도. GET, POST, PUT, DELETE 등.
  • Request target : 요청하는 대상의 URL
  • HTTP Version : HTTP 프로토콜 버전

Header

  • Header Field에는 다양한 종류가 있음.
    • Host : 요천하는 호스트의 이름 및 포트 번호
    • User-agent : 클라이언트가 사용하는 웹 브라우저 정보
    • Referer : 직전에 머무른 웹 사이트 URL
    • Accept : 클라이언트가 원하는 데이터 타입 및 우선 순위
    • If-Modified-Since : 값으로 지정한 날짜 이후에 수정된 자원 요청
    • Authorization : 클라이언트가 가지고 있는 서버에 대한 권한 정보
    • Orgin : 요청이 시작된 주소 정보
    • Cookie : 서버에 의해 설정된 클라이언트의 쿠키 정보

HTTP 응답 메시지

Start Line

  • HTTP version : HTTP 프로토콜 버전
  • Status code : 요청에 대한 성공, 실패와 같은 상태 정보
    2xx: 성공, 3xx: 리다이렉션, 4xx: 클라이언트의 오류, 5xx: 서버의 오류
  • Status message : 응답 상태에 대한 설명

Header

  • Header Field에는 다양한 종류가 있음
    • Location : 리다이렉션 해야하는 페이지의 URL
    • Server : 서버에서 사용하는 소프트웨어 정보
    • Age : 응답이 생성되고 지난 초 단위의 시간
    • Referrer-Policy : 요청 메시지에 포함할 Referer 정보의 양을 제어
    • WWW-Authenticate : 클라이언트가 서버에 인증해야 하는 방식
    • Proxy-Authenticate : 클라이언트가 프록시 서버로 인증 정보를 보내는 방식. 프록시 서버란 클라이언트와 서버 간의 인터넷 연결에서 중계 역할을 하는 서버.
    • Content-Type : 응답되는 메시지의 데이터 타 

HTTPS (Hypertext Transfer Protocol Secure)

기존 HTTP 프로토콜에서 데이터를 암호화하고 인증하는 과정을 추가해 보안을 강화한 프로토콜.

HTTP가 사용하는 포트 번호는 80번, HTTPS가 사용하는 포트 번호는 433번.

기타 프로토콜

SMTP (Simple Mail Transfer Protocol)

전자 메일을 보내는 데 사용되는 프로토콜.

유저가 작성한 이메일 클라이언트(ex. Gmail, Naver mail)에서 작성한 이메일을 메일 서버로 전달한 뒤, 해당 메일 서버에서 수신자의 메일 서버로 이메일을 전송하는 역할을 수행함.

FTP (File Transfer Protocol)

클라이언트와 서버 간에 파일 전송을 위한 연결을 설정하고, 파일을 업로드 및 다운로드 할 수 있게 해주는 프로토콜.

대용량 파일을 보낼 때 사용하나, 최근에는 자주 사용되지 않음. => HTTP, SSH 등으로 대체

FileZilla 프로그램 사용해 FTP 서버와 파일 주고받을 수 있음.

3-Way Handshake 방식으로 연결. (TCP를 사용하여 연결되기 때문)

위의 그림에선 PASV(passive) 모드로 연결되었으나 Active 모드로 연결될 수도 있음.

 

3-Way Handshake 방식과 TCP 관련 내용은 아래 포스팅 참고.

2023.06.21 - [데이터 통신 & 컴퓨터 네트워크] - [인터넷공학] Chap9. TCP 프로토콜 : 전송 계층, 혼잡 제어, 포트 번호

 

[인터넷공학] Chap9. TCP 프로토콜

인터넷 공학(2) 수업에 사용되는 쉽게 배우는 데이터 통신과 컴퓨터 네트워크 [3판] / 박기현 / 한빛 아카데미 교재에 대한 연습문제를 정리한 내용이다.전송 계층과 데이터 링크 계층전송 계층

hyrmzz1.tistory.com

SSH (Secure Shell)

클라이언트가 서버에 로그인해 원격으로 컴퓨터를 제어하거나 파일 전송 등을 할 수 있게 해주는 프로토콜.

클라이언트가 호스트 이름이나 IP 주소를 입력해 서버에 접속하면 서버에서 키를 전달함.

해당 키를 바탕으로 클라이언트에서 사용자 이름과 암호를 설정하여 서버에 인증 정보를 전달함으로써 접속할 수 있음.

데이터 전송 과정에서 데이터를 암호화하므로 보안이 뛰어남.

SSL (Secure Sockets Layer)

클라이언트와 서버 간에 전송되는 데이터를 암호화해 통신을 보호하고 보안을 유지하기 위해 사용되는 보안 프로토콜.

TLS (Transport Layer Security)

SSL과 동일 기능을 하나 보안성이 더욱 강화되어 SSL를 대체함.

웹 브라우저와 서버 간의 통신, 이메일 및 파일 전송 등 다양한 곳에서 사용됨.

프로토콜에 TLS를 더해 보안 강화. (HTTP + TLS → HTTPS, FTP + TLS → FTPS, SMTP + TLS → SMTPS)

DHCP, POP3, IMAP, SNMP

인증 및 인가를 위한 방법 : 쿠키, 세션, JWT

보안적 측면에서 사용자가 누구인지 확인하는 인증과, 사용자가 접근 가능한 자원에 대해 권한을 부여하는 인가는 중요함.

따라서 웹에서 사용자의 정보를 저장해야 하나, HTTP는 무상태(stateless)라는 특징을 갖기 때문에 상태를 저장하지 않음.

=> 쿠키, 세션, JWT 사용!

쿠키

서버에 의해 클라이언트에 저장되는 데이터 파일.

사용자의 정보를 클라이언트에 저장하는 방식.

=> 서버의 부하가 줄어들지만, 탈취되어 개인정보 노출의 위험이 있음.

쿠키 확인법

크롬 개발자 도구 (F12) → Application → Storage → Cookie

세션

클라이언트의 상태 정보를 서버 측에서 유지함.

사용자의 정보를 서버에 저장하는 방식.

=> 보안성은 높으나 서버에 많은 자원이 필요해 부하가 걸릴 수 있음.

JWT (JSON Web Token)

웹의 사용자 인증 정보를 안전하게 관리하기 위한 토큰.

사용자의 정보를 클라이언트에 저장하기 때문에 서버에서 토큰 정보를 유지/관리/저장하지 않음.

=> 서버에 대한 부담 ↓

Signature(서명)을 통해 위조나 변조를 감지할 수 있고, 유효 기간 설정을 통해 보안성 높일 수 있음.

Header, Payload, Signature라는 데이터들을 인코딩한 형태로 저장함.

  • Header에는 어떤 방법으로 인코딩할 것인지 입력.
  • Payload에는 어떤 정보를 저장할 것인지 입력.
  • Signature에는 해당 토큰이 어떤 사람의 것인지를 증명해주는 키를 입력.
    키는 유추하기 어려운 랜덤한 문자로 길게 설정하는 것이 안전. 

쿠키나 세션보단 JWT가 보안성 및 확장성이 우수하나,
데이터가 탈취당할 가능성이 있고 데이터들이 인코딩 되어 있을 뿐, 암호화된 것이 아니기 때문에 보안성이 아주 높다 할 수는 없음.

 


HTTP, 쿠키 관련 내용 참고 - Ep.17

2023.03.23 - [read about···💭📓👀🧠/IT 5분 잡학사전] - [IT 5분 잡학사전]Ep.16~21 요약 및 TIL

 

[IT 5분 잡학사전]Ep.16~21 요약 및 TIL

2월 23일 새벽.. 나홀로 제주 애월 여행 중 쓰던 TIL을 이제야 마저 쓰는 나에요 .. ㅋㅋ Ep.16 인터넷 익스플로러가 사라진 이유와 브라우저 엔진 인터넷 익스플로러는 CSS와 Ajax를 최초로 적용한 웹

hyrmzz1.tistory.com

 

Comments