전송 계층의 프로토콜은 크게 TCP와 UDP 2가지가 있습니다.
TCP (Transmission Control Protocol): 전송 제어 프로토콜
UDP (User Datagram Protocol): 사용자 데이터그램 프로토콜
IP(Internet Protocol)는 데이터 전송을 위한 주소 지정과 패킷 전달을 담당합니다.
비연결형 서비스로 패킷 순서 보장할 수 없고 흐름 제어 기능, 오류 제어 기능이 없거나 제한적이기 때문에 신뢰성 또한 보장할 수 없습니다.
이러한 한계를 TCP가 보완하여 신뢰성 있는 통신 제공합니다. tcp/ip
오류 제어:
재전송 기반 오류 제어 ARQ(Automatic Repeat Request)
ARQ을 통해 데이터가 손상되거나 누락되었는지 확인하고, 필요 시 데이터 재전송을 통해 정확한 데이터를 보장합니다. ARQ에서는 ACK/NACK을 통해 오류 발생 여부를 파악합니다.
ARQ에는 Stop-and-Wait, / 하나씩 전송 ack 수신 후 다음 전송
Go-Back-N, / 연속 전송 발생 지점 재전송
Selective Repeat / 오류만 재전송
등의 방식이 있습니다.
흐름 제어:
슬라이딩 윈도우(Sliding Window) 방식을 사용해 송수신 간의 전송 속도를 조절하여 수신자가 데이터를 너무 빠르게 받지 않도록 조정합니다.
HTTPS(Hypertext Transfer Protocol Secure)는 HTTP에 SSL/TLS 프로토콜을 추가해 보안을 강화한 통신 방식입니다.
ssl/tls는 디지털 인증서로 브라우저, 방문한 웹사이트, 웹사이트 서버 간 전송된 데이터를 암호화하여 중간자 공격을 방지하고 인터넷 연결을 안전하게 보호합니다.
HTTPS는 웹 서버와 클라이언트 간의 전송 데이터가 제3자에게 노출되지 않도록 비대칭키로 대칭키를 안전하게 교환한 뒤, 대칭키로 데이터 암호화를 수행합니다.
로드밸런싱은 여러 서버에 요청을 분배해 과부하를 방지하고, 가용성과 성능을 높이는 기술입니다.
클라이언트의 요청을 여러 서버에 나누어 처리함으로써 특정 서버의 부하를 완화하고, 서비스 응답 속도를 높입니다.
하드웨어, 소프트웨어 두 종류 /
예시로 Nginx, AWS Elastic Load Balancing
4가지가 있습니다.
라운드 로빈(Round Robin): 순서대로 요청을 서버에 분배하는 방식입니다.
가중 라운드 로빈(Weighted Round Robin): 서버에 부여한 가중치에 따라 분배하는 방식입니다.
Least Connections: 가장 적은 연결을 가진 서버에 요청을 전달합니다.
IP 해시: 클라이언트 IP를 해싱하여 특정 서버에 할당, 같은 클라이언트는 동일한 서버로 라우팅됩니다.
최소 응답 시간: 응답 시간 기준으로 서버에 요청을 전달합니다.