[HTTP] HTTP 웹 기본지식

IP 인터넷 프로토콜 역할

  • 지정한 IP 주소로 데이터를 전달
  • 패킷이라는 통신단위로 데이터 전달

IP 프로토콜 한계

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성
    • 중간에 패킷이 사라지거나, 패킷이 순서대로 오지 않는 경우에도 패킷 전송
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 하나 이상일 수 있음

인터넷 프로토콜 스택 4가지 계층

  • 어플리케이션 계층 (HTTP, FTP)
  • 전송 계층 (TCP, UDP)
  • 인터넷 계층 (IP)
  • 네트워크 인터페이스 계층

프로토콜 계층

TCP/IP 패킷 정보

TCP 특징

  • 전송 제어 프로토콜(Transmission Control Protocol)
  • 연결지향 - TCP 3 way handshake (가상연결)
  • 데이터 전달보증
  • 순서보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

UDP 특징

  • 사용자 데이터그램 프로토콜(User Datagram Protocol)
  • 연결지향 (3 wayhandshake X)
  • 데이터 전달 보증 X
  • 순서보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름.
  • IP와 거의 같다 + Port, + checksum
  • 추가 작업 필요

Port IP 대역대에서 프로세스 구분

  • 0 ~ 65535 할당 가능
  • 0 ~ 1023 : 대부분 고정 값이 있는 포트 (사용 비추천)
  • FTP : 20, 21, Telnet : 23, Http : 80 , Https : 443

DNS

도메인 네임 시스템(Domain Name System)

클라이언트 서버구조

  • Request Response 구조
  • 클라이언트는 서버에 요청을 보내고, 응답을 대기
  • 서버가 요청에 대한 결과를 만들어서 응답

무상태 프로토콜(Stateless)

  • 서버가 클라이언트 상태저장 X
  • 장점으로는 서버 확장성이 높고, 단점으로는 클라이언트가 추가 데이터 전송필요

Stateful vs Stateless 차이

  • 상태유지 : 중간에 상태가 바뀌면 안된다.
  • 무상태 : 중간에 상태가 바뀌어도 됌 무상태는 응답 서버를 쉽게 바꿀 수 있음 실무 한계 : 모든 것을 무상태로 설계 할 수 있는 경우도 있고, 없는 경우도 있음

HTTP 메세지

  • HTML, TEXT, IMAGE, 음성, 영상, 파일 JSON 등 모든 형태 데이터 전송 가능
  • 서버간에 데이터를 주고 받을 때도 대부분 HTTP사용

API URI 설계 방법

가능한한 리소스만 사용해서 PATH를 작성한다. 예) /members/find -> /members 계층 구조상 상위를 컬렉션으로 보고 복수단어를 사용한다. 예) /member -> /members

HTTP 메서드 종류

  • GET : 리소스 조회
  • POST : 요청 데이터 처리, 주로 등록에 사용
  • PUT : 리소스를 대체, 해당 리소스가 없다면 생성
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제

GET

  • 리소스 조회
  • 서버에 전달하고 싶은 데이터는 쿼리를 통해 전달

POST

  • 요청 데이터 처리
  • 메세지 바디를 통해 서버로 요청 데이터 전달
  • 서버는 요청 데이터 처리
  • 메세지 바디로 통해 들어온 데이터를 처리하는 모든 기능을 수행
  • 주로 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용

PUT

  • 리소스를 대체(덮어쓰기)

PATCH

  • 리소스 부분 변경

DELETE

  • 리소스 제거

메서드의 속성

  • 안전(Safe Methods)
  • 멱등(Idempotent Methods)
  • 캐시가능(Cacheable Methods)

안전

  • 호출해도 리소스를 변경하지 않는다.(해당 리소스만 고려)

멱등

  • 한번 호출 또는 여러번 호출에도 결과가 같다.

멱등 메서드

  • GET : 한번 조회하든 두번 조회하든 같은 결과 조회
  • PUT : 결과를 대체, 같은 요청을 여러번 하더라도 최종 결과 같음
  • DELETE : 결과를 삭제, 같은 요청 여러번 하더라도 최종 결과 같음
  • POST : 멱등 X, 같은 결과가 아님.

캐시가능

  • 응답결과 리소스를 캐시해서 사용해도되는지
  • GET, HEAD, POST, PATCH 캐시가능

클라이언트에서 서버로 데이터전송

  • 정적 데이터 조회(이미지, 정적 텍스트)
  • 동적 데이터 조회(주로 검색, 검색어)
  • HTML Form을 통한 데이터 전송(회원가입, 상품주문)
  • HTTP API를 통한 데이터 전송(회원가입, 상품주문, 서버 to 서버 ..)

  • HTML Form submit시 POST 전송
  • Content-type: application/x-www-form-urlencoded 사용
    • formd의 내용을 메세지 바디를 통해 전송
    • 전송 데이터를 url encoding 처리 (abc김 -> abc%EA%..)
  • Content-Type : multipart/form-data
    • 파일 업로드 같은 바이너리 데이터 전송시 사용
    • 다른 종류의 여러 파일과 폼의 내용 함께 전송가능
  • HTML Form 전송은 GET, POST만 지원

HTTP API 데이터전송

  • 서버 to 서버(백엔드 시스템 통신)
  • 앱 클라이언트(아이폰, 안드로이드)
  • 웹 클라이언트
    • HTML에서 FORM 전송 대신 자바 스크립트를 통한 통신에 사용(AJAX)
    • React, VueJS 같은 웹 클라이언트와 API 통신
  • POST, PUT, PATCH 메세지 바디를 통해 데이터 전송
  • GET 조회, 쿼리 파라미터로 전달
  • Content-Type : application/json을 주로 사용(Text,XML,JSON)

참조 : https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

Categories:

Updated:

Leave a comment