HTTP

2025. 5. 13. 22:11·Network

HTTP 메시지 구조

시작라인, 필드라인, 메시지 본문으로 구성

  • 필드라인은 없거나 여러 개 있을 수 있음
  • 메시지 본문은 없을 수 있음
  • 필드 라인과 메시지 본문 사이에는 빈 줄바꿈이 있음
  • HTTP 메세지는 요청 메시지일 수도 있고, 응답메시지일 수도 있음

HTTP 메시지 = 시작라인(줄바꿈)

                         필드라인(줄바꿈)

                          (줄바꿈)

                        메시지 본문(선택적)

HTTP 상태 코드

코드 유형 의미

100 1xx (정보) Continue – 계속 진행해도 됨
101 1xx (정보) Switching Protocols – 프로토콜 전환 승인
200 2xx (성공) OK – 요청 성공
201 2xx (성공) Created – 자원 생성됨
202 2xx (성공) Accepted – 요청 수락, 처리 중일 수 있음
204 2xx (성공) No Content – 응답 본문 없음
301 3xx (리다이렉션) Moved Permanently – 영구 이동
302 3xx (리다이렉션) Found – 임시 이동 (예전엔 "Moved Temporarily")
303 3xx (리다이렉션) See Other – 다른 URL로 리다이렉트
304 3xx (리다이렉션) Not Modified – 수정 없음 (캐시 사용)
307 3xx (리다이렉션) Temporary Redirect – 임시 리다이렉트
400 4xx (클라이언트 오류) Bad Request – 잘못된 요청
401 4xx (클라이언트 오류) Unauthorized – 인증 필요
403 4xx (클라이언트 오류) Forbidden – 접근 금지
404 4xx (클라이언트 오류) Not Found – 자원 없음
405 4xx (클라이언트 오류) Method Not Allowed – 허용되지 않은 메서드
500 5xx (서버 오류) Internal Server Error – 서버 오류
502 5xx (서버 오류) Bad Gateway – 게이트웨이 오류
503 5xx (서버 오류) Service Unavailable – 서비스 불가

 

HTTP 메서드

  • GET - 특정자원을 조회할 때 사용되는 메서드(가져다주세요)
  • HEAD - GET과 동일하나, 헤더만을 응답받는 메서드
  • POST - 서버로 하여금 특정 작업을 처리하게끔 하는 메서드
    • (처리해주세요 --> 처리할 대상은 흔히 메시지 본문으로 명시)
    • 새로운 자원이 생성시 서버는 응답 메시지의 Location 헤더를 통해 새로 생성된 자원의 위치를 알려줌
  • PUT - 자원을 대체하기 위한 메서드(덮어쓰기/대체)
  • PATCH - 자원에 대한 부분적 수정을 위한 메서드(부분적 수정)
  • DELETE - 자원을 삭제하기 위한 메서

HTTP 요청 구조

  • 요청 라인 (Request Line)
    • 형식: 메서드(공백)요청대상(공백)HTTP/버전(공백)(줄바꿈)
    • 예: GET /index.html HTTP/1.1
    • 메서드: 클라이언트가 서버의 자원에 대해 수행할 작업의 종류(GET, POST, PUT, DELETE)
    • HTTP 요청을 보낼 서버의 자원
    • 보통 URI의 경로가 명시
    • 예) 클라이언트가 http://www.example.com/hello?q=world로 요청 -> 요청 대상은 /hello?q=world
    • 만약 하위 경로가 없더라도 요청 대상은 슬래시(/)로 표기4
    • 예) 클라이언트가 http://www.example.com으로 요청 -> 요청 대상은 /
  • 요청 헤더 (Request Headers)
    • 클라이언트 정보 및 요청 세부 사항 포함
    • 예:
      • GET /index.html HTTP/1.1
        Host: http://www.example.com
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
        Accept: text/html
  • 요청 본문 (Request Body)
    • 선택적, 주로 POST 요청 시 사용
    • 예: username=admin&password=1234

HTTP 응답 구조

  • 상태 라인 (Status Line)
    • 형식: HTTP/버전(공백)상태코드(공백)상태메시지
    • 예: HTTP/1.1 200 OK
  • 응답 헤더 (Response Headers)
    • 서버 정보 및 응답 세부 사항 포함
    • 예:
      • Content-Type: text/html; charset=UTF-8
      • Content-Length: 3056
      • Set-Cookie: sessionId=abc123
  • 응답 본문 (Response Body)
    • 요청한 자원 또는 처리 결과 포함
    • 예: HTML 문서, JSON 데이터 등

HTTP 리다이렉트

  • 요청을 완수하기 위해 추가적인 조치가 필요한 상태
  • 클라이언트가 요청한 자원이 다른 곳에 있을 때, 클라이언트의 요청을 다른 곳으로 이동시키는 
  • 서버가 Location 헤더로 새 주소를 응답
  • 예: http://example.com → https://example.com

HTTPS (HyperText Transfer Protocol Secure)

  • HTTP에 보안(SSL/TLS)을 추가한 프로토콜
  • 데이터 암호화 → 도청/위변조 방지
  • 공개키 기반 암호화(PKI) 사용
  • 포트 번호: 443 사용 (HTTP는 80)
  • 브라우저 주소창에 자물쇠 표시로 구분
  • 사용 예: 온라인 쇼핑, 로그인, 금융 서비스 등
  • 인증서 필요 → 신뢰된 CA가 발급

'Network' 카테고리의 다른 글

Origin, SOP, CORS  (0) 2025.05.13
명령어와 설정 도구  (0) 2025.05.13
네트워크 통신 방식  (0) 2025.05.13
TCP, UDP, ICMP  (0) 2025.05.13
데이터 전송 구조와 캡슐화  (0) 2025.05.13
네트워크 장비와 통신 흐름  (0) 2025.05.13
'Network' 카테고리의 다른 글
  • Origin, SOP, CORS
  • 명령어와 설정 도구
  • 네트워크 통신 방식
  • TCP, UDP, ICMP
jaeon.cloud
jaeon.cloud
  • jaeon.cloud
    JEONG JAE ON
    jaeon.cloud
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • Docker (8)
      • Cloud (7)
      • AWS (14)
      • Network (9)
      • Linux (1)
      • Python (7)
      • Javascript (3)
      • React (5)
      • Project (3)
      • Kubernetes (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    3-tier Architecture
    클라우드
    kubernetes
    lambda
    http
    docker
    Python
    네트워크
    react
    cors
    AWS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
jaeon.cloud
HTTP
상단으로

티스토리툴바