Web and HTTP

이태곤·2023년 9월 19일
0

컴퓨터망

목록 보기
4/32
post-thumbnail

1. HTTP

  • HTTP(Hypertext Transfer Protocol): 웹 서버와 웹 브라우저 간의 통신을 위한 응용 계층의 프로토콜

  • Client / Server 모델을 가진다.

    • Client: 원하는 웹 페이지나 객체(예: HTML 문서, 이미지, 스크립트 파일)를 HTTP 요청을 통해 서버에 요청하고 웹 브라우저에 Display 한다.
    • Server: 해당 요청을 받고, 요청된 객체를 찾아서 클라이언트에게 응답
  • HTTP uses TCP

    • 3-Way handshaking을 통한 연결을 수립 → 데이터를 주고 받기 → 4-Way handshaking을 통한 연결 종료
  • HTTP is Stateless

    • 서버는 클라이언트의 이전 요청에 대한 정보를 유지하지 않는다.
    • 확장성: 개별 클라이언트의 세션 정보를 유지할 필요가 없기 때문에 매번 들어오는 클라이언트의 요청에 어느 서버가 응답하더라도 상관이 없어진다.
      → 서버가 장애가 발생하더라도, 해당 요청을 다른 서버에서 처리함으로써 영속성을 유지 할 수 있다.
    • 서버에 클라이언트에 대한 정보가 없으므로, 클라이언트는 필요한 데이터를 얻기 위해 한 번에 많은 양의 데이터를 전달해야 한다.
      → 쿠키, 세션 등으로 어느정도 해결 할 수 있음
  • HTTP connections: two types

    • Non-persistent HTTP (HTTP 1.0): 하나의 TCP 연결에 하나의 객체만 요청하고 응답 받을 수 있다.
      • 여러 개의 객체를 요청하고 응답 받으려면 해당하는 수만큼 TCP 연결이 필요하다.
        → TCP Connection 오베허드 발생
      • Response Time = 1 RTT(TCP 연결) + 1 RTT(Object 요청 & 응답) + file Transmission Delay
        → RTT(Round-Trip Time): 클라이언트가 서버로 패킷을 보내고 응답을 받을 때까지 걸리는 시간(전송 완료 시점 ~ 응답 받는 시점까지로 Transmission Delay 제외)

    • Persistent HTTP (HTTP 1.1): 하나의 TCP 연결을 통해 여러 객체를 요청하고 응답받을 수 있다.
      • 연결을 종료하지 않는 한 연결을 계속 유지
      • Response Time = 1 RTT(최초 TCP 연결시에만) + 1 RTT(Object 요청 & 응답) + file Transmission Delay
  • HTTP format

    • request line: 요청 메서드 (GET, POST, 등), URL, 및 HTTP 버전이 포함
      → cr: 처음으로 돌아가기, lf: 새로운 line으로
    • header: 요청의 메타데이터가 포함되며, 언어, 인코딩 방식, 쿠키 등
    • body: 실제 요청 데이터 본문
  • HTTP method: 요청 메시지의 요청 라인(request line) 부분에 명시하여, 해당 메시지가 어떤 동작을 수행해야 하는지를 나타내는 역할

    1. GET : 리소스 조회
    2. POST: 요청 데이터 처리, 주로 등록에 사용
    3. PUT: 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성
    4. PATCH: 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)
    5. DELETE: 리소스 삭제
    6. HEAD: header 정보만 요청
  • HTTP response message: 클라이언트가 웹 서버에 보낸 HTTP 요청에 대한 응답

    • 상태 라인 (Status Line): HTTP 버전, 상태 코드 및 상태 메시지로 구성
    • 응답 헤더 (Response Headers): 다양한 응답 메타데이터가 포함된 헤더 정보
      → Content-Type 헤더는 응답 본문의 미디어 유형을 정의하며, Content-Length는 응답 본문의 길이를 지정
    • 응답 본문 (Response Body): 실제 응답 데이터 또는 컨텐츠
  • HTTP Status code: HTTP 요청에 대한 서버의 응답 상태를 나타내는 숫자 코드

    • 1xx (Informational): 조건부 응답
      → 요청이 현재 처리중인 상태를 의미한다.
    • 2xx (Successful): 성공
      → 200 OK: 요청을 정상적으로 처리했음을 의미한다.
      → 201 Created: 요청이 성공하고 새로운 리소스가 생성되었음을 의미
    • 3xx (Redirection): 리다이렉션 완료
      → 301 Moved Permanently 요청한 리소스의 URI가 변경되어서, 새로운 location 정보를 알려준다.
      → 304 Not Modified: 요청한 리소스가 수정되지 않아서 본래 서버가 아닌 프록시 서버로부터 캐싱 된 정보를 클라이언트는 받게 된다.
    • 4xx (Client Error): 요청 오류
      → 400 Bad Request: 클라이언트의 요청이 잘못되었음을 의미
      → 404 Not Found: 요청한 정보를 서버에서 찾을 수 없음을 의미
    • 5xx (Server Error): 서버 오류
      → 500 Internal Sever Error: 서버에 오류가 발생하여 해당 요청을 처리할 수 없는 상태

0개의 댓글