Today
-
Yesterday
-
Total
-
  • HTTP
    Web 2023. 11. 29. 06:22

    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. 응답 메세지 정보

    HTTP/1.1 200 OK 
    Content-Length: 649 
    Content-Type: application/x-www-form-urlencoded 
    Date: Fri, 05 May 2023 07:07:25 GMT 
     
    {"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 요청/응답 성공
    3xx Redirect. 다른 URL로 요청하라는 응답
    4xx Client 에러. Client에서 요청을 잘못해서 나타나는 에러
    5xx Server 에러. Server에서 요청을 처리하는 도중 에러가 나면 나타남

     

    Line 2 ~ 4 : 헤더

     

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

     

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

     

    4. 요청 Method

    자세한 정보 : w3

    Method 설명
    Post C: Create, Write, 바디에 메세지를 담아서 서버에 메세지의 처리를 요청.
    Get R: Read, 리소스를 가져오기 위한 요청. 바디 메세지가 없다.
    Put U: Update, 전체 리소스의 변경을 서버에 요청
    Petch U: Update, 특정 리소스의 일부분에 대한 변경을 서버에 요청
    Delete D: 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

    'Web' 카테고리의 다른 글

    링크-다음-주소-검색-API  (0) 2023.12.06
    펌-별점-찍기  (0) 2023.12.06
    wifi로 연결된 windows 노트북에서 실행중인 웹서비스에 핸드폰으로 접속하는 방법  (0) 2023.12.03
    URI  (0) 2023.11.29
    REST API  (0) 2023.11.29

Designed by Tistory / Custom by 얼거스