모든 개발자를 위한 HTTP 웹 기본 지식 정리

전용본·2024년 1월 8일
0

네트워크 5계층 : Application, Transport, Network, Data link, Physical

IP (인터넷 프로토콜)

  • 지정한 IP address에 데이터 전달
  • Packet(패킷)이라는 통신단위로 데이터 전달
  • 받는 대상이 서비스 불능 상황에도 전달 (비연결성)
  • 패킷 소실, 패킷 전달 순서 보장하지 않음 (비신뢰성)

TCP (Transmission Control Protocol)

  • 논리적 연결 지향 : TCP 3way handshake - Syn, Ack 메세지 이용
  • 데이터 전달 보장 : 데이터 수신 여부 전달
  • 전달 순서 보장 : 순서가 잘못되었을 경우 처음부터 다시 전달(최적화 가능)
  • 신뢰 가능

UDP (User Datagram Protocol)

  • 연결 지향 X
  • 데이터 전달 보장 X
  • 전달 순서 보장 X
  • IP와 다른 점은 Port, CheckSum 등 제공
  • 신뢰 불가 -> Application Layer에서 추가 작업 필요

Port

  • IP로는 서버를 찾고 같은 IP 서버 내에서 어플리케이션을 구분할 수 있게 추가로 Port를 사용

DNS (Domain Name Server)

  • 도메인 이름 -> IP 주소 변환
  • 복잡한 IP 주소 문제 해결
  • IP가 바뀔 수 있는 문제 해결

URI (Uniform Resource Identifier)

  • URL(Locator), URN(Name)으로 상세 분류
  • URN은 잘 사용되지 않음, URL이 보편적으로 사용
  • schema + userinfo + host + port + path + query

HTTP (Hypertext Transfer Protocol)

  • Json, Image, HTML 대부분 형태의 데이터 전달 가능
  • HTTP/1.1을 보편적으로 사용했지만 HTTP/2,3 도 계속 확장중

클라이언트 서버 구조

  • Request, Response 구조
  • 클라이언트가 서버에 요청을 보내고 응답을 받음 -> 클라이언트는 UI에 집중, 서버에 비즈니스 로직 대부분 수행

Stateless (무상태)

  • 서버가 클라이언트의 상태를 보존 X
  • 클라이언트는 지속적으로 같은 서버와 통신하지 않으므로 아무 서버나 호출할 수 있다. -> 무한한 서버 증설 가능
  • 로그인과 같은 경우에 상태 유지를 해야 하는 경우도 있음, 최소한으로 사용하고 쿠키, 세션 등으로 보조
  • 순식간에 들어오는 대용량 트래픽을 감당하기 위해선 최대한 Stateless하게 설계하여 쉽게 서버 증설을 할 수 있어야 한다.

비연결성

  • 클라이언트와 서버 간의 연결을 유지하지 않으므로 연결 유지에 드는 Resource를 최소화할 수 있다.
  • 매번 새로 TCP 3way handshake를 해야 하므로 추가 시간이 들고 여럿 한계가 있지만 Persistent Connection으로 보완한다.

요청 메시지

  • request line / method / target / HTTP version

응답 메세지

  • response line / HTTP version / status-code / reason-pharase

HTTP 헤더

  • 전송에 필요한 부가 정보 모두 갖고 있음
  • 표준헤더는 굉장히 많고 추가로 헤더 만들어 보낼 수 있음
  • Content-Type, Content-Encoding 등등..
  • Accept 헤더(협상 헤더)는 클라이언트가 선호하는 것을 나타내는 헤더로 요청시에 사용한다.
  • Host 헤더는 필수 : 하나의 서버가 여러 도메인을 처리할 수 있기 때문

HTTP 메세지 바디

  • 거의 모든 데이터 담아 전송 가능

HTTP API

  • URL에선 Resource만 식별, 행위는 메서드로 식별
  • GET : 리소스 조회 (query로 요청)
  • POST : 요청 데이터 처리, 주로 등록 (메세지 바디로 요청)
  • PUT : 리소스를 생성 혹은 대체 (리소스의 위치를 정확하게 지정 <- POST와의 차이점)
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제

클라이언트 -> 서버 데이터 전송 방식

  • 정적 데이터 조회
  • 동적 데이터 조회 : query등을 같이 보내 서버에서 작업 후에 데이터 전송
  • HTML Form 데이터 조회 : HTML 문법 중 Form 태그에서 action, method, input 등을 지정해서 웹 브라우저가 HTTP 메세지 생성 후 서버에 전송

HTTP 상태 코드

  • 1xx : 요청 수신되어 처리중
  • 2xx : 요청 정상 처리
  • 3xx : 요청 완료 위해 추가 행동 필요 (Redirection)
  • 4xx : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청 수행 불가
  • 5xx : 서버 오류, 서버가 요청을 처리할 수 없음

PRG (POST/Redirect/Get)

  • POST로 요청 메시지를 처리한 후에 중복 요청을 막기 위해서 바로 결과 화면 (GET)로 Redirect한다.
profile
서강대학교 컴퓨터공학과

0개의 댓글