앞의 글을 읽으시면 이해에 도움이 됩니다.
2023.04.09 - [Computer Science/네트워크] - [네트워크] What is HTTP?
1. Non-Persistent란?
- 많은 인터넷 어플리케이션에서 클라이언트와 서버는 계속해서 통신합니다.
- 클라이언트는 다양한 요청을 하고, 서버는 각각의 요청에 응답을 합니다.
- TCP를 이용하여 HTTP 통신을 할 때, 개발자들은 각각의 요청/응답 쌍을 분리된 TCP connection로 보내야 할지, 혹은 모든 요청과 그에 맞는 응답을 동일한 TCP connection으로 보내야할지 결정해야 했습니다.
- 앞선 접근법에서 전자에 해당하는 방식을 non-persistent connections라 하고, 후자에 해당하는 방식을 persistent connections라고 합니다.
2. Non-Persistent
- Non-Persistent는 HTTP/1에서 사용하던 방식입니다.
- 클라이언트가 서버에게 http://www.abc.com/abc/abc.index를 요청한다고 가정해 봅시다.
- 첫 번째로 클라이언트 프로세스는 서버와 포트 번호 80번을 통해 TCP connection을 초기화합니다.
- 두 번째로 서버에게 HTTP 요청 메시지를 보낼 것이고, 서버는 이에 대해 응답할 객체를 메시지에 담아 encapsulate를 하고 클라이언트에게 보냅니다. (물론 소켓을 통해서 보냅니다.)
- HTTP 서버는 TCP에게 TCP connection을 끝내겠다고 전합니다.
- 클라이언트가 요청한 응답을 받은 후에 TCP에게 TCP connection을 끝내겠다고 전합니다.
- 근데 만약 해당 주소에 1개의 HTML file과 10개의 JEPG object가 있으면 어떻게 될까요?
- 아마 앞선 행위를 11번 반복할 것입니다. 따라서 11개의 TCP connections가 생성됩니다.
- non-persistent HTTP는 서버가 객체를 전달한 이후에, 다른 객체를 위해서 연결을 유지하지 않습니다.
- 따라서 non-persistent TCP connection의 경우는 하나의 요청 메시지와 하나의 응답 메시지만 존재합니다.
- 잠시 다음 내용으로 가기 전에 RTT를 알아보고 갑시다.
3. RTT
- RTT는 Rount-Trip Time의 약자로, 뭔가 거창해 보이지만 실제로는 별 거 없습니다.
- RTT는 작은 패킷이 클라이언트로부터 시작해서 서버를 거쳐 다시 클라이언트로 돌아오는 시간을 말합니다.
- RTT는 processing delay, queuing delay, transmission delay, propagation delay를 가지고 있습니다.
- 위의 그림처럼 TCP connection을 하기 위해서 "three-way handshake"라는 것을 가집니다.
- three-way handshake는 다음과 같습니다.
- 클라이언트가 서버에게 연결을 요청하는 작은 TCP segment를 보냅니다.
- 이를 받은 서버는 이를 인식하는 ACK와 응답하는 작은 TCP segment를 함께 보냅니다.
- 최종적으로 서버가 보낸 응답을 받은 클라이언트는 이를 인식하는 ACK를 다시 서버에게 보냅니다.
- 이로써 TCP connection이 되었습니다.
4. Non-Persistent의 단점
- 3번에서 봤다시피 앞의 두 단계는 하나의 RTT를 소요합니다.
- three-way handshaking의 앞 두 단계가 끝나면, 클라이언트는 HTTP 요청 메시지와 함께 세 번째 단계의 인식을 서버로 보냅니다.
- 요청받은 서버는 다시 응답 메시지를 클라이언트에게 보냅니다. 이 과정에서 또 하나의 RTT가 소요되었습니다.
- 결론적으로 하나의 객체를 응답받는 데에 파일을 받는 시간과 더불어 2개의 RTT가 걸립니다.
- 즉, 파일을 받는 시간 + 2 * RTT가 걸립니다.
- 만약 Close까지 포함한다면 3개의 RTT가 있겠네요.
- 때로는 병렬로 TCP connections를 만들어 이를 처리할 수도 있습니다.
- 이것이 Non-Persistent의 단점이고, 이로 인해 Persistent HTTP가 개발되었습니다.
참고
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터 망 수업
Computer Networking: A Top Down Approach / James F. Kurose, Keith W. Ross 저 / PEARSON / 2021년
Chat GPT, Bing AI
다음 글에서는 HTTP - Persistent에 대해 알아보겠습니다.
2023.04.09 - [Computer Science/네트워크] - [네트워크] HTTP - Persistent
감사합니다.
지적 환영합니다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] HTTP Request Message (0) | 2023.04.09 |
---|---|
[네트워크] HTTP - Persistent (0) | 2023.04.09 |
[네트워크] What is HTTP? (1) | 2023.04.09 |
[네트워크] Application-Layer Protocols (0) | 2023.04.08 |
[네트워크] Transport Protocol(TCP, UDP) Services (0) | 2023.04.08 |