Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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 31
Tags more
Archives
Today
Total
관리 메뉴

Front-end Developer

HTTP 프로토콜 본문

카테고리 없음

HTTP 프로토콜

Brad Daeho Lee 2021. 6. 21. 16:05

 

HTTP 프로토콜이란?

먼저 프로토콜은 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계입니다.

HTTP(Hypertext Transfer Protocol)는 웹 통신 프로토콜로써 웹 브라우저와 서버 간에 데이터를 주고받게 해줍니다.

 

HTTP 특징 (Connectless & Stateless)

HTTP에 두 가지 특징이 있는데, Connectless와 Stateless가 있습니다. 그리고 이 두 특징은 연관이 있습니다.

 

HTTP는 웹 브라우저가 서버에 연결을하고 데이터를 요청해서 서버에서 응답을 받으면 바로 서버와의 연결을 끊어버립니다. 이러한 특징을 Connectless라고 합니다. 데이터 요청이 독립적으로 되기때문에 다수의 요청을 처리할 수 있고 서버의 부하를 줄일 수 있습니다.

 

하지만, 이전 데이터 요청과 이후 데이터 요청이 관계가 없기 때문에 그 전 클라이언트의 상태를 알 수가 없습니다. 이러한 특징을 Stateless라고 합니다. 예를들어 로그인을 성공했을 때 로그 정보를 유지할 수가 없습니다. 이러한 문제를 보완하기 위해서 상태 정보를 cookie에 저장합니다.

 

HTTP 동작 방식

클라이언트에서 서버에 데이터를 요청할 때 HTTP Request를 사용하고, 서버에서 클라이언트의 요청을 응답할 때 HTTP Response를 사용합니다. 

 

 

1. connect : 클라이언트가 원하는 서버에 접속

2. request : 헤더와 바디에 요청에 대한 정보를 담아서 서버로 보낸다.

3. response : 클라이언트로부터 받은 요청을 헤더와 바디에 응답 결과를 담아서 보낸다.

4. close :  응답이 끝나면 연결을 끊는다.

 

요청 데이터 포맷

요청은 헤더 바디로 나뉘게됩니다. 

요청 헤더

헤더 첫 번째 줄부터 보겠습니다. 첫번 째 줄은 요청메소드, 요청URL, HTTP프로토콜 버젼으로 나뉩니다.

 

1. 요청메소드 (Request Method) :  - 요청 메소드는 서버에게 요청의 종류를 알려주기 위해서 사용됩니다. 메소드에는 GET, POST, PUT, DELETE가 있습니다. 

GET : 정보를 요청하기 위해서 사용합니다.
POST : 정보를 DB에 추가하기 위해서 사용합니다.
PUT : 기존 정보를 업데이트하기 위해서 사용합니다.
DELETE : 기존 정보를 삭제하기 위해서 사용합니다.

 

2. 요청URL : 

 - 요청하는 자원의 위치를 알려줍니다.

 

3. HTTP 프로토콜 버전 : 

- 웹 브라우저가 사용하는 HTTP 프로토콜의 버전을 알려줍니다.

 

요청 바디

서버에 요청을 보낼 때 데이터를 보낼경우 바디에 담아서 보냅니다.

요청 메소드가 POST나 PUT을 사용했을 때 요청 바디에 데이터를 담아서 보냅니다.

 

응답 데이터 포맷

응답 헤더

첫번 째 줄에는 HTTP 버전/응답코드/응답메세지를 나타냅니다.

나머지 헤더 부분에는 날짜, 웹서버 이름과 버전, 콘텐츠 타입, 캐시 제어 방식, 콘텐츠 길이 등의 값이 나옵니다.

 

HTTP 상태코드

1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

 

응답 바디

응답 바디에서는 클라이언트 요청에대한 응답 리소스 데이터가 담겨져서 클라이언트로 보내집니다. 예를 들어서 응답 바디에 HTML을 담아서 클라이언트로 보내주면 브라우저가 화면에 렌더링을합니다.

 

URL

URL(Uniform Resource Locators)은 서버 자원을 요청하기 위해 입력하는 영문 주소입니다. URL의 구조는 아래와 같습니다.

 

 

 

참고자료
https://velog.io/@sujeong/2-%EC%9B%B9%EC%9D%98-%EB%8F%99%EC%9E%91-HTTP-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EC%9D%B4%ED%95%B4
https://www.joinc.co.kr/w/Site/Network_Programing/AdvancedComm/HTTP   
https://joshua1988.github.io/web-development/http-part1/

 

Comments