HTTP, DNS, RestAPI란?

ryusudol·2024년 1월 4일
post-thumbnail

What is HTTP ?

  • HTTP는 인터넷 상에서 정보를 송수신 할 때 바탕이 되는 통신 규약. 이 규약이 있음으로 인해 전세계 인터넷 이용자들은 일정한 형식에 따라 정보를 주고받을 수 있게 됨.
  • Network Layer 상에서 최상단에 위치한 Application Layer에서 작동.
  • Application Layer 보다 아래 layer인 Transport Layer에서 작동하는 TCP/UDP를 기반으로 작동.

The Structure of HTTP

Request

  1. Start Line
    • Method
    • Path
    • HTTP Version
  2. Headers
  3. Body

Response

  1. Status Line
    • HTTP Version
    • Status Code
    • Status Message
  2. Headers
  3. Body

HTTP Method

  • Client가 원하는 동작에 따라 GET, POST, PUT, DELETE 등의 작업 전달
    METHODUsage
    GET대개 데이터를 불러올 때 사용되나, 경우에 따라 데이터을 전송할 때도 사용
    POSTGET 보다 복잡한 데이터를 Request Body안에 안전하게 담아 전달할 때 사용
    PUT기존에 존재하는 데이터를 수정할 때 사용
    DELETE기존에 존재하는 데이터를 삭제할 때 사용
  • 경우에 따라 HEAD, OPTIONS, PATCH 등의 METHOD도 사용 가능
  • HTTP request methods - HTTP | MDN
  • 이는 이후 Rest API의 Method와 동일

HTTP Version

HTTP
HTTP/1.0
HTTP/2.0
HTTP/3.0

Status Code

200OK보통 GET 요청이 정상적으로 처리되었을 때
201CreatedPOST 요청이 성공적으로 작동했을 때
400Bad Request잘못된 요청일 때
401Unauthorized권한이 없는 페이지에 접근하려 할 때
404Not Found해당 페이지가 구현되어 있지 않을 때
409Conflict데이터나 server 상태에 충돌이 발생할 때
422Unprocessable EntityRequest 형식은 문제 없으나 semantic 문제가 있을 때
500Internal Server ErrorServer에 무언가 문제가 있을 때
503Service UnavailableServer가 일시적으로 요청을 처리하지 못할 때
505HTTP Version Not Supported해당 HTTP 버전이 지원되지 않을 때

HTTPS (HyperText Transfer Protocol Secure)

  • HTTP에서 보안적으로 더 강화된 버전
  • HTTP에서 TLS(Transport Layer Security)를 활용하여 통신 프로토콜을 암호화함으로써 보안적으로 더 강화됨

DNS (Domain Name System)

What is DNS?

  • 사람이 읽을 수 있는 도메인 네임(e.g. naver.com, google.com, skku.edu)을 IP 주소로 변환
  • 전달받은 IP 주소는 이후 Transport Layer와 Network Layer, Link Layer에서 필요
  • 동일한 DNS Server 범위에 있는 한 client가 서버에 요청을 보내면 DNS Server는 해당 웹페이지를 caching 하여, 같은 지역 내 다른 client가 같은 사이트에 대한 요청을 보낼 경우 데이터를 빠르게 전달
  • Domain Name에는 Hierarchy가 있음. 그 안에는 Root와 Top-level, Second-level, Lower-level Domain으로 나뉨.

How DNS Works?

  1. Client 측에서 해당 지역에 설치된 DNS Resolver로 IP 주소 요청
  2. Root Server로 요청 → 해당 root domain에 속한 Router IP 주소 전달
  3. 전달받은 Router IP 주소를 통해 TLD Server로 IP 주소 요청 → 해당 TLD에 속한 Router IP 주소 전달
  4. 전달받은 Router IP 주소를 통해 최종 요청 → 요청한 Demain Name에 맞는 IP 주소를 Resolver로 전달
  5. Resolver는 같은 지역 Client로부터 동일한 요청에 빠르게 대응하기 위해 데이터 caching 및 Client로 전달
  6. Client는 해당 Demain Name의 IP 주소를 통해 해당 페이지 서버로 요청 송신 및 데이터 수신

What is Web Hosting?

  • 웹 사이트를 저장하고 인터넷 사용자들이 쉽게 접근할 수 있도록 하는 서비스 → Client와 Server가 데이터를 송수신 할 때, Server에 Client의 요청에 맞는 데이터가 있다는 전제 필요

  • 어떤 웹 페이지에 접근하기 위해선 먼저 해당 페이지 소스가 모든 인터넷 사용자가 접근할 수 있는 어떤 곳에 저장이 되어서 그곳으로 페이지에 대한 요청이 들어오면 요청에 맞는 데이터를 전송해줘야 하는데, 이 일련의 과정이 Web Hosting.

Web Hosting & DNS

  • Web Hosting은 Client의 요청에 대한 답을 주기 위해 Server에 데이터를 저장하고 사람들이 이에 접근할 수 있도록 하는 서비스
  • DNS는 Client가 Domain Name을 사용해서 Web Hosting을 하고 있는 서버에 정확하게 요청을 보내기 위해 필요한 IP 주소를 제공하는 서비스

Rest API

What is API?

  • Application Programming Interface
  • 소프트웨어 간 통신을 위해 따라야 하는 통신 규칙

What is REST API?

  • API를 일정한 규칙에 따라 체계적으로 관리하기 위해 사용
  • REST: Representational State Transfer - Roy Fielding (2000)
  • 구성
    1. Verb → HTTP Method(GET, POST, PUT, DELETE)로 표현

    2. Resource → URI에는 동사보다 명사 사용

    3. Representations

      GET /this/is/resource
  • URI 설계 시 주의할 점
    1. Slash(/)는 계층 관계를 나타낼 때 사용하며, URI 마지막에는 Slash 포함하지 X
      GET /members/1  (o)
      GET /members/1/ (x)
    2. 하이픈(-)은 URI 가독성을 향상시키는 데 사용할 수 있으나, 언더바(_)는 사용 X
      GET /city/my-favorite-city/1 (o)
      GET /city/my_favorite_city/1 (x)
    3. URI에는 소문자가 적합
      POST /members/list (o)
      POST /members/List (x)
    4. .png파, .jpeg와 같은 파일 확장자는 URI에 포함 X
      GET /dogs/my-dog     (o)
      GET /dogs/my-dog.png (x)
profile
📜 코딩 공부 기록

0개의 댓글