Network

HTTP

kmkunk 2021. 10. 27. 15:58

1. HTTP(Hpyer Text Transfer Protocol)

- 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다.

- 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 동작한다.

 

1.1 서버/클라이언트 모델

- 서비스 제공자(서버)와 서비스 요청자(클라이언트)로 구분되는 네트워크 모델이다.

- 모든 자원은 서버에 집중된다. 그렇기 때문에 클라이언트는 데이터 재현을 위한 최소한의 자원만을 가지는 것이 일반적이다.

 

1.2 TCP/IP

- 인터넷 프로토콜 중 가장 중요한 역할을 하는 TCP와 IP의 합성어로 인터넷 동작의 중심이 되는 통신 규약이다.

- 데이터 흐름 관리, 데이터 정확성 확인(TCP), 패킷을 목적지까지 전송하는 역할(IP) 등을 담당한다.

- IP는 데이터를 한 장소에서 다른 장소로 정확하게 옮겨주는 역할을 하며, TCP는 전체 데이터가 잘 전송될 수 있도록 데이터의 흐름을 조절하고 성공적으로 상대편 컴퓨터에 도착할 수 있도록 보장하는 역할을 한다.

 

1.3 Connectionless

- 서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다.

- 기본적으로 자원 하나에 대해서 하나의 연결을 만든다.

- 불특정 다수를 대상으로 하는 서비스에 적합하다. 수십만명이 웹 서비스를 사용하더라도 접속 유지를 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있다.

- 매번 연결을 새로 맺어야 하기 때문에 3-way-handshake 시간이 추가된다. 동시에 요청 때마다 HTML을 비롯한 JS, CSS 등 수 많은 자원이 다운로드된다.

 

1.4 Stateless

- 서버가 클라이언트의 상태를 보존하지 않는 것을 의미한다.

- Connectionless로 부터 파생되는 특징으로 볼 수 있다.

- 서버의 확장성이 높다.

- 부러우저 쿠키, 서버 세션 등을 사용해 상태를 유지할 수 있다.

 

참고

- https://velog.io/@dnjscksdn98/HTTP-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

- 『모든 개발자를 위한 HTTP 웹 기본 지식』