TCP(Transmission Control Protocol)
-connection-oriented(연결지향형) : 메시지를 전송하기 전에 TCP는 클라이언트와 서버가 서로 전송 제어 정보를 교환하게 한다. (3-way handshaking)
-높은 신뢰성: 올바른 전송 순서를 보장한다.
-flow control(흐름 제어): 송신자가 수신자의 처리 속도보다 더 빨리 데이터를 보내지 않도록 조절한다.
-congestion control(혼잡 제어): 네트워크가 혼잡 상태에 이르면 프로세스의 속도를 낮춘다.
UDP(User Datagram Protocol)
-비연결형 서비스. 두 프로세스가 통신을 하기 전 handshaking을 하지 않는다. 따라서 TCP보다 속도가 빠르며, 실시간으로 전송되는 서비스에 주로 사용된다.
-낮은 신뢰성: 메시지의 수신 여부를 확인하지 않고, 메시지의 도착 순서가 바뀔 수 있다.
HTTP
-서버와 클라이언트 사이에 메시지를 주고받는 프로토콜.
-전송 프로토콜로 TCP를 사용한다.
-서버가 클라이언트에 대한 정보를 유지하지 않는 stateless 프로토콜이다. 이와 반대되는 개념으로 클라이언트의 정보를 유지하는 statefull이 있다.
non-persistent HTTP
-HTTP 1.0
-클라이언트의 요구와 서버의 응답이 매번 다른 TCP 연결을 통해 보내진다.
클라이언트가 서버에게 10개의 객체를 요청한다고 했을 때,
1. 클라이언트가 서버로 TCP 연결을 시도한다.
2. 서버는 이를 수락하고 클라이언트에게 알린다.
3. 클라이언트가 요청 메시지를 보낸다.
4. 서버가 클라이언트의 메시지를 받고 요청한 객체를 소켓에 담아 메시지를 보낸다.
5. 서버가 TCP 연결을 해제한다. (실제로는 클라이언트가 응답 메시지를 받을 때까지 연결은 끊기지 않는다.)
6. 클라이언트가 서버의 응답 메시지를 받으면 TCP 연결이 중단된다.
남은 9개의 객체에 대해 반복한다.
Persistent HTTP
-HTTP 1.1
-서버가 응답을 보낸 후에 TCP 연결을 그대로 유지한다. 따라서 클라이언트의 요구와 서버의 응답이 같은 TCP 연결을 통해 보내진다.
-파이프라이닝을 통해 서버의 응답을 기다리지 않고 연속해서 여러개의 객체를 요청할 수 있다.
-서버는 TCP 연결이 일정 기간 사용되지 않으면 연결을 끊는다.
'네트워크' 카테고리의 다른 글
(8) Reliable Data Transfer Protocol(rdt) (0) | 2024.04.12 |
---|---|
(6) DNS (0) | 2024.04.02 |
(5) E-mail (0) | 2024.03.31 |
(4) HTTP 메시지 포맷, 쿠키와 웹 캐시, HTTP/2 (0) | 2024.03.05 |
(1) 네트워크 용어 및 패킷 (0) | 2024.02.18 |