Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

프로그래밍 끄적끄적

[HTTP] HTTP 기본 본문

HTTP

[HTTP] HTTP 기본

soeunkk 2021. 11. 3. 16:46

🌳 HTTP

HTML, TXT, IMAGE, 음성, 영상, 파일 JSON, 티 등 거의 모든 것을 HTTP로 전송할 수 있다.

🍃 HTTP의 특징

1. 클라이언트 서버 구조

    ▪ Request Response 구조

    클라이언트: 서버에 요청을 보내고 응답을 대기, 서버: 요청에 대한 결과를 만들어서 응답

    ▪ 클라이언트와 서버를 개념적으로 분리했다는 것에서 이점이 존재한다.

    ▪ 서버는 데이터 로직에 집중하고 클라이언트는 UI를 나타내는 것이 집중할 수 있기 때문에 각자 독립적으로 진화를 할 수 있다.

 

2. 무상태 프로토콜(stateless)

stateless는 서버가 클라이언트의 이전 상태를 보존하지 않는다. 그 반대로 stateful이 있는데 비유를 해보자. 매장에 가서 하나의 물건을 살 때, stateful은 한 명의 점원에게 요구사항들을 얘기하는 상황이고 stateless는 여러 명의 점원에게 얘기하는 상황과 같다. 즉, stateful은 문맥의 상태를 유지하지만, stateless에서는 대화가 오고갈 때마다 상대가 그 문맥의 상태를 모르기 때문에 모든 정보를 한꺼번에 요청해야 한다. 이로 인한 장점으로, stateless에서는 클라이언트의 요청에 어느 서버가 응답해도 상관이 없다. 즉, 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수가 있으며 응답 서버를 쉽게 바꿀 수 있기 때문에 무한한 서버 증설이 가능하다.

그러나, 모든 것을 무상태로 설계 할 수는 없다. 예를 들어 로그인의 경우, 한번 로그인 하면 로그인 했다는 상태를 서버에 유지해야 한다. 이런 경우에는 일반적으로 브라우저 쿠키와 서버 세션을 사용해서 상태를 유지한다. 상태유지는 어쩔 수 없는 상황에서만 최소한으로 사용해야 한다.

 

3. 비연결성

서버는 클라이언트에게 응답을 보낸 후 클라이언트가 응답을 받으면 그 즉시 TCP/IP 연결을 끊어버린다. 이를 통해 서버의 자원을 효율적으로 관리하고, 많은 클라이언트 요청에도 대응할 수 있다. HTTP는 기본적으로 연결을 유지하지 않는 모델로, 일반적으로 초 단위의 이하의 빠른 속도로 응답할 수 있다. 

그러나, 같은 클라이언트가 반복해서 요청할 때마다 3 way handshake로 연결을 새로 해야 한다. 또한 HTML 뿐만 아니라 js, CSS, 이미지 등 수 많은 자원이 함께 다운로드 된다는 한계점이 있다.

이를 보완하기 위해 HTTP 지속 연결(Persisten Connetcions)를 지원한다. HTTP 지속 연결은 요청에 따라 연결된 이후 일정 시간 연결을 유지하거나 여러 개의 요청(HTML, js, 이미지 등)에 대한 응답이 다 올 때까지 기다린 후 연결을 종료하는 것이다. 

 

4. 단순함, 확장 가능

 

🍃 HTTP 메시지

전반적인 HTTP 메시지 구조는 아래와 같다. 

 

1. 시작 라인 (start-line)

1) 요청 메시지

GET /search?q=hello&hl=ko HTTP/1.1

(1) HTTP 메서드: 서버가 수행해야 할 동작을 지정함

    ▪ GET: 리소스 조회

    ▪ POST: 요청 내역 처리

    ▪ PUT: 리소스 등록

    ▪ DELETE: 리소스 삭제

(2) 요청 대상

    절대경로[?쿼리]

    ▪ '/'로 시작하는 절대경로로 작성함 

(3) HTTP 버전

 

2) 응답 메시지

HTTP/1.1 200 OK

(1) HTTP 버전

(2) HTTP 상태 코드

    ▪ 200: 성공

    ▪ 300: 리다이렉션

    ▪ 400: 클라이언트 요청 오류

    ▪ 500: 서버 내부 오류

(3) 이유 문구: 사람이 이해할 수 있는 짧은 상태 코드 설명 글

 

2. HTTP 헤더

헤더의 용도

     HTTP 전송에 필요한 모든 부가정보

     메시지 바디 내용, 크기, 압축, 인증, 요청 클라이언트 정보, 서버 애플리케이션 정보, 캐시 관리 정보 등

헤더 양식

     field-name: field-calue (field-name은 대소문자 구분 X)

 

1) 요청 메시지

Host: www.google.com

2) 응답 메시지

Content-Type: text/html;charset=UTF-8
Content-Length: 3423

 

3. HTTP 메시지 바디

실제 전송할 데이터로, HTML, 이미지, 영상, JSON 등 byte로 표현할 수 있는 모든 데이터를 전송할 수 있다.

 

 


참고자료

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다. 📣 확인해주세요!본 강의는 자바 스

www.inflearn.com

 

'HTTP' 카테고리의 다른 글

[HTTP] HTTP 메서드 활용(2)  (0) 2021.11.09
[HTTP] HTTP 메서드 활용(1)  (0) 2021.11.09
[HTTP] HTTP 메서드  (0) 2021.11.09
[HTTP] URI와 웹 브라우저 요청 흐름  (0) 2021.11.03
[HTTP] 인터넷 네트워크 (IP, TCP, UDP, POPT, DNS)  (0) 2021.11.03
Comments