땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • ㅗ
  • D
  • E
  • I
  • 이것이 리눅스다 with Rocky Linux9

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

HTTP(HyperText Transfer Protocol)
CS

HTTP(HyperText Transfer Protocol)

2022. 9. 6. 13:16

HTTP(HyperText Transfer Protocol)

텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜

 

클라이언트가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)를 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(reponse)하는 형태로 동작

  • 요청 : client => server
  • 응답 : server -> client

<특징>

- HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석된다.

- TCP/IP를 이용하는 응용 프로토콜

- HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜(이런 단점을 해결하기 위해 cookie, session 등장)

- HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작

 

Request(요청)

클라이언트가 서버에게 연락하는 것

GET : 자료를 요청할 때 사용

- URL에 변수(데이터)를 포함시켜 요청

- 데이터를 Header(헤더)에 포함하여 전송한다

- URL에 데이터가 노출되어 보안에 취약하다

- 전송하는 길이에 제한이 있다

- 캐싱 할 수 있다

** 캐싱 : 한번 접근 후, 또 요청할 시 빠르게 접근하기 위해 레지스터에 데이터를 저장시켜 놓는 것

 

POST : 자료의 생성을 요청할 때 사용

- URL에 변수(데이터)를 노출하지 않고 요청한다

- 데이터를 Body(바디)에 포함시킨다

- URL에 데이터가 노출되지 않아서 기본 보안은 되어있다

- 전송하는 길이에 제한이 없다

- 캐싱 할 수 없다

 

PUT : 자료의 수정을 요청할 때 사용

DELETE : 자료의 삭제를 요청할 때 사용

GET https://ddangjiwon.tistory.com/ HTTP/1.1		                // 시작줄
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...	        // 헤더
Upgrade-Insecure-Requests: 1

시작줄

  • GET : HTTP Method
  • https://ddangjiwon.tistory.com/ : 사이트 주소
  • HTTP/1.1 : HTTP 버전

헤더(두 번째 줄부터)

두번째 줄부터는 헤더이며 요청에 대한 정보를 담고있다. 

본문(헤더에서 한 줄 띄고)

본문은 요청을 할 때 함께 보낼 데이터를 담는 부분이다.

 

 

 

Response(응답)

서버가 요청에 대한 답변을 클라이언트에게 보내는 것

Status Code (상태 코드)

상태 코드에는 굉장히 많은 종류가 있다. 모두 숫자 세 자리로 이루어져 있으며,

아래와 같이 크게 다섯 부류로 나눌 수 있다.

 

1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.

2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.

3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.

4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.

5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

 

HTTP/1.1 200 OK							// 시작줄
Connection: keep-alive					         // 헤더
Content-Encoding: gzip												 
Content-Length: 35653
Content-Type: text/html;

<!DOCTYPE html><html lang="ko" data-reactroot=""><head><title...

시작줄 (첫 줄)

첫 줄은 버전 상태코드 상태메시지로 구성되어 있다. 200은 성공적인 요청이었다는 뜻이다.

헤더 (두 번째 줄부터)

두 번째 줄부터는 헤더로 응답에 대한 정보를 담고 있다.

본문 (헤더 뒤부터)

응답에는 대부분의 경우 본문이 있다. 보통 데이터를 요청하고 응답 메시지에는 요청한 데이터를 담아서 보내주기 때문이다. 응답 메시지에 HTML이 담겨 있는데 이 HTML을 받아 브라우저가 화면에 렌더링한다.

 

 

 

참고 : https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C

 

'CS' 카테고리의 다른 글

[JavaScript] AJAX에 대해  (0) 2022.09.06
JSP와 Servlet에 대해  (0) 2022.09.06
JavaScript 기본 지식  (0) 2022.09.02
CSS 기본 지식  (0) 2022.07.05
REST와 JSON에 대해  (0) 2022.05.13
    'CS' 카테고리의 다른 글
    • [JavaScript] AJAX에 대해
    • JSP와 Servlet에 대해
    • JavaScript 기본 지식
    • CSS 기본 지식
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바