HTTP

김아무개·2023년 5월 5일
0

Web

목록 보기
3/13

Hyper Text Transfer Protocol

하이퍼 텍스트 전송 규약

Hyper : 건너편의, 초월, 과도한

Hyper Text : 파생 텍스트

링크에 따라 차례가 바뀌는 임의적이면서 나열형인 구조를 갖춘 텍스트
참고 : ko.wikipedia.org


- HTTP

3가지 특징

1. 단순하고 읽기 쉽다.

텍스트 기반의 프로토콜을 사용하기 때문이다.

HTTTP 메세지를 보면 사람이 알아보기 쉬운 텍스트로 작성되어있는데
하이퍼텍스트 프로토콜 규칙을 지켜야 하기 때문이다.

2. Stateless

상태를 유지하지 않는다.
클라이언트의 정보를 저장하지 않음

같은 클라이언트에서 요청을 여러번 보내도 서버는 매번 다른 클라이언트의 요청으로 받아들인다.
이를 보안하기 위해 나온것이 쿠키세션이다.
쿠키와 세션을 이용하면 일정 시간동안 클라이언트의 정보를 기억할 수 있다.

3. 확장 가능하다

커스텀 Header 추가 가능

기본 Header 정보에
서버와 클라이언트가 약속한 서비스에서 사용 될 추가적인 정보를
간단하게 Header에 추가할 수 있다.


- HTTP 메세지

1. Header 헤더

응답 서버에 대한 설명 or 바디에 대한 설명

서버에 요청하는 HTTP 메서드 정보와 요청 경로
HTTP 버전 정보
서버 호스트 정보

Date 보낸 날짜, 보낸 시간
Content-type 바디에 작성된 내용의 유형
Content-Length 바디에 작성된 내용의 길이

등등


2. Body 바디

응답 본문
응답에 대한 내용


3. 응답 메세지 정보

1 HTTP/1.1 200 OK
2 Content-Length: 649
3 Content-Type: application/x-www-form-urlencoded
4 Date: Fri, 05 May 2023 07:07:25 GMT
5 
6 {"event":{"userId":"132132132132","id":"456465456654","channelId":"46546789","name":"PageView","property":{"country":"KR","os":"Windows NT ??","city":"서울시 강남구","session":23424234,"ip":"123.123.321.321","title":"제로베이스 - 누구나 취업하는 가장 합리적인 취업 스쿨","url":"https://zero-base.co.kr/me/courses/215195/notice","browser":"Chrome 112","page":"https://zero-base.co.kr/me/courses/215195/notice","device":"Desktop"},"createdAt":1683270445882,"expireAt":1691046445882,"version":1}}

Line 1 : 상태 라인

HTTP/1.1 : HTTP 버전 정보
200 : 상태 코드
OK : 상태 코드에 대한 설명. 이부분은 작성하기 나름!

상태코드 정보

상태코드의미
1xx정보
2xx요청/응답 성공
3xxRedirect. 다른 URL로 요청하라는 응답
4xxClient 에러. Client에서 요청을 잘못해서 나타나는 에러
5xxServer 에러. Server에서 요청을 처리하는 도중 에러가 나면 나타남

Line 2 ~ 4 : 헤더

Line 5 : 헤더 정보의 끝을 알리는 빈 줄

Line 6 : 바디. 실제 응답 내용


4. 요청 Method

자세한 정보 : w3

Method설명
PostC: Create, Write, 바디에 메세지를 담아서 서버에 메세지의 처리를 요청.
GetR: Read, 리소스를 가져오기 위한 요청. 바디 메세지가 없다.
PutU: Update, 전체 리소스의 변경을 서버에 요청
PetchU: Update, 특정 리소스의 일부분에 대한 변경을 서버에 요청
DeleteD: Delete, 특정 리소스의 삭제를 요청. 서버는 이때 권한/인증 등등을 확인 후 처리

GET

서버의 리소스를 가져오기 위한 설계
QueryParameter를 통해 데이터 전달 (소용량)
URL에 데이터를 넣어서 서버로 전달하기 때문에 보안에는 취약하다.
대신 데이터 공유에 유리함

사용되는 예: 게시판에서 페이징 이용시, 검색엔진에서 갬색 단어 전송시

POST

서버에 데이터를 저장하기 위해 설계됨
전송 데이터의 크기에 제한이 없다 (대용량)
데이터를 요청 메세지의 Body에 담아서 전송한다.
HTTPS 프로토콜을 사용할 경우에 한하여 보안에 안전하다.
데이터 공유에는 불리하다.

사용되는 예: 로그인, 회원가입, 게시글 업로드


- 텍스트 파일 , 바이너리 파일

텍스트 파일 : 문자만 저장되어 있는 파일

숫자를 문자로 변환(encoding) 후 쓴다.

바이너리 파일 : 문자와 숫자가 저장되어 있는 파일

0과 1의 이진 형식으로 인코딩된 파일. 참고
데이터를 있는 그대로 읽고 쓴다.


- MIME

Multipurpose Internet Mail Extensions

전자우편은 7비트 ASCII 문자를 이용하여 전송되는데,
MIME은 초창기에 전자 우편에 사용하기 위한 인터넷 표준 포맷을 위해 만들어 졌다.
전자우편에 8비트 이상을 사용하는 문자나, 이미지와 같은 바이너리 데이터를 전송하기 위해 고안되었다.
↑ 출처: wikipedia

웹이 발전하면서 웹 페이지로 다양한 문자, 이미지 등등 멀티미디어 콘텐츠를 공유하기 위해
다양한 장점(확장성, 호환성, 표준화 등)을 가지고 있는 MIME 타입이 웹에 적용되었다.

HTTP의 Content-Type 헤더에 사용된다.

데이터의 타입 예시

타입설명대표 예시 [ 타입/서브타입 ]
text텍스트 파일text/plain, text/html, text/css, text/javascript
image이미지 파일image/jpeg, image/gif, image/png, image/bmp , image/webp
audio오디오 파일audio/mpeg, audio/wav, audio/midi,
video비디오 파일video/webm, video/ogg
application이진 데이터application/json . application/xml , application/pdf

- base64

64진법 문자 체계.
바이너리 데이터(이미지 파일 등)을 텍스트 데이터로 변환할 때 사용한다.
알파벳 소문자, 알파벳 대문자, 숫자 0~9 , +, / 로 총 64개의 문자로 구성됨.

이미지파일을 base64로 인코딩 또는 역으로 디코딩 해주는 사이트 : base64encode.org

profile
Hello velog! 

0개의 댓글