HTTP

전두엽힘주기·2025년 5월 4일

Computer System

목록 보기
11/13

🌐 네트워크 계층별 핵심 개념 정리


1. IP (Internet Protocol)

항목설명
역할IP 주소를 기반으로 데이터를 패킷 단위로 전달
특징- 비연결성 (Connectionless)
- 비신뢰성 (패킷 손실, 순서 변경 가능)
- 프로그램 구분 불가 (포트 없음)

2. TCP vs UDP

구분TCP (Transmission Control Protocol)UDP (User Datagram Protocol)
목적신뢰성 있는 연결 제공빠른 전송 중심
연결 방식연결지향 (3-way handshake)비연결성
신뢰성데이터 손실/중복/순서 보장보장하지 않음
속도상대적으로 느림빠름
사용 사례파일 전송, 웹, 이메일 등스트리밍, 게임 등
기타흐름 제어, 혼잡 제어 포함checksum만 포함 (간단한 오류 검출)

3-Way Handshake
1. Client → SYN → Server
2. Server → SYN+ACK → Client
3. Client → ACK → Server


3. PORT (포트 번호)

항목설명
역할IP 주소 하나에 여러 애플리케이션을 구분하기 위한 번호
예시80: HTTP, 443: HTTPS, 22: SSH 등

4. DNS (Domain Name System)

항목설명
역할사람이 읽기 쉬운 도메인 이름 → IP 주소로 변환
이유IP는 기억하기 어렵고, 변경 가능성 존재

5. URI (Uniform Resource Identifier)

URI = URL + URN

구분설명
URL리소스의 위치를 지정 (https://example.com/page)
URN리소스의 이름 부여 (e.g., ISBN 등) — 거의 사용되지 않음

URL 구성

형식:

scheme://[userinfo@]host[:port][/path][?query][#fragment]

예시:

https://www.google.com:443/search?q=hello&hl=ko
구성 요소의미
scheme프로토콜 (http, https)
userinfo사용자 정보 (거의 사용하지 않음)
host도메인 또는 IP
port포트 번호 (기본값 생략 가능)
path리소스 경로 (/search)
query?key=value 형태의 파라미터
fragment문서 내 위치 지정 (#section1)

6. 웹 브라우저의 요청 흐름

예시 요청:

https://www.google.com:443/search?q=hello&hl=ko
단계설명
① DNS 조회www.google.com → IP 주소 변환
② TCP 연결브라우저 ↔ 서버 (포트 443 연결)
③ HTTP 요청 전송GET /search?q=hello&hl=ko HTTP/1.1
④ 응답 수신서버로부터 HTML 등의 데이터 수신
⑤ 렌더링브라우저가 결과 페이지를 화면에 출력

HTTP 메시지 구조

전체 구조 (요청 / 응답 공통)

Start Line
Header Fields
(빈 줄)
Message Body

요청 메시지 예시 (GET)

GET /search?q=hello HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0

(빈 줄)

응답 메시지 예시

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234

<html>...</html>

상태 코드 요약

범위의미예시
1xx처리 중100 Continue
2xx성공200 OK, 201 Created
3xx리다이렉트301 Moved, 304 Not Modified
4xx클라이언트 오류400 Bad Request, 404 Not Found
5xx서버 오류500 Internal Server Error

HTTP Method 정리

Method목적바디 사용멱등성안전성캐시
GET조회
POST생성, 처리
PUT전체 수정
PATCH부분 수정
DELETE삭제❌(가급적)

메서드별 요약

1. GET

  • 리소스 조회
  • 파라미터는 쿼리 스트링 사용
  • 캐싱 가능

2. POST

  • 리소스 생성 또는 처리 요청
  • 메시지 바디 사용
  • 멱등성 없음 (같은 요청 여러 번 보내면 여러 리소스 생김)

3. PUT

  • 지정된 리소스를 전체 교체
  • 리소스 없으면 새로 생성
  • 멱등 (같은 요청 여러 번 해도 결과 동일)

4. PATCH

  • 리소스를 부분 수정
  • 일부 필드만 바꿀 때 사용
  • 멱등성 없음

5. DELETE

  • 리소스 삭제
  • 멱등 (지워진 리소스를 다시 지워도 결과 동일)

REST 설계 팁: URI는 명사, Method는 동사 역할

동작URIMethod
회원 조회/members/100GET
회원 등록/membersPOST
회원 전체 수정/members/100PUT
회원 일부 수정/members/100PATCH
회원 삭제/members/100DELETE

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


전송 방식 개요

방식사용 메서드설명
쿼리 파라미터GET검색, 필터, 정렬 등 조건 전달
메시지 바디POST, PUT, PATCH리소스 생성/수정 등 실제 데이터 전달

정적 데이터 조회

  • 대상: 이미지, 정적 HTML, CSS, JS 파일 등
  • 형식: 경로 기반 조회 (쿼리 파라미터 없음)
  • 메서드: GET
  • 예시:
    GET /images/logo.png HTTP/1.1
    Host: example.com

동적 데이터 조회

  • 대상: 검색, 정렬, 필터링 등 조건 기반 조회
  • 형식: 쿼리 파라미터 사용
  • 메서드: GET
  • 예시:
    GET /search?q=hello&hl=ko HTTP/1.1
    Host: www.google.com

HTML Form 데이터 전송

기본 전송

  • 용도: 회원가입, 상품주문, 데이터 변경
  • 메서드: POST
  • Content-Type: application/x-www-form-urlencoded
  • 형식: key=value 형태로 메시지 바디에 전송
  • 예시:
    username=kim&age=30

인코딩

  • 전송 데이터는 URL 인코딩 필요
  • 예: abc김abc%EA%B9%80

파일 업로드 (다중 파트)

  • Content-Type: multipart/form-data
  • 용도: 파일 업로드, 여러 데이터 조합 전송
  • 특징: 바이너리 데이터 포함 가능

지원 메서드

  • HTML Form은 GET, POST만 지원

HTTP API 데이터 전송

  • 대상: 웹/모바일 앱, 서버 간 통신 등

  • 방식: JavaScript(Ajax), 앱 SDK, 서버 코드 등

  • 메서드: GET, POST, PUT, PATCH, DELETE 등 자유롭게 사용

  • Content-Type: application/json 권장

  • 형식 예시 (POST):

    POST /members HTTP/1.1
    Content-Type: application/json
    
    {
      "username": "young",
      "age": 20
    }

등록 방식에 따른 구조 구분

방식메서드URI 결정 주체예시 URI
컬렉션(Collection)POST서버가 URI 생성/members
스토어(Store)PUT클라이언트가 URI 지정/files/mycat.jpg
문서(Document)-고정 리소스/members/100, /images/logo.png
컨트롤러(Controller)POST명령/동작 수행 URI/orders/100/start-delivery
/members/100/delete

정리

구분설명
문서(Document)단일 리소스를 의미하는 URI
컬렉션(Collection)서버가 URI를 관리하는 리소스 디렉토리
스토어(Store)클라이언트가 URI를 지정해 직접 저장
컨트롤러(Controller)문서/컬렉션/스토어로 해결되지 않는 행위 표현

추가 Tip

  • GET + 쿼리 → 조회 조건
  • POST + 바디 → 데이터 생성 또는 처리
  • PUT/PATCH → 전체/부분 수정
  • multipart/form-data → 파일 포함 전송

0개의 댓글