네트워크 통신계층 중 하나인 전송계층은 애플리케이션 계층과 네트워크 계층 사이에서 데이터의 전송 품질과 신뢰성을 보장한다. 주로 두 호스트 간 통신을 연결하고 데이터 흐름과 오류를 제어하며, 연결지향 통신 방식을 지원한다.
연결 지향형 프로토콜로 통신을 시작하기 전 3-way 핸드쉐이크를 통하여 세션을 설정하고 데이터의 신뢰성을 보장하기 위해 패킷이 전송 순서대로 도착하도록 제어한다. 흐름제어 및 혼잡 제어를 통하여 네트워크 혼잡을 피한다.
비 연결 지향형 프로토콜로 오류검출은 지원하지만, 재전송이나 순서 보장은 하지 않는다. 빠른 데이터 전송이 필요로 할 때 유용하게 사용된다.
IP는 패킷을 목적지까지 라우팅하는 역할을 담당하지만 패킷 손실에 대한 복구 기능이 없고 순서 보장을 하지 않는다. 송 수신자 간 전송 속도를 제어하지 않아 흐름 제어도 되지 않고 오류 제어 기능이 부족하다.
오류제어는 전송 중 발생할 수 있는 데이터 손실이나 변형을 감지하고 복구하는 방법으로 체크섬, CRC 등을 사용하여 데이터의 무결성을 확인하고 패킷 손실 또는 오류가 감지될 경우 수신 측이 재전송을 요청한다.
흐름제어는 송신자와 수신자 간 데이터 전송 속도를 조절하여 수신 측 버퍼 오버플로우를 방지하는 기법으로 송신자는 하나는 패킷을 전송 후 그에 대한 ACK를 받기 전까지 다음 패킷을 보내지 않는다. 다른 방법으로는 여러 개의 패킷을 전송하고 ACK가 올 때 마다 처리하는 방식으로 네트워크 혼잡을 방지한다.
하나의 동일한 키로 암호화와 복호화를 수행하며 송수신자가 같은 키를 공유해야 한다. 키가 유출되면 누구나 데이터를 복호화할 수 있는 보안 문제가 발생하기 때문에 주의해야 한다.
두 개의 키(공개키, 개인키)를 사용하여 보안성을 높였으며, 공개키로 암호화 된 데이터는 개인키로만 복호화할 수 있다. 반대로 개인키로 암호화된 메세지는 공개키로 복호화할 수 있어 전자서명 용도로 사용된다.
대칭과 비대칭의 장점을 결합한 방법으로 비대칭키 암호화로 대칭키를 안전하게 공유한 후 데어터 전송 시에는 대칭키를 통하여 암호화한다.
HTTPS는 웹 사이트와 사용자 간의 데이터를 안전하게 전송하는 프로토콜로 SSL/TLS를 사용한다. 클라이언트가 서버에 접속하여 SSL 핸드셰이크를 시작하면, 서버는 자신의 공개키가 포함된 인증서를 클라이언트에게 전달한다.
클라이언트는 인증서를 확인 후 서버의 공개키를 사용하여 암호화 후 서버에 전송한다.
서버나 네트워크에 가해지는 트래픽을 여러 서버나 장치에 고로 분산하여 시스템의 성능, 가용성, 신뢰성을 향상시키는 기술로 주로 웹 서버, 데이터서버, 애플리케이션 서버에 사용된다.
로드밸런서는 들어오는 요청을 적절히 나누어 여러 서버에 분산시키고 특정 서버가 과부하되거나 장애가 발생할 경우 자동으로 다른 서버에 재분배한다.
서버에 순서대로 요청을 분배하는 방식으로 단순하게 구현할 수 있으나 서버 성능이나 상태를 고려하지 않는다.
서버마다 가중치를 설정하여 성능이 좋은 서버에 더 많은 요청을 할당하는 방식이다.
가장 적은 연결을 가진 서버에 요청하는 방식
서버 가중치를 고려하면서 최소 연결 수에 따라 요청을 분배
헬스체크는 로드밸런서가 서버의 상태를 모니터링하여, 문제가 있는 서버에 요청을 보내지 않도록 하는 기능이다. 서버가 정상인지 판단하기 위해 정기적으로 상태 확인을 수행한다.
서버에 Ping을 보내 응답이 있는지 확인하는 방식
서버의 특정 포트에 연결할 수 있는지 확인하는 방식
요청을 보내 정상적인 응답이 돌아오는지 확인하는 방식
헬스체크 응답시간이 설정된 임계값을 초과하면 해당 서버를 비정상으로 판단하는 방식