동석쿠
프로그래밍 공부
동석쿠
전체 방문자
오늘
어제
  • 공부 (80)
    • 공부기록 (64)
      • 웹개발 (6)
      • Java (7)
      • cs 공부 (3)
      • http 웹 기본 지식 (8)
      • 자바 스프링 (20)
      • 개인 미니프로젝트 (3)
      • 알고리즘 공부 (6)
      • 면접준비 (2)
      • 프론트공부 (8)
      • 파이썬 플라스크 (1)
    • 항해99 기록 (14)
      • 회고록 (10)
      • 팀프로젝트 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 리프레쉬토큰
  • 스프링부트
  • lombok
  • 자바스크립트
  • 자바
  • 리스트
  • 항해99
  • Post
  • 알고리즘
  • 리액트
  • Get
  • JPA
  • 상속
  • API
  • 리프레시토큰
  • 스프링
  • 파이썬
  • 문법
  • Java
  • 프로그래머스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
동석쿠
공부기록/http 웹 기본 지식

3. HTTP 기본

3. HTTP 기본
공부기록/http 웹 기본 지식

3. HTTP 기본

2022. 3. 18. 18:06

1. HTTP에 대해

HTTP란 Hyper Text Transfer Protocol : HTML을 전송하는 프로토콜. 지금은 모든 것을 HTTP로 전송을 한다

(HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML, API 등)

 

  • HTTP 특징 
  • 클라이언트 서버 구조
  • 무상태 프로토콜(스테이스리스), 비연결성
  • HTTP 메시지
  • 단순함, 확장 가능

2. 클라이언트 서버 구조

  • 클라이언트와 서버는 Request Response 구조
  • 클라이언트는 서버에 요청을 보내고 응답을 대기
  • 서버가 요청에 대한 결과를 만들어서 응답함
  • 클라이언트는 서버에대한 응답을 받아 사용자의 요청을 실행함

3. Stateful, Stateless

무상태 프로토콜 스테이스리스

  • 서버가 클라이언트의 상태를 보존하지 않음
  • 장점 : 서버 확장성 높음 (스케일 아웃)
  • 단점 : 클라이언트 추가 데이터를 전송함

Stateful 은 상태를 유지하는 것, Stateless는 상태를 유지하지 않는 것

상태유지 : 클라이언트 요청이 많아지거나 서버가 바뀌는 것에 대해 취약

            : 항상 같은 서버가 유지되어야 한다. (서버가 고장나면 바꾸기 쉽지 않음)

무상태 : 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다

          : 무상대는 응답 서버를 쉽게 바꿀 수 있다. -> 서버 증설 가능

 

무상태의 한계

  • 무상태 : 로그인이 필요 없는 단순한 서비스 소개 화면
  • 상태 유지 : 로그인
  • 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지
  • 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지
  • 상태 유지는 최소한만 사용

4. 비 연결성(connectionless)

연결을 유지하는 모델의 경우 서버와 클라이언트가 한번 연결을 하게되면 따로 통신이 없더라도 계속 연결을 유지하게 된다.

반면 연결을 유지하지 않는 모델의 경우 클라이언트의 요청에 대해 서버의 응답을 받으면 연결이 끊긴다.

연결을 유지하지 않게되면 서버입장에서 자신의 자원을 클라이언트와 요청에대한 응답만 주고 서버를 끊기 때문에

최소한의 자원만을 쓸 수 있게된다. 

  • HTTP는 기본이 연결을 유지하지 않는 모델
  • 일반적으로 초 단위 이하의 빠른 속도로 응답
  • 일정 시간동안 많은 사람이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 적어진다.
  • 서버 자원을 매우 효율적으로 사용할 수 있음

비연결성의 한계(단점)

  • TCP/IP 연결을 새로 맺어야 함 - 3 way handshake 시간 추가
  • 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css 등 수많은 자원이 함께 다운로드 됨
  • 지금은 HTTP 지속 연결(Persistent Connections)로 문제 해결

구글에 검색만 했을 뿐인데 매우 많은 자원이 다운로드 된다.

스테이스리스로 잘 설계하면 같은 시간에 딱 맞추어 발생하는 대용량 트래픽이 발생해도 어느정도 대처할 수 있다.

(하지만 이게 매우 어렵다)

5. HTTP메시지

HTTP메시지는 아래 표처럼 이루어져 있다

start-line 시작라인
header 헤더
empty line 공백라인 (CRLF)
message body 

아래 표는 HTTP응답 메시지의 예다

HTTP/1.1 200 OK
Content-Type:text/html;charset=UTF-8
Content-Length:3423
 
<html>
  <body> ..... </body>
</html>

HTTP 상태 코드 : 요청 성공 혹은 실패를 나타냄

  • 200 : 성공
  • 400 : 클라이언트 요청 오류
  • 500 : 서버 내부 오류
  • 이유 문구 : 사람이 이해할 수 있는 짧은 상태 코드 설명 글

HTTP 헤더의 용도

  • HTTP전송에 필요한 모든 부가정보
  • 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트 정보, 서버 애플리케이션 정보...등등

HTTP메시지 바디의 용도

  • 실제 전송할 데이터
  • HTML 문서, 이미지, 영상, JSON 등 byte로 표현할 수 있는 모든 데이터 전송 가능

 

'공부기록 > http 웹 기본 지식' 카테고리의 다른 글

6. HTTP 일반 헤더  (0) 2022.03.22
5. HTTP 상태 코드  (0) 2022.03.21
4. HTTP 메서드  (0) 2022.03.19
2. URI와 웹 브라우저 요청 흐름  (0) 2022.03.17
1. 인터넷 네트워크  (0) 2022.03.16
  • 1. HTTP에 대해
  • 2. 클라이언트 서버 구조
  • 3. Stateful, Stateless
  • 4. 비 연결성(connectionless)
  • 5. HTTP메시지
'공부기록/http 웹 기본 지식' 카테고리의 다른 글
  • 5. HTTP 상태 코드
  • 4. HTTP 메서드
  • 2. URI와 웹 브라우저 요청 흐름
  • 1. 인터넷 네트워크
동석쿠
동석쿠

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.