HTTP 정리

김현조·2023년 3월 12일
4

Computer Science

목록 보기
3/6

HTTP

브라우저와 서버가 통신하는 약속

  • HTTP/0.9 - 90년
    • 단순한 문서 요청, 응답
    • 콘텐츠 형식은 HTML문서 뿐
    • 응답코드도 없다
  • HTTP/1.0 - 96년
    • 현대의 HTTP 기본 기능 포함
    • 메서드 추가
    • 헤더 추가
  • HTTP/1.1 - 97년
    • TLS 암호화 통신(HTTPS)
    • Keep-alive 기본(접속 재사용)
    • PUT, DELETE 메서드 추가 - REST API
    • XMLHttpRequest
  • HTTP/2.0 - 05년
    • 단일 연결에서 여러 요청/응답을 병렬로 전달
    • 요청에 우선순위를 지정
    • header 필드 압축
    • server push

HTTP Method

  • GET, POST, PUT, PATCH, DELETE, OPTIONS

Status code

  • 200: ok
  • 302: 리다이렉트: response header에 location이라는 필드에 이동할 url 포함됨
  • 304: not modified: 수정되지 않았으니 캐시써라
  • 403: forbidden 권한없음
  • 404: not found: 리소스가 없다

Headers

  • cookie, set-cookie: 쿠키
  • Access-Control-Allow-Origin: CORS 설정
  • Content-Type, Content-Length: 리소스 타입과 크기
  • Cache-control: 캐시 메커니즘을 위한 설정(max-age(이 시간동안은 서버에 안가도됨)
  • Expires: 캐시 만료시간
  • last-modified, If-Modified-Since: 마지막 갱신 시간

Http vs Https

하이퍼텍스트 전송 프로토콜 보안(HTTPS, Hypertext Transfer Protocol Secure)은 HTTP 클라이언트와 서버 간에 안전한 통신을 제공하는 통신 프로토콜이다. HTTPS는 보안 기능을 확보하기 위해 전송층 보안/보안 소켓층(TLS/SSL, Transport Layer Security/Secure Sockets Layer) 프로토콜 위에 HTTP를 구현한 것이다.

HTTPS는 두 가지 방식으로 보안 기능을 제공한다. 첫번째로 단기간에 사용되는 세션 키 교환을 위해 장기간 사용되는 공개 키와 비밀 키를 사용해 클라이언트와 서버간 데이터 암호화를 진행한다. 또한 인증 기능을 통해 접속하려는 웹 서버가 의도한 서버가 맞는지 확인해 중간자 공격을 방지할 수 있다.

HTTP 요청을 보내서 페이지 하나를 로딩할 때까지...

  • 마크업 문서를 DOM 트리로 만든다. 이때 CSS가 있음을 알게되면 스타일 시트를 로드하여 CSSOM 트리를 만든다. 위의 두 트리를 합쳐서 렌더링 트리를 만들고, 각각의 요소를 배치한다.
  • 자바스크립트는 렌더링 엔진이 아닌 자바스크립트 엔진이 처리한다. HTML 파서는 script 태그를 만나면 자바스크립트 코드를 실행하기 위해 DOM 생성 프로세스를 중지하고 자바스크립트 엔진으로 제어 권한을 넘긴다. 제어 권한을 넘겨 받은 자바스크립트 엔진은 script 태그 내의 자바스크립트 코드 또는 script 태그의 src 어트리뷰트에 정의된 자바스크립트 파일을 로드하고 파싱하여 실행한다. 자바스크립트의 실행이 완료되면 다시 HTML 파서로 제어 권한을 넘겨서 브라우저가 중지했던 시점부터 DOM 생성을 재개한다.
  • 이처럼 브라우저는 동기(Synchronous)적으로 HTML, CSS, Javascript을 처리한다. 이것은 script 태그의 위치에 따라 블로킹이 발생하여 DOM의 생성이 지연될 수 있다는 것을 의미한다. 따라서 script 태그의 위치는 중요한 의미를 갖는다.
  • body 요소의 가장 아래에 자바스크립트를 위치시키는 것은 좋은 아이디어이다. 그 이유는 아래와 같다.
    • HTML 요소들이 스크립트 로딩 지연으로 인해 렌더링에 지장 받는 일이 발생하지 않아 페이지 로딩 시간이 단축된다.
    • DOM이 완성되지 않은 상태에서 자바스크립트가 DOM을 조작한다면 에러가 발생한다.

페이지 로딩 속도 올리기

  • 커넥션 재활용
  • 리다이렉트 줄이기
  • 압축하기
  • 캐시 사용하기
  • 필터링하기
  • 단일 프레임워크 사용하기
  • 중복 코드 최소화하기

퀴즈

HTTP 관련 응용 퀴즈를 CS Broker 에서 풀어보세요~!

출처

1개의 댓글

comment-user-thumbnail
2023년 3월 17일

HTTP (HyperText Transfer Protocol)는 인터넷에서 데이터를 주고 받는 데 사용되는 통신 규약 중 하나입니다. 다음은 HTTP에 대한 간단한 요약입니다.
Next Employee Portal Login
HTTP는 클라이언트와 서버 간의 통신을 위한 텍스트 기반 프로토콜입니다.
HTTP는 웹 브라우저를 통해 요청(request)을 보내고, 서버가 그에 대한 응답(response)을 보내줍니다.
HTTP 요청은 메서드(method), URI(Uniform Resource Identifier), 버전 정보, 헤더(header) 등으로 구성됩니다.
HTTP 응답은 상태 코드(status code), 헤더, 본문(body) 등으로 구성됩니다.
HTTP는 상태를 유지하지 않는(stateless) 프로토콜이기 때문에, 이전 요청과 현재 요청이 독립적으로 처리됩니다.

답글 달기