본문 바로가기

학습 내용 정리/기본

HTTP와 HTTP 코드 별 의미

728x90

HTTP란?

데이터를 주고 받는 양식을 정의한  통신 규약

 

브라우저는 서버에게 자신이 원하는 페이지 (URL 등의 정보) 를 요구(Request)합니다. 

서버는 브라우저가 원하는 페이지가 있는지 확인하고 있다면 해당 페이지에 대한 데이터를 반환(Response)해줍니다.

없다면 없는 페이지에 대한 데이터를 반환합니다. 

 

개발자 도구의 Network 탭에서 HTTP status 및 기타 정보 확인 가능

 

Method

GET : 리소스를 얻을 때

POST : 웹 서버에 데이터를 게시할 때 

 

Header : 추가 데이터, 메타 데이터

브라우저가 어떤 페이지를 원하는지

요청 받은 페이지를 찾았는지

성공적으로 찾았는지

 

Payload : 실질적인 데이터

GET 메서드를 제외하고는 모두 Payload 보낼 있다

 

HTTP 특징

  • 단방향성
    • 서버가 먼저 응답을 보낼 수 없고 클라이언트가 요청을 보내야만 응답할 수 있다. (2버전 이전)
  • 비연결성(connectionless)
    • 클라이언트의 요청으로 서버와 연결된 후, 요청에 대한 응답의 데이터를 전송하면 연결을 종료한다.
  • 따라서, 실시간 통신을 할 수 없다. > 웹소켓 이용
  • 문제점
    • HTTP는 평문 통신이기 때문에 도청이 가능하다.
    • 통신 상대가 검증된 상대인지 확인하지 않기 때문에 위장이 가능하다.
    • 완전성을 증명할 수 없기 때문에 변조가 가능하다.
  • 이러한 문제점을 해결하기 위해 HTTPS가 등장한다.

 

HTTP 통신 흐름

📌 브라우저에 www.naver.com을 치면 어떤일이 일어나나요?

  1. 웹 브라우저에 www.naver.com 입력.
  2. 사용자가 입력한 URL 주소 중 도메인 네임 부분을 DNS 서버에 검색하고, DNS서버에서 해당 도메인 네임에 해당하는 IP주소를 찾아온다.
  3. HTTP 프로토콜을 사용하여 페이지 URL정보와 찾아온 IP주소를 포함하는 HTTP 요청 메세지를 생성하고, 생성된 HTTP 요청 메세지는 TCP/IP 프로토콜을 사용하여 인터넷 망을 통해 해당 IP주소의 컴퓨터로 전송된다.
  4. HTTP 요청 메세지를 받은 컴퓨터(서버)는 웹 페이지 URL 정보 중 PATH(경로) 와 HTTP Method(동작)에 맞는 액션을 취한다. (여기서는 naver 페이지를 띄우기 위해 필요한 html 등의 리소스를 찾을 것이다.)
  5. 생성된 응답 데이터는 또 다시 HTTP 프로토콜을 사용하여 HTTP 응답 메세지로 만들어지고 TCP/IP 프로토콜을 사용하여 인터넷 망을 통해 요청했던 컴퓨터(클라이언트)로 전송된다.
  6. 도착한 HTTP 응답 메세지는 웹 브라우저에 의해 브라우저 렌더링 과정을 거쳐 화면에 출력되어 사용자가 볼 수 있게 된다. 

 

 

HTTP CODE

 

100 - 199

정보 제공용 상태 코드

 

200 - 299

성공 코드

200 OK 

201 Created

202 승인됨

204 콘텐츠 없음 (삭제 완료) - 메시지를 포함하지 않는다! 빈 라인으로 반환

참고자료 : https://restfulapi.net/http-status-204-no-content/

 

400 - 499

클라이언트 오류 코드

404 Not Found 찾을 수 없음 : 클라이언트 URL이 잘못된 경우

500 - 599

서버 오류 코드

500 내부 서버 오류

 

참고 자료 : https://www.moesif.com/blog/technical/api-design/Which-HTTP-Status-Code-To-Use-For-Every-CRUD-App/#200---299

스파르타 코딩클럼 Computer Science 자료

'학습 내용 정리 > 기본' 카테고리의 다른 글

프론트 엔드 백엔드란?  (0) 2023.06.17
코딩 용어  (0) 2023.06.11
[중요!] 의사 전달 코드  (0) 2023.05.23
크롬의 개발자 도구, 디버깅  (1) 2023.05.16
REST API  (1) 2023.05.12