로드 밸런싱 요즘 시대에는 웹사이트에 접속하는 인원이 급격하게 늘었기 때문에 모든 트래픽을 감당하기엔 1대의 서버로는 부족합니다. 대응 방안으로 하드웨어의 성능을 올리는 것(Scale-up)과 여러 대의 서버가 나눠서 일하도록 만드는 것(Scale-out)이 있습니다. 하드웨어 향상 비용이 더욱 비싸기도 하고, 서버가 여러 대 존재하면 무중단 서비스를 제공하는 환경 구성이 용이하므로 Scale-out이 효과적입니다. 이때, 여러 서버에게 균등하게 트래픽을 분산시켜주는 것이 바로 로드 밸런싱입니다. 로드 밸런싱은 분산식 웹 서비스로, 여러 서버에 부하(Load)를 나누어주는 역할을 합니다. 로드 밸런서를 클라이언트와 서버 사이에 두고, 부하가 일어나지 않도록 여러 서버에 분산시켜주는 방식입니다. 서비스를 ..
IP 주소 IP 주소는 많은 컴퓨터들이 인터넷 상에서 서로를 인식하기 위해 지정받은 식별용 번호입니다. 현재는 IPv4 버전(32비트)으로 구성되어 있으며, '127.0.0.1' 같은 주소를 말합니다. 시간이 갈수록 IPv4 주소의 부족으로 IPv6가 생겼는데, 128비트로 구성되어 있기 때문에 IP 주소가 부족하지 않다는 특징이 있습니다. 도메인 네임 (Domain Name) IP 주소는 12자리의 숫자로 되어 있기 때문에 사람이 외우기 힘들다는 단점이 있습니다. 그렇기 때문에 12자리의 IP 주소를 문자로 표현한 주소를 도메인 네임이라고 합니다. 도메인 네임은 'naver.com'처럼 몇 개의 의미있는 문자들과 점(.)의 조합으로 구성된다. 도메인 네임은 사람의 편의성을 위해 만든 주소이므로 실제로는..
HTTP (Hyper-Text Transfer Protocol)HTTP는 클라이언트와 서버가 데이터를 주고받기 위한 프로토콜입니다.인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있습니다.애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동합니다.비연결 지향 브라우저를 통해 사용자의 요청으로 서버와 접속하여 요청에 대한 응답의 데이터를 전송한 후 연결을 종료합니다. 과정이 간단하기 때문에 자원이 적게 든다는 장점이 있습니다.하지만 여러 사용자가 요청할 시 각각의 사용자 요청을 구분할 수 없어서 제대로 된 응답 데이터를 전송할 수 없다는 단점이 있습니다. 해결 방법으로는 쿠키, 세션, 히든 폼 필드 등이 있습니다. 단방향성 사용자의 요청 한 개에 대해 한 개의 응답을 하는 ..
대칭키 (Symmetric Key) 대칭키 암호화 방식은 암호화와 복호화에 같은 암호키를 사용하는 알고리즘입니다. 하나의 키를 클라이언트와 서버 양쪽이 같이 사용합니다. 공개키 암호화 방식에 비해 암호화 및 복호화 속도가 빠르고 비교적 간편합니다. 암호화 통신을 하는 사용자끼리 같은 암호키를 공유해야만 하기 때문에 보안에 매우 취약할 수 있습니다. 여러 사용자들과 각각 암호화 통신을 하기 위해서는 암호키가 여러 개 필요하기 때문에 관리해야 할 키의 개수가 방대해질 수 있습니다. 대표 알고리즘 : DES, 3DES, AES, SEED, ARIA 등 대칭키 암호화 시나리오 1. A는 사전에 공유된 대칭키로 데이터를 암호화하여 B에게 전송합니다. 2. B는 같은 대칭키로 데이터를 복호화합니다. 공개키 (Pub..
3-Way Handshake 3-Way Handshake는 TCP/IP 프로토콜을 이용하여 통신을 진행할 때, 두 종단 간 정확한 데이터 전송을 보장하기 위해 연결을 설정하는 과정입니다. 클라이언트는 서버에 접속을 요청하는 SYN(a) 패킷을 보냅니다. 서버는 클라이언트의 요청인 SYN(a) 패킷에 대한 요청 수락 응답으로 ACK(a+1) 패킷을 보냅니다. 또한, 클라이언트도 포트를 열어달라는 SYN(b) 패킷을 보냅니다. 클라이언트는 ACK(a+1) 패킷과 SYN(b) 패킷을 받고 이에 대한 응답으로 ACK(b+1) 패킷을 보내며 연결이 성립됩니다. 왜 2 way가 아니라 3 way일까? TCP는 양방향성 연결이기 때문에 클라이언트에서 서버에게 자신의 존재를 알리고 패킷을 보낼 수 있는 것처럼 서버에서..
UDP UDP는 User Datagram Protocol의 약자입니다. 데이터를 독립적인 관계를 지니는 패킷인 Datagram 단위로 처리하는 프로토콜입니다. 비연결형 프로토콜로 사전에 연결 설정 없이 데이터를 전달합니다. 하나의 메시지에서 분할된 각각의 패킷은 서로 다른 경로로 전송될 수 있습니다. 송신 측에서 전송한 패킷의 순서와 수신 측에 도착한 패킷의 순서가 다를 수 있습니다. 서로 다른 경로로 패킷을 처리함에도 불구하고 순서를 부여하거나 재조립하지 않습니다. 흐름 제어, 혼잡 제어, 오류 제어를 하지 않으므로 손상된 세그먼트에 대한 재전송을 하지 않습니다. 속도가 빠르며 네트워크 부하가 적다는 장점이 있지만, 신뢰성 있는 데이터 전송을 보장하지 못합니다. UDP는 Multicast, DNS, R..
TCP 일반적으로 TCP와 IP를 함께 사용하는데, TCP는 패킷 추적 및 관리를 담당하고 IP가 데이터의 배달을 담당합니다. 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜입니다. 사전에 3-way handshake 과정을 통해 연결을 설정하고 통신을 시작합니다. 4-way handshake 과정을 통해 연결을 해제합니다. (가상 회선 방식) 흐름 제어, 혼잡 제어, 오류 제어를 통해 신뢰성을 보장하지만 이 때문에 UDP보다 전송 속도가 느립니다. 데이터의 전송 순서를 보장하며 수신 여부를 확인할 수 있습니다. 대부분의 웹 HTTP 통신, 이메일, 파일 전송 등에 사용됩니다. 흐름 제어 송신 측과 수신 측 사이의 데이터 처리 속도를 해결하기 위한 기법입니다. 만약 송신 측의 전송량 > 수신 측..
OSI 7 계층 OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다. OSI 7 계층으로 나누는 이유 OSI 7 계층으로 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문입니다. 계층별의 기능과 통신 과정을 단계별로 나누어서 쉽게 이해할 수 있습니다. 또한, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문에 편리합니다. 1. 물리 계층 (Physical Layer) 주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송합니다. 리피터, 케이블, 허브 등 2. 데이터 링크 계층 (Data Link Layer) 물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와줍니다. Mac 주소를 통해 통신합니다. Frame에 M..