Web이란?
World Wide Web이란 인터넷에 연결된 사용자들이 서로의 정보를 공유할 수 있는 공간을 의미한다.
간단히 줄여서 www나 w3, web이라고 가장 많이 부른다.
- www : World Wide Web
- w3라고도 부른다.
- web의 3요소 : URI, HTTP, HTML
URI(Uniform Resource Identifier)
- Uniform: 리소스 식별하는 통일된 방식
- Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)
- Identifier: 다른 항목과 구분하는데 필요한 정보
HTTP (Hypertext Transfer Protocol)
- 클라이언트 - 서버 간 통신
HTML (Hyper Text Markup Language)
- 하이퍼미디어 포맷
- XML을 바탕으로 한 범용 문서 포맷
- 이를 이용하여 사용자가 알아보기 쉬운 형태로 표현
이 중 HTTP 프로토콜을 이용해서 웹에서 데이터를 주고받는데, 이 부분에 대해 알아보자.
HTTP : Hyter Text Transfer Protocol
- 웹에서 데이터를 주고받는 방식 (Server - Client 모델)
- 다양한 데이터를 전송하는 프로토콜(규약)
HTTP는 클라이언트와 서버 사이에서
클라이언트가 메시지(요청, Request)를 주고, 서버가 메시지를 받아서 응답(Response)을 주는 형태의 통신 방법
- HTTP는 Connectionless 한 프로토콜이다. -> 1회성 요청, 응답이다.
- TCP / IP socket을 이용해서 연결한다.
HTTP 1.1
HTTP는 원래 Connectionless 방식이다. 따라서 요청, 응답시마다 항상 TCP 3-way handshake 및 4-way handshake과정을 거쳐야 한다. 이를 보완한 것이 HTTP 1.1이다.
HTTP 1.1은 keepalive 기능을 제공한다. keep alive 기능은 불필요한 연결과 연결 종료 과정을 줄이기 위해 서버에서 설정된 keepalive - timeout까지는 동일한 source에서 이루어지는 HTP 요청에 대해 연결을 유지하는 기능이다.
이렇게 하면, TCP 프로토콜 단계에서 TCP 3-way, 4-way handshake 과정을 수행하지 않으므로, 성능 개선이 가능하다.
HTTP는 Stateless 프로토콜
HTTP는 무상태(Stateless) 프로토콜이기 때문에 서버가 클라이언트의 상태를 보존하지 않는다.
따라서 응답 서버를 쉽게 변경할 수 있고, 서버를 손쉽게 증설(확장) 할 수 있다.
이러한 무상태 특성 때문에 클라이언트는 HTTP 메시지에 추가 데이터를 담아서 전송해야 한다.
만약약 로그인 상태를 유지해야 하는 등의 상태 유지가 필요한 경우에는 쿠키와 세션을 이용해서 상태를 유지한다.
HTTP는 Connectionless 프로토콜
HTTP는 비 연결성(Connectionless) 프로토콜 이기 때문에 서버와 클라이언트 간의 연결을 유지하지 않는다.
연결을 유지하지 않기 때문에, 서버 자원을 매우 효율적으로 사용할 수 있다.
예를 들어 수천 명이 같은 시간대에 서비스를 사용해도, 실제 서버에서 동시에 처리하는 요청은 매우 작게 된다.
실제로 한 사용자가 서버에 요청을 자주 하지 않기 때문이다. ex) 네이버에서 계속 검색 버튼을 연속해서 누르지 않는다.
단점은 새로운 요청이 있을 때마다, TCP/IP 연결 (3-way handshake)을 새로 맺어야 한다는 점이다.
과거에는 이 문제를 해결하기 위해 HTTP 1.1에서 keep alive 기능을 이용했었고,
최근에는 지속연결(Persistent Connections)로 이 문제를 해결했다.
지속 연결
웹 브라우저에 하나의 페이지를 띄울 때는 수많은 HTTP 요청, 응답이 오고 간다.
예를 들면 클라이언트는 HTML, 자바스크립트, 이미지 등이 여러 개 요청하고, 각각 서버에서 응답한다.
초기의 HTTP에서는 각각 하나의 요청, 응답이 있을 때마다 TCP/IP 연결을 맺었었다.
그러나 지속연결을 이용하면, 하나의 웹 브라우저를 모두 띄우는 동안만 TCP/IP 연결을 유지하여
한 번의 연결, 연결종료 과정만 거치고 그 사이에서 여러 개의 요청-응답에 오고 가게 된다.
최근에는 이 지속연결(Persistent Connections)을 사용하고, 더 많은 최적화 과정을 통해 성능을 개선했다고 한다.
HTTP와 HTTPS
HTTPS의 'S'는 Secure을 의미한다. HTTP 프로토콜은 데이터를 일반 텍스트로 송수신하기 때문에 보안에 취약했다.
이를 보완한 것이 HTTPS이고, 데이터를 일반 텍스트가 아닌 SSL(TLS) 프로토콜을 통해 암호화하여 송수신한다.
HTTP는 무상태성, 비 연결성 프로토콜 이기 때문에
클라이언트 요청, 서버 응답 시에 특별한 규격의 메시지를 주고받게 된다.
이를 HTTP 메시지라고 하는데, 이는 아래 글에서 확인할 수 있다.
2023.07.17 - [Computer Science/Web] - [Web/HTTP] HTTP 메시지(요청, 응답) 구조
'컴퓨터 공학 > Web & Network' 카테고리의 다른 글
[Network] OSI 7계층과 TCP/IP 4계층 (0) | 2023.07.19 |
---|---|
[Web/Network] REST API란? (0) | 2023.07.19 |
[Web] 쿠키(Cookie)와 세션(Session) (0) | 2023.07.18 |
[Web/HTTP] HTTP 상태 코드(Status Code) (0) | 2023.07.18 |
[Web/HTTP] HTTP Methods (0) | 2023.07.18 |