HTTP, URL

augusstt·2022년 3월 10일
0

Web

목록 보기
1/3
post-thumbnail

이 글은 "HTTP 완벽 가이드"를 읽고 이해한 내용을 복습하기 위해 작성하는 글입니다.

Web 서버와 Web 클라이언트

  1. 웹 서버
  • 웹 클라이언트로부터 HTTP 프로토콜을 통하여 요청을 받은 데이터를 제공한다.
  • 간단하게 클라이언트로부터 요청받은 데이터를 송신하여 응답하는 컴퓨터라고 생각하면 된다
  • 웹 리소스를 관리한다.
  1. 웹 클라이언트
  • 흔히 우리가 사용하는 크롬, 사파리 같은 인터넷 브라우저를 말한다.
  • 웹 서버에게 HTTP 요청을 하는 주체이며, HTTP 응답값을 받아와 사용자에게 보여준다.

위에서 서버와 클라이언트가 보내고 받는 요청/응답을 HTTP Request, HTTP Response라고 한다.

HTTP 프로토콜?

웹에서 서버와 클라이언트가 서로 통신하기 위해 상호간에 정한 통신 규약

  • GET, POST, PUT, DELETE, HEAD 등의 요청 메서드를 지원한다.
  • 웹 클라이언트에서 서버로 보낸 HTTP 메시지를 요청, 서버에서 클라이언트로 보낸 HTTP 메시지를 응답 메시지라고 한다.
    ( 따로 메시지로 분류해서 밑에서 다루도록 하겠다.)

  • 일반적으로 시작줄, 헤더, 본문의 3개의 구조를 가지고 있다
    http message

  • 이처럼 서버와 클라이언트가 메시지를 주고 받는 것을 트랜잭션이라고 한다.

  • TCP/IP를 기반으로 통신한다.
    * TCP/IP : TCP와 IP가 층을 이루는 패킷교환 네트워크 프로토콜의 집합

    HTTP는 TCP를 통하여 손상되지 않게 메시지를 전달하고, TCP는 IP패킷을 통하여 데이터를 전달한다.

  • 클라이언트와 서버가 서로 메시지를 전달하기 전에, TCP/IP 커넥션을 맺어야 하는데, 이 과정에서 포트번호와 IP주소가 필요하다.

    • TCP에서는 서버 컴퓨터의 IP주소와 서버 프로그램이 사용중인 포트번호가 필요하다.

HTTP 메시지

  • 모든 HTTP메시지는 Request, Response로 나누어진다.

1 ) 시작줄

  • 모든 HTTP 메시지는 시작줄을 가지고 있다.

  • Request

    • 서버에서 수행하야하는 동작의 메서드, 해당 메서드의 대상을 지칭하는 URL을 포함한다.

    • 메서드
      시작줄은 메서드로 시작하는데, 메서드 중 POST, PUT만 본문( Body )이 존재한다.

  • Response

    • 응답 메시지에 쓰인 HTTP 버전, 숫자로 된 응답코드 (status : 200), 응답 코드에 대한 사유 구절이 문자열로 반환된다.

    • 상태코드
      클라이언트의 요청에 대해 어떠한 응답을 했는지 알려준다.

    • 사유 구절
      상태코드에 대한 설명을 기술한다.

2 ) 헤더

  • Requeset, Response 메시지에 추가 정보를 더한다.

  • 일반헤더
    메시지에 대한 아주 기본적인 정보를 제공한다.

  • Request

    • 요청 메시지에서만 의미를 갖는 헤더
    • 요청 보안 헤더
      Authorization : 클라이언트가 서버에게 제공하는 인증 자체에 대한 정보
      Cookie : 클라이언트가 서버에게 토큰을 전달 할 때 사용한다.
  • Reponse

    • 클라이언트에게 부가정보를 제공한다.
    • 응답 보안 헤더
      Proxy - Authorization : 프락시에서 클라이언트로 보낸 인증 요구의 목록
      Set - Cookie : 서버가 클라이언트를 인증 할 수 있도록 클라이언트 쪽에 토큰을 설정하기 위해 사용한다.

3 ) 본 문

URI

위에서 말한 웹 리소스들은 웹 안에 무수히 많이 존재한다.
우리는 이 리소스들 중 필요한 리소스들을 찾아야 하는데, 이때 사용되는것이 URI이다.

URI는 각각의 리소스들을 고유하게 식별하고, 위치를 지정하는 역할을 한다.

  • URI는 URL, URN으로 구분 할 수 있다.

URL

  • 리소스 식별자의 가장 대표적인 형태이다.

  • 특정한 리소스에 대한 구체적인 위치를 알려준다.

  • URL은 일반 URL 문법을 따르며, 일반적으로 9개 부분으로 나뉜다.


기본적으로 스킴, 사용자이름/비밀번호, 호스트, 포트, 경로, 파라미터, 질의, 프래그먼트 9개의 요소를 가진다

하지만 9개를 모두 가지는 URL은 거의 없다.
가장 중요한 세가지 요소는 스킴, 호스트, 경로이다.

  • 스킴 ( Protocol )

    위 사진에 보이는 프로토콜이 바로 스킴이다.
    리소스를 가져올때, 어떠한 프로토콜을 사용하여 서버에 접근할 것인지를 가리킨다.

  • 호스트 ( Domain )

    위 사진에서 도메인 부분이 호스트이다.

    예시를 간단하게 든 것이지 도메인 === 호스트 는 아니다
    정확히 설명하면 music이 호스트이고, 도메인은 naver.com이다.

    호스트와 도메인의 차이점

    호스트 : 도메인 안의 한 대의 서버 또는 PC를 지칭
    도메인 : 해당 서버 또는 PC를 대표

    ex ) 도메인 : 삼성, 호스트 : 삼성 물산, 삼성 전자 ...

    리소스를 내보내는 서버의 호스트명 또는 IP주소를 가리킨다.

  • 경로 ( Path )

    서버내의 리소스가 어디에 있는지를 가리킨다.

URN

  • 콘텐츠를 이루는 한 리소스에 대해 위치에 영향 받지 않는 유일한 이름 역할을 한다.
  • 즉, 리소스의 위치가 변해도 이름을 유지하는 한 여러 종류의 프로토콜로 접근이 가능하다.
profile
https://augusstt-note.gitbook.io/aug-note 로 블로그 이전했습니다!

0개의 댓글