Home Study | CS HTTP
Post
Cancel

Study | CS HTTP

HTTP

목차

  1. HTTP란 뭔가요?
  2. HTTP 프로토콜의 가장 큰 특징은 뭔가요?
  3. URL은 뭔가요?
  4. HTTP/1.1 과 HTTP/2.0의 차이는 뭔가요?
  5. HTTPS는 HTTP랑 뭐가 다른가요?
    심화) 공개키 (비대칭키) 방식이 뭔가요?

  6. http의 get,post 비교
  7. http의 status code


1. HTTP란 뭔가요?

Hypertext Transfer Protocol(HTTP)
클라이언트가 요청을 생성하기 위한 연결을 연 다음 응답을 받을 때까지 대기하는 전통적인 클라이언트-서버 모델 -> 인터넷에서 데이터를 주고 받을 수 있는 프로토콜

*프로토콜 : 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화 시켜 놓은 통신 규약(=규칙)


2. HTTP 프로토콜의 가장 큰 특징은 뭔가요?

  1. 무상태 프로토콜
    서버가 두 요청 간에 어떤한 데이터(상태)도 유지하지 않음
    (상태를 유지하기 위해 cookie/sesssion 사용)
  2. 클라이언트 서버 구조(req, res 구조)

    1. 클라이언트는 서버에 요청(req)을 보내고 응답을 대기
    2. 서버가 요청에 대한 결과를 만들어 응답(res)
  3. 비 연결성
    HTTP에서 실제로 요청을 주고받을 때만 연결을 유지, 응답을 주고나면 TCP/IP 연결을 끊음 => 최소한의 자원으로 서버를 유지
    HTTP 지속 연결(Persistent Connections)로 문제를 해결함

  4. HTTP 메세지
    클라이언트와 서버 사이에서 데이터가 교환되는 방식(요청/응답 유형)
    image
    요청 메세지
    image
    응답메세지
    image
  5. 단순함, 확장 가능


3. URL은 뭔가요?


Unuform Resource Locators(인터넷에서 자원 위치)
웹에서 게시된 어떤 자원을 찾기 위해서 browsers에 의해 사용되는 매커니즘(= 웹페이지를 찾기 위한 주소)

구조 : 프로토콜 :// “ip,도메인,포트” 주소 / 자원 위치(디렉토리/파일/파일형 등)

예시)

https://zinnli.github.io/About/
프로토콜 “ip,도메인,포트”등의 주소 자원위치(디렉토리/파일/파일형 등)


4. HTTP/1.1 과 HTTP/2.0의 차이는 뭔가요?


HTTP/1.1 : HTTP의 표준 - 중요한 성능 최적화를 도입함

HTTP/2 : HTTP/1.1의 성능향상

차이점

  1. 바이너리 프레이밍 계층 : http 메세지가 클라이언트와 서버 사이에 어떻게 캡슐화되고 전송되는지 관여함(http 메세지를 독립적인 개별 프레임 단위로 나누어 상호 배치하여 전송 및 목적지에 도착했을 때 재조립함)
  2. 스트림, 메세지 및 프레임
    • 스트림 : 생성된 하나의 커넥션 내 데이터의 양방향 흐름(하나 또는 그 이상의 메세지를 보유함)
    • 메세지 : 프레임의 완전한 시퀀스(집합)
    • 프레임 : HTTP/2에서 사용되는 커뮤니케이션 단위 중 가장 작은 단위 -> 어떤 스트림에 속하는지 나타내는 정보를 가진 프레임 헤더를 지님
  3. 요청 및 응답 다중화 : HTTP 메세지를 독립된 프레임으로 세분화 하여 재조립 허용(HTTP/1.1의 경우 하나의 연결 당 하나의 메세지)
  4. 스트림 우선순위 지정 : 우선 순위 지정 트리를 구성하여 통신 가능
  5. 출처당 하나의 연결 : 바이너리 프레이밍의 역할로 여러개의 TCP 연결이 필요 없어짐
  6. 서버 푸시 : 클라이언트의 단일 요청에도 여러개의 응답을 보낼 수 있는 기능(불필요한 통신량을 줄여줌)
  7. 헤더 압축 : 요청 및 응답 헤더의 메타 데이터를 압축함 => 개별 http 메세지의 용량이 줄어듬

1,3,5는 비슷한 결의 내용들


5. HTTPS는 HTTP랑 뭐가 다른가요?


도메인의 자물쇠로 확인 가능

HTTP : 보안 취약 / 속도 빠름

HTTPS(Hypertext Transfer Protocol Secure)
HTTP에 데이터 암호화가 추가된 프로토콜

  • 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 암호화를 지원함(SSL 인증서 사용)=> 안전한 데이터 교환 / 속도 느림(현재는 차이 거의 x)
  • 인증서를 발급하고 유지하기 위한 추가 비용

상황에 따라 HTTP/HTTPS 사용


심화) 공개키 (비대칭키) 방식이 뭔가요?


HTTPS에서 사용하는 암호화 방식

  1. 대칭키 암호화

    • 콜라이언트와 서버가 동일 키를 사용해 암호화/복호화를 진행
    • 키 노출되면 위험 / 연산 속도는 빠름
  2. 비대칭키 암호화 - 암호화, 복호화 시 다른 키를 사용함

    • 1 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용(ex 키 A로 암호화 / 키 B로 복호화 == 한 쌍)
    • 키가 노출되어도 비교적 안전 / 연산속도는 느림

공개키 : 모두에게 공개가능한 키
개인키 : 나만 가지고 알고 있어야 하는 키

HTTPS는 handshaking 과정에서 비대칭키를 사용하여 인증서(대칭키)를 보내고 이 인증서에 대칭키를 안전하게 받았다면 연결 이후 대칭키를 사용해서 전달함

handshaking 과정(https)

  1. 클라이언트) 서버에 접속해서 말을 검(Client Hello)(= 브라우저는 일부의 정보를 이 단계에서 전달함)
  2. 서버) 위의 인사에 응답, 다음 정보를 클라이언트에게 제공(Server Hello)
  3. 클라이언트) 브라우저는 서버의 SSL 인증서가 믿을만한지 확인
  4. 클라이언트) 브라우저는 자신이 생성한 난수와 서버의 난수를 사용하여 premaster secret 생성(= 공개키로 암호화하여 서버로 전송)
  5. 서버) 서버는 사이트의 비밀키로 브라우저가 보낸 premaster secret 값을 복호화 함(= 브라우저와 서버 사이에 주고받는 데이터를 암호화하고 복호화함)
  6. 서버/클라이언트) SSL handshaking 종료, HTTPS 통신 시작
SSL 통신과정

SSL 통신과정

++SSL 인증서 기능

  1. 클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장
  2. SSL 통신에 사용할 공개키를 클라이언트에게 제공

6. http의 get,post 비교

  • 둘 다 브라우저가 서버에 요청하기 위해 사용되는 메소드
  1. GET 방식
    • 요청을 전송할 때 필요한 데이터를 쿼리스트링을 통해 전송함
    • 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있음(동일한 요청 발생 시)
    • GET 요청은 브라우저 히스토리에 남음
    • GET 요청은 길이 제한이 있음
    • GET 요청은 중요한 정보를 다루면 안됨(보안)
  2. POST 방식
    • 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송
    • 길이의 제한 없이 전송 가능
    • POST 요청은 캐시되지 않음
    • POST 요청은 브라우저 히스토리에 남지않음
    • 요청 헤더의 Content-Type에 요청 데이터 타입을 표시해야함

7. http의 status code

  • 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다.
    • 서버가 요청을 받았으며, 서버에 연결된 클라이언트는 작업을 계속 진행하라는 의미
  • 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다.
    • 200 OK : 요청이 성공적으로 되었습니다. 정보는 요청에 따른 응답으로 반환됩니다.
  • 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요합니다.
  • 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
    • 404 Not Found : 서버는 요청받은 리소스를 찾을 수 없습니다
  • 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다.






*230109 추가

  • http의 get,post 비교
  • http의 status code


출처

HTTP/1.1과 HTTP/2의 차이점
메세지
HTTP와 HTTPS의 차이점
대칭키 비대칭키
handshaking
SSL 통신 과정
http get, post
http status code

This post is licensed under CC BY 4.0 by the author.