HTTP

HTTP

Wally's 2023. 4. 19. 13:04

HTTP 란?

HTTP는 HyperText Transfer Protocol의 약어로, 인터넷 상에서 데이터를 주고받는데 사용되는 통신 규약이다.

HTTP는 클라이언트와 서버간의 통신을 위해 사용된다.

클라이언트는 웹 브라우저와 같은 응용 프로그램일 수 있으며, 서버는 웹 서버와 같은 네트워크 서비스를 제공하는 컴퓨터일 수 있다.

HTTP프로토콜은 기본적으로 요청(Request)과 응답(Response)으로 구성 된다.

클라이언트는 HTTP 요청 메시지를 서버로 보내고,

서버는 요청에 대한 응답 메시지를 클라이언트로 보낸다.

 

HTTP요청 메시지는 주로 HTTP메소드 (GET, POST, PUT, DELETE 등)와

요청  URI(Uniform Resource Identifier)로 이루어져 있다.

HTTP응답 메시지는 상태 코드(Status Code)와 응답 본문(Response Body)으로 이루어져 있다.

 

HTTP는 웹 브라우저에서 사용되는 프로토콜이며, 웹 페이지를 불러오거나 데이터를 전송하는데 사용된다.

또한, RESTful API를 구현할 때도 사용된다.

HTTP는 간단하면서도 유연한 프로토콜로, 인터넷의 핵심적인 역할을 하고 있다. 

 

HTTP  vs HTTPS

HTTP는 Hypertext인 HTML을 전송하기 위한 통신 규약을 의미한다.

HTTP는 인터넷에서 데이터를 주고받기 위한 프로토콜 중 하나로, 애플리케이션 레벨의 프로토콜로 작동한다.

HTTP는 TCP/IP 프로토콜 위에서 작동하며, 클라이언트와 서버 간의 데이터 교환을 위한 몇 가지 요소로 구성한다.

HTTPS는 마지막 S는 Over Secure Socket Layer의 약자로

Secure라는 말을 통해서 알 수 있듯이 보안이 강화된 HTTP라는 것을 짐작할 수 있다.

HTTP는 암호화되지 않은 방법으로 데이터를 전송하기 때문에 서버와 클라이언트가 주고받은 메시지를 감청하는 것이 매우 쉽다.

예시로 로그인을 위해서 서버로 비밀번호를 전송하거나,

또는 중요한 기밀문서를 열람하는 과정에서 악의적인 감청이나 데이터의 변조 등이 일어날 수 있다는 것이다.

 

HTTP 설명:

- HyperText Transfer Protocol의 약자이며 WWW(World Wide Web)에 내재한 프로토콜이다.

- 인터넷에서 데이터를 주고받을 수 있는 프로토콜 중 하나이다.

 

HTTP는 원래 데이터를 평문으로 전송하기 때문에 보안에 취약한 프로토콜이다.

그러나 HTTPS(보안 HTTP)를 통해 데이터의 암호화와 인증이 가능해졌다.

 

- HTTPS는 HTTP에 데이터 암호화 기능을 추가된 프로토콜이다.

- HTTPS는 HTTP와 다르게 443번 포트를 사용하며 네트워크상에서 제3자가 정보를 볼 수 있도록 암호화 지원을 하고 있다.

- HTTPS의 암호화 방식에는 대칭 키 암호화비대칭 키 암호화 두 가지가 있다.

 

HTTPS는 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 이용하여 통신하는 HTTP이다.

 

* 대칭키 암호화 방식 :

데이터를 암호화하는 키와 복호화하는 키가 같은 방식이다.

이 방식은 암호화와 복호화가 빠르기 때문에 대용량의 데이터 전송에 적합하다.

대칭키 암호화 방식은 키를 공유하는 과정에서 제3자에게 노출될 가능성이 있기 때문에 보안성이 낮다.

따라서 HTTPS에서는 대칭키 암호화 방식을 사용하지 않는다.

 

대신 HTTPS에서는 비대칭키 암호화 방식을 사용한다.

비대칭 키 암호화 방식은 공개키 암호화 방식이라고도 하며,

암호화와 복호화에 사용되는 키가 다른 방식이다.

 

공개키는 누구나 알 수 있지만, 개인키는 오직 소유자만 가지고 있다.

송신자는 수진자의 공개키를 이용해 데이터를 암호화한 후 전송하고, 수신자는 자신의 개인키를 이용해 암호화된 데이터를 복호화한다.

제3가 데이터를 가로채도 복호화할 수 없기 때문에 보안성이 높아진다.

 

HTTPS에서는 대칭키 암호화 방식으로 대부분의 데이터를 암호화하고, 공개키 암호화 방식으로 대칭키를 교환하며,

인증서를 이용해 수신자의 신원을 확인한다.

데이터의 기밀성과 무결성, 송신자와 수신자의 신원보증이 가능해진다.

 

HTTP 연결 과정

1. 클라이언트는 HTTP로 연결하려는 서버의 IP주소를 DNS 서버를 통해 알아낸다.

2. 클라이언트는 서버에 연결하기 위해  TCP/IP 3-way handshake 과정을 거친다.

3. 클라이언트는 서버에게 HTTP요청 메시지를 전송한다. 이때 요청 메시지에는 HTTP메시지 (GET, POST 등),

    요청 URI, HTTP 버전 정보, 헤더 정보 등이 포함된다.

4. 서버는 클라이언트의 요청을 수신하고 요청에 따른 처리를 진행한다. 이후 서버는 HTTP응답 메시지를 클라이언트에게 전송한다.

     응답 메시지에는 HTTP 상태 코드, 응답 헤더 정보, 응답 본문 등이 포함된다.

5. 클라이언트는 서버로부터 받은 HTTP 응답 메시지를 수신하고, 이후에 필요한 추가 요청이 있으면 다시 요청을 보낸다.

6. 클라이언트와 서버는 데이터 전송이 완료되면 TCP/IP 연결을 종료한다.

 

위와 같은 과정을 통해 HTTP 연결을 설정하고 데이터를 주고받을 수 있다.

하지만 HTTP는 평문으로 데이터를 전송하기 때문에 데이터의 기밀성과 무결성을 보장할 수 없다.

이를 보완하기 위해 HTTPS와 같은 보안 프로토콜을 사용해야 한다.

 

HTTPS 연결 과정

0. 클라이언트가 HTTPS로 연결하려는 서버의 도메인 이름을 입력한다.

1. 클라이언트는 DNS 서버를 통해 도메인 이름에 해당하는 IP 주소를 확인한다.

2. 클라이언트는 서버에 연결하기 위해 TCP/IP 3-way handshake 과정을 거친다.

3. 클라이언트는 서버에게 SSL/TLS 연결을 설정하고자 한다는 요청 메시지를 보낸다.

4. 서버는 클라이언트의 요청을 수락하고 SSL/TLS 연결 설정을 위한 정보를 클라이언트에게 전송한다.

    이때 전송되는 정보에는 서버의 공개키가 포함된다.

5. 클라이언트는 서버의 공개키를 이용해 새로운 대칭키를 생성하고,

    이 대칭키를 서버의 공개키로 암호화한 후 서버에게 전송한다.

6. 서버는 자신의 비밀키를 사용해 클라이언트가 보낸 암호화된 대칭키를 복호화한다.

7. 클라이언트와 서버는 이제 대칭키를 사용해 SSL/TLS 세션을 암호화하고, 이후 데이터를 주고받게 된다.

8. 클라이언트와 서버는 데이터 전송이 완료되면 SSL/TLS 연결을 종료한다.

 

위와 같은 과정을 통해 HTTPS 연결을 설정하면, 데이터 전송 중에는 대칭키를 이용해 암호화된 데이터만 주고받게 된다.

이를 통해 데이터의 기밀성과 무결성을 보장할 수 있으며, 서버의 신원도 인증할 수 있다.

 

---

또한 HTTPS를 사용하면서도 보안성의 위험이 존재한다.

SSL 프로토콜은 취약점이 발견되어 현재는 TLS(Transport Layer Security) 프로토콜로 대체되었다.

하지만 SSL을 사용하는 서버나 클라이언트가 아직 많기 때문에 SSL 취약점 공격이 발생할 가능성이 여전히 존재한다.

따라서 SSL을 사용하는 서버나 클라이언트는 취약점을 해결할 수 있는 보안 업데이트를 반드시 수행해야 한다.

 

 

SSL

SSL(Secure Sockets Layer) 은 네트워크 통신에서 정보를 안전하게 전송하기 위한 암호화 프로토콜 중 하나이다.

SSL은 클라이언트와 서버 간의 통신을 보호하기 위해 사용된다.

 

SSL 수행하는 작업 : 

- 클라이언트와 서버 간의 통신을 암호화하여 중간자 공격으로부터 보호한다.

- 서버 인증서를 사용하여 서버의 신원을 확인한다.

- 공개 및 비공개 키를 사용하여 데이터를 보호한다.

 

SSL은 HTTPS(보안 HTTP) 프로토콜을 사용하여 웹에서 가장 많이 사용된다.

HTTPS는 SSL을 사용하여 HTTP통신을 보호한다.

SSL은 또한 FTPS(보안 FTP)와 같은 다른 프로토콜에서도 사용된다.

 

SSL 인증서는 클라이언트와 서버 간의 통신을 보호하는데 사용된다.

인증서는 서버의 공개키와 서버의 신원 정보를 포함하고 있다.

인증서는 클라이언트가 서버의 신원을 확인하고 데이터를 안전하게 전송할 수 있도록 한다.

 

SSL 인증서의 세가지 유형 :

- DV(Domain Validation) SSL 인증서 : 도메인 소유자의 신원만 확인한다.

- OV(Organization Validation) SSL 인증서 : 조직의 신원과 도메인 소유자의 신원을 확인한다.

- EV(Extrnded Validation) SSL 인증서 :

가장 엄격한 인증 수준으로, 조직의 신원, 도메인 소유자의 신원, 조직의 존재 및 신원 확인 등을 모두 확인한다.

 

SSL은 TLS(Transport Layer Security)로 대체되고 있다.

SSL 3.0에서 TLS 1.0으로 이어졌으며, 현재 TLS 1.2와 1.3이 널리 사용된다.

TLS 1.3은 이전 버전에 비해 보안성이 향상되었으며, 성능도 개선되었다.

 

SSL을 사용하는 것은 중요하지만, SSL만으로는 완벽한 보안을 보장할 수 없다.

SSL은 중간자 공격과 같은 공격으로 부터 데이터 보호할 수 있지만, 

서버 측에서의 취약점은 여전히 공격의 대상이 될 수 있다.

따라서 SSL을 사용할 때는 서버 측에서도 적절한 보안 조치를 취해야 한다.

 

HTTP와 HTTPS 연결 과정의 차이점

- HTTP는 보안성이 떨어진다. 반면, HTTPS는 암호화된 데이터를 전송하기 때문에 더 안전하다.

- HTTP는 Stateless한 프로토콜이며, 처리 속도가 빠르다. 반면, HTTPS는 처리 속도가 느릴 수 있다.

-  전송하는 데이터가 단순 정보라면 HTTP를 이용하고,

중요한 개인 정보나 비즈니스 상의 정보를 주고받아야 하는 경우에는 HTTPS를 이용하는 것이 좋다.

 

TCP/IP 3-way handshake

TCP/IP 3-way handshake는 TCP/IP 프로토콜을 이용해 통신하는 응용 프로그램이

데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정이다.

3개의 단계로 이루어지며, 이를 통해 클라이언트와 서버 간 안정적인 통신이 가능하다.

 

3-way handshake의 단계:

1. 클라이언트는 SYN 패킷을 서버에 보냅니다.

   이 패킷은 클라이언트에서 서버로 연결 요청을 보내는 패킷이며, SYN 플래그가 설정된다.

2. 서버는 SYN 패킷을 받고, 클라이언트에게 연결 요청을 받았다는 응답을 하기 위해 SYN+ACK 패킷을 보낸다.

    이 패킷은 서버에서 클라이언트로 연결 요청을 받았다는 패킷이며, SYN과 ACK 플래그가 모두 설정된다.

3. 클라이언트는 SYN+ACK패킷을 받고, 서버로부터 받은 응답이 정상적인지 확인하기 위해 ACK 패킷을 서버에 보낸다.

    이 패킷은 클라이언트에서 서버로 ACK 플래그를 설정하여 응답을 보내는 패킷이다.

 

---

3-way handshake는 TCP연결을 초기화할 때 사용된다.

4-way handshake는 세션을 종료하기 위해 수행되는 절차이다.

 

TCP/IP 4-way handshake

TCP/IP 4-way handshake는 TCP 세션을 종료하기 위한 절차이다.

이 과정은 3-way handshake와 다르게 4번의 패킷 교환 과정을 거친다.

 

4-way handshake의 단계:

1. 클라이언트는 서버에게 연결 종료를 요청하기 위해 FIN 패킷을 보낸다.

    이 패킷은 클라이언트에서 서버로 연결 종료를 요청하는 패킷이며, FIN 플래그가 설정된다.

2. 서버는 FIN 패킷을 받고, 클라이언트에게 연결 종료를 받았다는 응답을 하기 위해 ACK 패킷을 보낸다.

    이 패킷은 서버에서 클라이언트로 연결 종료를 받았다는 패킷이며, ACK 플래그가 설정된다.

3. 서버는 더 이상 보낼 데이터가 없다면, 클라이언트에게 연결을 종료하기 위해 FIN 패킷을 보낸다.

    이 패킷은 서버에서 클라이언트로 연결 종료를 요청하는 패킷이며, FIN 플래그가 설정된다.

4. 클라이언트는 FIN 패킷을 받고, 서버에게 연결 종료를 받았다는 응답을 하기 위해 ACK 패킷을 보낸다.

    이 패킷은 클라이언트에서 서버로 연결 종료를 받았다는 패킷이며, ACK 플래그가 설정된다.

 

4-way handshake에서는 서로 대기 상태에 빠질 수 있는 데드락 상황이 발생할 수 있다.

이는 상대방이 응답을 주지 않아 대기하고 있는 상황에서 문제가 발생하면 서로 계속 대기만 하고 있는 상황이 된다.

이를 방지하기 위해서는 타임아웃을 설정하여 강제로 종료하거나 다음 단계로 넘어가야 한다.

 

4-way handshake에서는 한쪽에서 일방적으로 연결을 끊어버리면 다른 한쪽은 연결이 끊어졌는지 지속되고 있는지 알 방법이 없다.

따라서 4-way handshake를 통해 상대방이 연결을 끊었는지 확인하고 안정적으로 연결을 종료한다.

 

4-way handshake는 TCP 세션을 안정적으로 종료하기 위한 방법 중 하나이다.

이를 통해 서로가 상대방이 연결을 끊었는지 확인하고 안정적으로 연결을 종료할 수 있다.

다만, 대기 상태에 빠질 수 있는 데드락 상황이 발생할 수 있으므로 이를 방기 하기 위해서 타임아웃 등의 방법을 사용해야 한다.

 

 

HTTP의 특징

1. 클라이언트 - 서버 구조 :

HTTP는 클라이언트와 서버 간의 통신을 위한 구조로 설계되었다.

클라이언트가 서버에 요청의 보내고, 서버는 그에 대한 응답을 보내는 방식으로 동작한다.

 

2. Stateless :

HTTP는 Stateless 프로토콜로, 클라이언트와 서버 간의 통신에서 이전 요청과 응답에 대한 정보를 유지하지 않는다.

따라서, 각각의 요청과 응답을 독립적으로 처리된다.

 

3. Request-Response :

HTTP는 클라이언트가 서버에 요청을 보내면, 서버는 해당 요청에 대한 응답을 반환한다.

이러한 Request-Response 구조로, 클라이언트와 서버간의 통신이 이루어진다.

 

4. Connectionless :

HTTP는 Connectionless 프로토콜로, 각각의 요청과 응답은 독립적으로 처리되며,

서버와의 연결을 유지하지 않는다. 매 요청마다 새로운 연결이 생성된다.

 

5. Header-based :

HTTP는 Header-based 프로토콜로, 각각의 요청과 응답을 Header와 Body로 구성된다.

Header에는 요청 또는 응답에 대한 메타데이터가 포함되어 있으며, Body에는 실제 데이터가 포함된다.

 

6. 기능의 확정성 : 

HTTP는 확장성이 높은 프로토콜로, 새로운 기능을 추가할 수 있다.

HTTP/1.1에서는 Keep-Alive 기능이 추가되어, 여러 개의 요청을 동일한 연결에서 처리할 수 있게 되었다.

HTTP/2에서는 멀티플렉싱, 스트림 우선순위 등의 기능이 추가되어 성능이 개선되었다.

 

 

HTTP/1.1 Keep-Alive

HTTP/1.1에서는 Keep-Alive 기능이 도입되어,

클라이언트와 서버 간의 연결을 유지하고 여러 개의 요청을 동일한 연결에서 처리할 수 있게 되었다.

 

이전 버전의 HTTP는 각각의 요청마다 새로운 연결을 생성했기 때문에, 매번 연결을 설정하고 해제하는 데에 시간과 자원이 소요되었다.

이러한 문제를 해결하기 위해 HTTP/1.1에서는 Keep-Alive 기능이 추가되었다.

 

Keep-Alive 기능은 연결을 유지하는 시간을 정해두고, 그 시간 동안은 연결을 유지한 채로 여러 개의 요청을 처리할 수 있다.

이를 통해, 매번 연결을 설정하고 해제하는데 필요한 시간과 자원을 줄일 수 있으며, 네트워크 지연시간을 줄이고 성능을 향상할 수 있다.

 

하지만 Keep-Alive 기능은 연결을 유지하는 시간이 너무 길어지면, 다른 클라이언트가 서버와의 연결을 사용할 수 없게 될 수 있다.

따라서, 적절한 연결 유지 시간을 설정해야 한다.

HTTP/1.1에서는 기본적으로 15초의 연결 유지 시간이 설정되어 있다.

 

 

HTTP/2 멀티플렉싱

HTTP/2 멀티플렉싱은 HTTP/2의 가장 중요한 기능 중 하나다.

멀티플렉싱은 여러 개의 요청과 응답을 동시에 전송하고 수신할 수 있는 기능이다.

이를 통해 단일 TCP 연결에서 여러 리소스를 요청할 수 있으며, 이로 인해 여러 개의 TCP 연결을 유지할 필요가 없어진다.

이 기능으로 인해 HTTP/2는 HTTP/1.1에 비해 웹 성능이 더욱 향상되었다.

 

HTTP/2의 멀티플렉싱은 바이너리 프레임을 사용하여 요청과 응답을 동시에 전송하고 수신한다.

HTTP/1.1에서는 파이프라이닝을 사용하여 여러 개의 요청을 동시에 전송할 수 있었지만,

HOL 문제로 인해 웹 성능이 저하되는 문제가 있었다.

하지만 HTTP/2에서는 멀티플렉싱을 통해 HOL 문제를 해결하고, 웹 성능을 향상 시켰다.

 

멀티플렉싱은 바이너리 프레임과 스트림 개념을 사용하여 구현된다.

바이너리 프레임은 HTTP/2에서 통신의 최소 단위이며, 각 최소 단위에는 하나의 프레임 헤더가 포함된다.

이 프레임 헤더는 최소한으로 프레임이 속하는 스트림을 식별한다.

스트림은 구성된 연결 내에서 전달되는 바이트의 양방향 흐름이며, 하나 이상의 메시지가 전달될 수 있다.

 

HTTP/2의 멀티플렉싱은 요청과 응답을 동시에 전송하고 수신할 수 있으므로,

HTTP/1.1보다 더 효율적인 리소스 사용이 가능하다.

이로 인해 웹 성능이 향상되며 사용자 경험도 개선된다.

 

하지만, 멀티플렉싱은 요청과 응답을 동시에 처리하기 때문에, 서버 자원의 부하가 증가할 수 있다.

따라서 서버의 성능에 따라 멀티플렉싱이 웹 성능을 향상시키는지 아니면 저하시키는지 평가해야 한다.

 

멀티플렉싱은 HTTP/2의 가장 중요한 기능 중 하나이지만,

모든 브라우저에서 지원하지 않을 수도 있다.

따라서 HTTP/2의 멀티플렉싱을 사용하기 위해서는 브라우저와 서버가 모두 HTTP/2를 지원해야 한다.

 

 

HTTP/1.1 HOL문제

HTTP/1.1에서 HOL(Hold-On-Line)문제란,

하나의 요청이 완료되기 전에 다음 요청이 전송되지 못하는 상황을 말한다.

하나의 TCP 연결에서 여러 개의 요청을 처리할 수 있도록 Keep-Alive 기능이 추가된 HTTP/1.1에서 발생한 문제다.

 

예시로, 클라이언트가 여러 개의 요청을 하나의 TCP 연결로 보내는 경우, 서버는 요청을 받은 순서대로 처리해야 한다.

하지만, 이때 하나의 요청이 많은 데이터를 요구하게 되면,

해당 요청에 대한 응답이 완료될 때까지 다음 요청은 처리되지 못하고 대기하게 된다.

따라서, 전체적인 성능이 저하될 수 있다.

 

HOL 문제를 해결하기 위해서는,

여러 개의 요청을 보내는 대신 하나의 요청에서 여러 개의 리소스를 요청하는 방식인

HTTP 파이프라이닝 (HTTP pipelining)을 사용할 수 있다.

 

또는 HTTP/2에서 처럼 멀티플렉싱 기능을 사용하여 하나의 TCP 연결에서

여러 개의 요청과 응답을 동시에 처리할 수 있도록 개선할 수 있다.

 

 

HTTP/2 스트림 우선순위

HTTP/2에서는 프레임이라는 최소 단위로 통신한다.

각 프레임에는 스트림 식별자가 포함되어 있으며,

서버는 이를 기반으로 다른 스트림의 프레임을 인터리빙 하여 각각의 스트림으로 재조립할 수 있다.

 

HTTP/2에서는 스트림 우선순위(stream priority) 기능이 도입되며,

클라이언트가 요청한 여러 개의 스트림을 우선순위에 따라 처리할 수 있다.

이 기능은 HOL(Hold-On-Line)문제와 같은 문제를 해결하고, 전체적인 성능을 개선하는데 도움을 준다.

 

스트림 우선순위는 1~256까지의 값을 가질 수 있으며, 값이 작을수록 우선순위가 높다.

 

스트림 우선순위 설정 방법 :

1. 클라이언트는 각각의 요청에 대해 우선순위를 설정한다.

2. 서버는 각각의 스트림에 대해 가중치와 의존관계(dependency)를 설정한다.

3. 클라이언트는 서버가 설정한 가중치와 의존관계를 기반으로, 각각의 요청을 적절한 스트림에 할당한다.

 

이를 통해, 중요한 요청을 우선적으로 처리하여 전체적인 성능을 개선할 수 있다.

예시로, 이미지나 스타일시트와 같은 정적인 리소스는 우선순위를 낮게 설정하고,

동적인 컨텐츠나 API요청과 같은 중요한 요청은 우선순위를 높게 설정하여 빠른 응답을 보장할 수 있다.

 

 

HTTP Method

HTTP Method는 클라이언트와 서버 간에 요청과 응답 데이터를 전송하는 방식을 정의한다.

HTTP Method는 서버에 주어진 리소스에 수행하길 원하는 행동,

서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법이다.

클라이언트에서 서버에 요청을 보낼 때, 어떤 종류의 요청인지를 명시하는 역할을 한다.

 

HTTP/1.1에서는 8개의 Method :

1. GET : 리소스를 조회하기 위해 사용. 요청한 리소스를 가져와서 응답으로 전송한다.

2.POST : 리소스를 생성하기 위해 사용. 요청한 데이터를 서버에 전송하여 새로운 리소스를 생성한다.

3. PUT : 리소스를 수정하기 위해 사용. 요청한 데이터를 해당 리소스에 덮어씌워서 수정한다.

4. DELETE : 리소스를 삭제하기 위해 사용. 요청한 리소스를 삭제한다.

5. HEAD : GET Method와 동일하지만, 응답 본문을 제외한 메타데이터만을 가져온다.

6. OPTIONS : 서버에서 지원하는 Method 옵션을 가져온다.

7. TRACE : 클라이언트가 보낸 요청을 그대로 반환한다. 테스트나 디버깅 용도로 사용된다.

8. CONNECT :  프록시를 통해 연결된 네트워크에 대해 터널링을 요청한다.

9. PUSH(HTTP/2에 추가됨) : 서버가 클라이언트의 요청 없이 미리 캐시로 저장해 둔 리소스를 보내는 방식으로 클라이언트의 대기 시간을 줄이고 전체적인 성능을 향상 시키는 데 사용된다.

 

HTTP/2 에서는 각 요청에 대한 우선순위를 지정하는 방법으로 Weight와 Dependency를 사용한다.

이를 통해, 높은 우선순위를 가진 요청이 먼저 처리되도록 조정할 수 있다.

또한, HTTP/2 에서는 서버가 PUSH요청을 보내어 클라이언트가 필요로 하는 리소스를 미리 캐시로 저장해 두어,

더 빠른 속도로 데이터를 전송할 수 있다.

 

 

메타파일 이란?

메타파일(metafile)은 데이터 파일이나 문서 파일 등의 다른 파일에 대한 정보를 담은 파일로,

메타데이터(metadata)를 포함하는 파일이다.

 

메타파일은 데이터의 속성, 구조, 형식, 생성일자, 수정일자, 저작자, 저작권 정보 등을 포함한다.

 

메타파일은 주로 컴퓨터 시스템에서 파일을 다룰 때 유용하다.

예를 들어, 파일 검색 시스템에서 파일 이름이나 파일 크기,

수정일자 등의 속성을 검색할 수 있도록 메타파일에 저장된 메타데이터를 이용한다.

 

또한, 파일 관리 시스템에서 파일을 관리하고 검색할 때도 메타파일을 이용한다.

 

*위 내용 오타 및 수정해야 하는 내용 있으면 댓글로 알려주시면 감사합니다.