HTTP 왜 존재할까?

inshining·2022년 10월 1일
0

HTTP

HTTP(Hypertext Transfer Protocol)

클라이언트와 서버 사이 하이퍼텍스트 기반 데이터를 전송하는 프로토콜이다.

하이퍼텍스트는 링크가 담긴 텍스트이다. html 를 뜯어보면 다른 페이지를 갈 수 있는 링크가 달려 있고, css나 이미지와 같은 리소스를 가져올 수 있는 링크가 입력되어 있다.

HTTP의 구성 요소

클라이언트

클라이언트(브라우저, 앱 프로그램)은 서버에 특정 자료 혹은 페이지에 대한 요청을 보낸다. 클라이언트는 절대 응답하지 못하여 서버가 될 수 없다.

서버

서버는 클라이언트와 반대로 클라이언트의 요청에 응답해주는 존재이다.

HTTP 프로토콜은 클라이언트와 서버로 구성되고, 요청과 응답이라는 액션으로 작동한다.

HTTP의 전송형태

HTTP가 프로토콜이라고 했으니 실제로 http를 어떻게 사용하는지 알아 보자. 특정 웹 페이지 혹은 리소스를 요구하는 프로토콜이기 때문에 자료 위치를 표현하는 방법을 이해해야 한다. URI (Uniform Resource Identifier)의 하위에 URN(Uniform Resource Name)와 URL (Uniform Resource Locator) 이 존재한다. URN은 특정 네임스페이스로 리소스를 식별하는 방식이다. 웹 브라우저에서 주로 URL를 사용하기 때문에 URL의 구성 요소를 살펴보자

URL 구성 요소

예를 들어,

http://www.example.com/path/to/index.html?key1=value1&key2=value2#somethingFragment
http://

→ 스키마 혹은 프로토콜 / 여러가지 프로토콜이 나올 수 있음.

[www.example.com](http://www.example.com)

→ 도메인 네임

:80 → 포트 번호

포트는 웹서어 리소스에 접근하기 위한 기술적인 게이트이다. http는 80번 포트를, https는 443번 포트를 사용한다. 일반적으로 사용할 때, 브라우저 혹은 프로그램에서 포트를 입력받지 않아도 자동으로 생성한다.

/path/to/myfile.html → 리소스 경로

?key1=value1&key2=value2 → 쿼리

#somethingFragment → 앵커 , 일종 북마크

HTTP 특징

무상태 (Stateless)

앞서 설명했듯 HTTP는 요청과 응답만 존재하기 때문에 응답이 끝나고 클라이언트와 서버가 다시 연결되더라도 이전의 클라이언트 상태를 서버가 기억하지 못한다. 무상태 특성 덕분에 서버는 불특정 다수 클라이언트의 요청을 처리할 수 있고, 서버의 부담을 줄일 수 있다. 또한, 서버의 스케일 아웃, 로드밸런싱 등 효율적으로 서버 자원을 관리할 수 있다.

비연결성

두 개체가 지속적인 데이터 송수신을 기대하고 지속적인 연결을 유지하는 소켓과 달리, HTTP는 비연결성 프로토콜이다. 클라이언트의 요청과 서버의 응답이 끝나면 클라이언트와 서버 간 연결이 끊긴다.

profile
가능한 최선을 다하고 싶다

0개의 댓글