Network

브라우저에 URL을 입력하면 - HTTP 요청 전송

HTTP 요청 전송

TCP 연결이 성공적으로 수립되면, 클라이언트는 서버에 HTTP(HyperText Transfer Protocol) 요청을 전송한다. 이 요청은 클라이언트가 서버에게 원하는 작업을 설명하며, 자원을 요청하거나 데이터를 전송할 수 있다. HTTP 요청은 요청할 자원, 사용할 HTTP 메소드, 헤더, 필요시 본문 데이터를 포함할 수 있다.

HTTP 요청의 구성 요소

  1. HTTP 메소드
    1. 클라이언트가 수행하고자 하는 작업의 종류를 서버에 알린다. HTTP 메소드는 서버에 대한 요청의 성격을 나타내며, 다음과 같은 메소드들이 있다:
      • GET: 서버로부터 정보를 요청하기 위해 사용된다. 주로 데이터를 가져오는 데 사용되며, 요청 정보는 URL의 쿼리 문자열로 전달된다.
      • POST: 서버에 데이터를 제출할 때 사용된다. 예를 들어, 폼 데이터를 서버에 제출하거나 파일을 업로드할 때 주로 사용된다. 데이터는 요청의 본문에 포함된다.
      • PUT: 지정된 URI에 데이터를 저장하도록 서버에 요청한다. 이미 존재하는 자원을 수정하거나 새 자원을 생성할 때 사용될 수 있다.
      • PATCH: PUT이 이미 존재 하는 자원의 전체 수정이라면, PATCH는 이미 존재하는 자원의 부분적 수정을 위해 사용된다.
      • DELETE: 지정된 URI의 자원을 삭제하도록 요청한다.
      • HEAD: GET과 유사하지만, 서버는 본문 없이 헤더만 반환한다. 이는 자원의 메타데이터만을 검토하고자 할 때 유용하다.
      • OPTIONS: 대상 리소스에 대한 통신 옵션을 서술하기 위해 사용된다. 예를 들어, 서버가 어떤 메소드를 지원하는지 확인할 때 사용된다.
  1. URL
    1. Uniform Resource Locator(URL)는 요청하는 자원의 위치를 나타낸다. URL은 도메인 이름, 포트(선택적), 자원의 경로, 쿼리 문자열(선택적) 등으로 구성된다.
      • 예시: https://example.com/api/users?id=123
        • https: 프로토콜
        • example.com: 도메인 이름
        • /api/users: 경로
        • id=123: 쿼리 문자열
  1. Header
    1. HTTP 헤더는 요청에 대한 추가 정보를 제공하며, 요청과 응답 모두에 사용된다. 헤더를 통해 클라이언트와 서버는 필요한 매개변수를 서로에게 전달할 수 있다. 몇 가지 중요한 HTTP 헤더 예는 다음과 같다:
      • Content-Type: 요청이나 응답의 본문 데이터 유형을 지정한다. 예를 들어, application/json, text/html 등이 있다.
      • User-Agent: 요청을 보내는 클라이언트의 정보를 서버에 제공한다. 예를 들어, 브라우저 종류, 버전 등이 이에 해당한다.
      • Authorization: 클라이언트의 인증 정보를 포함한다, 예를 들어, 기본 인증 또는 베어러 토큰을 사용할 수 있다.
      • Cookie: 서버가 클라이언트 브라우저에 저장한 정보를 포함하며, 세션 관리, 사용자 추적 등에 사용된다.
  1. Body
    1. POST, PUT 같은 메소드에서 사용되며, 서버로 전송할 데이터를 포함한다. 본문 데이터의 형식은 Content-Type 헤더에 의해 결정된다. 데이터는 일반 텍스트, JSON, XML, 이진 파일 등 다양한 형식이 될 수 있다.