HTTP 요약

wodnr_P·2023년 7월 8일
0

CS 메모지

목록 보기
2/5

HTTTP는 무엇인가?

HyperText Transfer Protocol
텍스트 기반 통신 규약으로 클라이언트 / 서버 간 통신을 위한 프로토콜
즉, 인터넷상에서 데이터를 주고 받을 수 있는 프로토콜

  • TCP/IP를 이용하는 응용 프로토콜
  • 비연결성 프로토콜 : 연결 상태를 유지하지 않음
  • 요청 / 응답 방식으로 동작

HTTP Request

Start line, Header, Body로 나뉨

Start line

  • HTTP method : GET, POST, PUT, DELETE 등
  • Request target : Http request가 전송되는 목표 주소
  • HTTP version : 버전에 따라 request 메시지 구조 or 데이터가 달라 질 수 있음

HTTP Request 그 자체에 대한 정보 (메타), Key : value 형태

  • Host : 요청하려는 서버 호스트 이름과 포트번호
  • User-agent : 클라이언트 프로그램 정보
  • Referer : 직전에 머물렀던 웹 링크 주소
  • Accept : 클라이언트가 처리 가능한 미디어 타입 종류
  • Cookie : key-value 형태
  • Origin : 서버로 POST 요청 보낼 때, 요청이 어느 주소에 시작되었는지 나타내는 값
    • 요청 보낸 주소와 받는 주소 다르면 CORS(Cross origin resource sharing)에러 발생
  • Authorization : 인증 토큰 서버로 보낼 때 쓰이는 header
  • if modified-since : 이 값(시간) 이후로 변경된 리소스 취득

Body

Http request가 전송하는 데이터를 담고 있는 부분

  • POST 요청일 경우, form 데이터가 포함
  • 전송 데이터가 없다면 비어있음

⭐️ Request 요청시 동작 순서

  1. Request요청시 요청하는 url은 DNS Server를 통해 IP주소를 응답받음
  2. url 정보와 응답 받은 IP주소는 HTTP protocol을 사용하여 HTTP request message를 생성
  3. 이 요청 메시지는 tcp protocol을 사용하여 인터넷을 거쳐 해당 IP 주소의 Web server로 전송
  4. Web server로 도착한 요청 메시지는 HTTP protocol을 사용하여 url 정보로 변환
  5. Web server는 url 정보를 확인하고 정적 컨텐츠일 경우 바로 컨텐츠를 응답, 동적일 경우 WAS에 요청을 전달
  6. WAS는 요청에 맞게 처리 후 Http response 형태로 Web server에 다시 전달
  7. Http protocol로 응답 메시지를 생성하고 tcp protocol을 사용해 인터넷을 거쳐 요청한 곳으로 전송
  8. 도착한 응답 메시지는 Http protocol로 웹 페이지 데이터로 변환
  9. 변환된 데이터는 브라우저를 통해 사용자가 볼 수 있음

HTTP Response

HTTP Request와 동일하게 Start line, Header, Body로 나뉨

Start line

Http version, status code, status text

Header

  • Request와 동일하지만 Response에서만 사용되는 값들이 있음
  • Location, Server, age, referrer-policy, www-authenticate, proxy-authenticate

Body

Request와 마찬가지로 데이터를 전송할 필요가 없다면 비어있음


HTTPS

HTTP에 데이터 암호화가 추가된 프로토콜

  • 443 포트 사용
  • 네트워크 상에서 제 3자가 중간에 정보를 볼 수 없도록 암호화 지원
  • 대칭키와 비대칭키 암호화 방식을 모두 활용

    대칭키 : 클라이언트와 서버가 동일한 키로 암/복호화 진행
    --> 키 노출시 위험, 연산 속도 빠름

    비대칭키 : 1개의 쌍으로 구성된 공개키와 개인키로 암/복호화 진행
    --> 키 노출시 비교적 안전, 연산 속도 느림

원리

  • 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키 사용
  • 이후 데이터 교환 과정에서 빠른 연산을 위해 대칭키 사용

⭐️ HTTPS 동작 과정

  1. 클라이언트가 서버에 최초 연결 시도
  2. 서버는 공개키(인증서)를 브라우저에 넘겨줌
  3. 브라우저는 인증서의 유효성을 검사 후, 세션키 발급
  4. 브라우저는 세션키를 보관, 서버의 공개키로 세션키를 암호화하여 서버에 전송
  5. 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
  6. 클라이언트와 서버는 동일한 세션키를 공유, 데이터 전달시 세션키로 암/복호화 진행
profile
발전하는 꿈나무 개발자 / 취준생

0개의 댓글