본문 바로가기
web/기타

[WEB] WEB과 HTTP, URI와 URL 개념

by fien 2020. 11. 24.

목차

  • WEB
    • 인터넷과 웹
    • 웹의 구성요소
  • HTTP
    • HTTP 특징
    • HTTP Method
    • HTTP Status Code
    • HTTP Message Format
  • URI
    • URL 구조

WEB

인터넷

전세계 컴퓨터를 하나로 연결하는 거대한 네트워크를 의미한다.

이러한 인터넷을 활용한 서비스로 WWW, E-Mail, FTP, Telnet 등이 있다.

 

Web (World Wide Web)

인터넷을 활용해 HTML로 만들어진 페이지를 컴퓨터가 주고 받을 수 있도록 고안된 서비스이다.

웹은 텍스트, 이미지, 음성, 영상 등 다양한 미디어를 HyperText 방식으로 연결하여 제공한다.

 

** Hyper Text

초월적 텍스트. 정보에 대한 순차적 접근이 아닌 비순차적인 접근을 뜻한다. 같은 페이지 내의 위치 이동이나 다른 페이지로 이동하는 참조(Hyper Link)를 포함한다.

 

웹의 구성

  • HTML (HyperText Markup Language)

    웹 페이지를 만드는 마크업 언어

    ** Markup Language

    웹 브라우저가 식별할 수 있도록 태그를 이용해 문서를 구조화 해서 표현 하는 언어

    <a> 태그를 통해 웹브라우저가 링크를 표현 할 수 있게 해줌

  • HTTP (HyperText Transfer Protocol)

    웹에서 브라우저(클라이언트)와 웹서버의 통신을 위해 사용하는 프로토콜

  • URI (Uniform Resource Identifier)

    웹 상에 존재하는 자원(텍스트, 이미지, 음성, 영상)에 접근하기 위해서 사용하는 자원 식별자

→ 웹은 HTML 형식의 문서 위치를 URI로 표기하고 HTTP라는 전송 프로토콜을 통해 주고 받는다.

 


HTTP (Hypertext Transfer Protocol)

서버와 클라이언트가 인터넷 상에서 데이터를 주고받기 위한 프로토콜

  • 서버-클라이언트 모델

    클라이언트가 서버에게 요청을 보내면, 서버가 요청을 처리해 클라이언트에게 응답을 보낸다.

  • 무상태 (Stateless) 프로토콜

    각각의 요청을 독립적으로 처리한다. 클라이언트는 요청을 보내기 전에 서버와 연결하는 과정이 필요하다. 요청에 대한 응답이 이뤄지면 연결은 유지되지 않는다. → 상태 유지가 필요한 경우 쿠키나 세션 등을 이용하여 상태를 저장한다.

HTTP Request Method (요청의 종류)

클라이언트는 자원에 대해서 다양한 요청을 할 수 있는데 이를 HTTP Method로 구분합니다.

GET : 자원의 전송을 요청

  • URI에서 PATH 뒤에 query string으로 데이터 전달 → 데이터가 URL에 노출
  • 데이터는 키와 벨류의 쌍으로 전달하고 각각은 &로 구분 ex) id=abc&name=mango
  • 인코딩/디코딩 과정이 없음
  • URI의 길이 제약으로 큰 데이터 전송은 어려움

POST : 자원의 생성을 요청

  • URL에 해당하는 자원을 생성 요청
  • 데이터는 HTTP BODY에 담아서 전달

PUT : 자원의 수정을 요청

  • URI에 지정한 자원이 없는 경우 새로 생성한다.

PATCH : 자원의 일부를 수정 요청

 

DELETE : 자원의 삭제를 요청

 

HEAD : GET과 동일하나 HTTP Header 정보만 요청

  • 서버에서 BODY를 응답하지 않음
  • 자원을 받지 않고 찾기만 원할 때 사용한다.

OPTIONS : 어떤 HTTP 메소드를 지원하는지 확인

 

TRACE : 서버가 클라이언트의 요청을 바디에 담아서 클라이언트에게 반송한다. 루프백 테스트

  • 클라이언트의 요청이 여러 레이어를 거치면 패킷 변조가 발생할 수 있다. 최초의 요청 데이터와 서버 도착 시의 데이터를 비교할 수 있다
  • PUT과 PATCH 차이 : 정보를 일부를 수정하는 경우 PATCH는 변경할 부분만 보내면 된다. 하지만 PUT은 변경하지 않는 나머지 부분도 같이 보내야 한다. 그렇지 않을 경우 null 값이 채워지게 된다. 예를 들어 user의 이름 나이 주소 정보가 있을 때 주소만 바꾸고 싶다면 PATCH는 주소의 정보만 보내면 된다. 반면, PUT은 이름, 나이에 대한 기존 정보도 같이 보내야 한다.
  • POST,PUT,PATCH는 데이터 전송을 위해 메시지에 Content-Type, Content-Lenght 정보를 포함한다.

 

HTTP Response Status Code 응답 상태 코드

서버는 클라이언트의 요청에 대한 처리 결과를 응답 메시지에 담아 전송한다.

 

1XX - Information (정보 전송)

 

2XX - Success (성공)

  • 200 : OK
  • 201 : Created
  • 202 : Accepted
  • 204 : No content (요청은 성공했지만 응답할 데이터가 없는 경우)

3XX - Redirection (리다이렉션)

 

4XX - Client Error (클라이언트 요청 에러)

  • 400 : Bad Request (문법 상의 오류로 서버가 요청을 이해하지 못함)
  • 404 : Not found (요청한 문서를 찾지 못한 경우)
  • 405 : Method not allowed

5XX - Server Error (서버 에러)

  • 500 : Internal server error

 

HTTP Message format

클라이언트와 서버는 정해진 규격의 메시지를 주고 받는다. 위에서 언급했던 요청 메서드, 응답 상태 코드도 메시지에 포함하여 전송한다.

메시지는 header, empty line, body로 이루어진다.

세부적으로 요청 메시지와 응답 메시지의 구조를 살펴보겠다.

 

Request Message

  • Request Line(요청 라인)은 요청 메서드와 자원을 명시하는 URI, HTTP 버전을 표시한다.

  • 헤더는 키-벨류 쌍으로 이루어진다.

    Accept : 해당 요청이 받을 수 있는 응답 body의 content-type을 지정한다.

    User-Agent : 요청을 보내는 클라이언트의 정보. ex) 웹 브라우저의 정보

    Host : 요청이 전송되는 target 호스트의 주소

    Connection : 해당 요청이 끝난 후에 클라이언트와 서버의 커넥션을 유지(keep-alive)할 것인지 중단(cancel)할 것인지 지정한다.

    Content-Type : 요청이 보내는 메세지 body의 타입을 나타낸다.

    Content-Lenght : 메세지 body의 길이

  • 필요한 경우에 request body를 포함한다.

    요청에 필요한 데이터를 xml이나 json 형식으로 담을 수있다.

 

Response Message

  • Status Line(상태 라인)은 요청 처리에 대한 상태 코드와 코드에 대한 설명, HTTP 버전 정보를 표시한다.

  • Header는 요청 헤더와 동일하다. 다만, 요청 헤더의 User-Agent 대신에 서버를 나타내는 Server가 있다.

  • Response body

    html 문서나 json 데이터 등을 담을 수 있다.

 


URI (Uniform Resource Identifier) - 통합 자원 식별자

자원을 구분하고 접근하기 위해 사용하는 유일한 식별자.

 

URI의 종류

  • URL (Uniform Resource Locator) - 자원의 위치
    • 자원의 위치(주소)로 자원을 식별한다.
  • URN (Uniform Resource Name)
    • 자원에 이름을 붙여 식별한다.

 

모든 URI는 URL이다? X

→ URL은 URI의 한 종류이며 가장 흔한 형태이다. 다시 말하면 URI는 개념이고 URL은 개념을 구현한 하나의 형태

 

URL 구조

** 쿼리 스트링은 제외한 패스 부분까지가 URL이라는 관점이 있는데 뒤에 파라미터까지 전달해야 자원을 정확히 식별할 수 있기 때문에 쿼리 스트링을 포함한 전체가 URL에 해당한다.

 

scheme (protocol)

브라우저가 사용할 프로토콜. 대개 HTTP나 HTTPS

host

요청이 도달할 서버를 나타낸다. 일반적으로 도메인 네임을 사용하지만 IP address를 직접 사용할 수도 있다.

port

서버에서 프로그램(서비스)이 사용하는 소켓을 구분. http는 80, https 443

path

서버에서 자원의 경로

query string

서버에 전달할 파라미터. key=value 쌍으로 표기하고 복수 개의 경우 &로 구분한다.

fragment

html 요소의 id를 가르켜 해당 지점으로 스크롤을 이동한다.

 

 


오류나 개선점은 댓글로 남겨주세요~

 

댓글