Network. REST(Representational State Transfer)

REST REST: Representational State Transfer RESTful API: REST를 기반으로 한 API REST 아키텍처 스타일의 설계 원칙을 준수하는 API Note. REST는 HTTP와 동일한 개념이 아니다. REST는 웹 API를 설계하기 위한 아키텍처 스타일이며, HTTP는 REST를 구현할 때 가장 많이 사용하는 프로토콜이다. 설계 원칙 Uniform interface 동일한 리소스에 대한 모든 API 요청은 동일하게 표시되어야 한다(리소스는 단일 URL을 통해 식별할 수 있도록 고유해야 한다). 서버는 표준 형식으로 정보를 전송하고, 형식이 지정된 리소스를 REST에서는 표현(Represent)라고 한다. ...

February 1, 2025

Network. Load Balancing

로드 밸런싱 가용성, 성능, 확장성을 높이기 위해 여러 서버에 네트워크 트래픽을 분산하는 방법이다. 특징 서버와 클라이언트 간의 트래픽을 지시하고 제어하여 가용성, 확장성, 보안 및 성능이 향상됨 가용성 여러 서버에 트래픽을 분배하여 한 서버가 다운되었을 때, 사용 가능한 서버로 트래픽을 리다이렉션한다. 애플리케이션 가동 중지 없이 서버 유지 관리 및 업그레이드 가능 성능 여러 서버에 요청을 분배하여, 네트워크 지연 시간을 줄임 물리적으로 더 가까운 서버로 리다이렉션 하여 지연 시간 단축 보안 트래픽 모니터링 공격 트래픽을 여러 서버로 리다이렉션 하여 영향 최소화 확장성 서버 수를 동적으로 추가하거나 제거하여 트래픽 변화에 유연하게 대응 가능 수평 확장(서버 추가), 수직 확장(성능 향상) 둘 다 가능 동작 원리 L4 로드 밸런싱 전송 계층에서 수행하는 로드 밸런싱, 패킷 헤더에 포함된 정보를 기반으로 TCP나 UDP 패킷을 기준으로 트래픽을 분배한다. ...

February 1, 2025

Network. DNS(Domain Name System)

DNS DNS: Domain Name System 도메인 이름을 IP 주소로 변환하는 시스템, 웹 사이트 주소를 IP주소로 변환해주는 역할 동작 방식 DNS는 계층 구조를 가지며, 요청을 처리하는 과정에서 필요한 DNS 서버를 순차적으로 탐색한다. 한 번 조회한 결과는 캐시에 저장되어 이후에는 같은 과정을 반복하지 않을 수 있다. 사용자가 google.com을 입력했다고 하면, 맥이 자동으로 로컬 DNS 서버에 요청을 보냄 → 만약 로컬 DNS 서버가 정보를 가지고 있지 않다면, 상위 DNS 서버로 요청을 보냄 1. 맥 → 로컬 캐시 확인 2. 로컬 DNS 서버(ISP DNS 서버) → 로컬 캐시 확인 3. 로컬 DNS 서버 → 재귀 DNS 서버에 요청 4. 재귀 DNS 서버 → 루트 DNS 서버 → TLD DNS 서버 → 권한 있는 네임서버 5. 권한 있는 네임서버 → IP 주소 반환 6. 재귀 DNS 서버 → 로컬 DNS 서버 → IP 주소 전달 7. 로컬 DNS 서버 → 맥에 최종 IP 주소 전달 8. 맥 → 구글 접속 재귀 DNS 서버(Recursive DNS Server)는 클라이언트를 대신하여 필요한 DNS 서버를 차례대로 조회하고 최종 결과를 반환하는 역할을 한다. ...

February 1, 2025

Network. DHCP(Dynamic Host Configuration Protocol)

개요 DHCP: Dynamic Host Configuration Protocol 디바이스가 네트워크에 접속하려면 고유한 IP주소가 필요하지만, 수동으로 설정하면 불편하고 충돌이 발생할 가능성이 있음, DHCP 서버는 자동으로 IP 주소와 서브넷 마스크, 게이트웨이와 같은 파라미터를 배정한다. 동작 방식 DORA Discovery 클라이언트가 네트워크에 연결되면, IP 주소가 필요하다고 브로드 캐스트 요청을 보냄 Offer DHCP 서버가 사용 가능한 IP 주소를 찾아서 클라이언트에게 제안 Request 클라이언트가 서버에게 응답함 Acknowledge DHCP 서버가 설정을 최종적으로 승인 임대 DHCP는 IP 주소를 영구적으로 할당하지 않고 일정 시간 동안 임대(Lease)하는 방식으로 관리한다. ...

February 1, 2025

Network. ARP(Address Resolution Protocol)

ARP ARP: Address Resolution Protocol 네트워크에서 IP 주소와 MAC 주소를 변환하는 프로토콜 동작 방식 데이터 전송 시, 송신자는 목적지의 MAC 주소를 알아야 한다. 송신 장치가 ARP Request를 브로드캐스트한다. 여기서 네트워크의 범위는 LAN, 즉 서브넷 내부 서브넷 마스크를 이용해서 공유기를 거쳐야 하는지 판단함. 이때 기본 게이트웨이는 이미 알고 있음 해당 IP 주소를 가진 장치가 ARP Reply를 유니캐스트로 응답한다. 이 정보를 ARP 캐시에 저장하여 다음 통신에서 요청하지 않는다 Note. ARP 캐시: IP 주소와 MAC 주소의 대응 관계를 임시로 저장한 캐시 메모리 ...

February 1, 2025

Network. UDP(User Datagram Protocol)

소개 UDP(User Datagram Protocol)는 전송 계층(L4)에서 동작하는 비연결형(Connectionless) 프로토콜이다. 연결 설정 없이 데이터를 빠르게 전송하며, 신뢰성보다 실시간성이 중요한 환경에서 주로 사용된다. UDP: User Datagram Protocol OSI 7계층에서 전송 계층(L4)에 해당 특징 장점 데이터 전송 전에 연결을 설정하지 않는 비연결형 서비스 지연 시간이 낮음 단순한 프로토콜 구조 헤더 크기가 작고, 오버헤드가 적음 IP 계층의 유니캐스트, 브로드캐스트, 멀티캐스트 전송에 사용할 수 있음 단점 신뢰성 부족 패킷 손실, 순서 오류, 중복이 발생해도 복구할 수 없음 애플리케이션 수준의 보완 필요 데이터그램 패킷 통신 각 데이터그램은 다른 데이터그램과 독립적으로 전달된다. UDP 자체에는 순서 번호, 재전송, 중복 제거 기능이 없으므로 도착 순서나 전달 성공을 보장하지 않는다. ...

January 31, 2025

Network. TCP(Transmission Control Protocol)

소개 TCP(Transmission Control Protocol)는 전송 계층(L4)에서 동작하는 연결 지향(Connection-oriented) 프로토콜이다. 신뢰성 있는 데이터 전송을 위해 연결 설정, 순서 제어, 오류 제어, 흐름 제어, 혼잡 제어 등의 기능을 제공한다. 특징 신뢰성 있는 연결형 서비스 제공 포트 번호를 이용한 다중화, 순서 제어, 오류 제어, 흐름 제어, 혼잡 제어 기능 제공 애플리케이션에는 메시지 경계를 보존하지 않는 연속된 바이트 스트림을 제공 TCP 헤더 TCP 세그먼트 앞부분에 위치한 데이터 전송을 위한 제어 정보를 포함하는 구조, 20바이트로 구성되며 최대 60바이트로 확장 가능 ...

January 31, 2025

Network. TCP vs. UDP

TCP vs. UDP TCP와 UDP는 모두 전송 계층에서 동작하는 프로토콜이지만, 연결 방식과 데이터 전송 방식이 다르다. TCP는 신뢰성을 우선으로 하고, UDP는 속도와 실시간성을 우선으로 설계되었다. 비교 구분 TCP UDP 연결 방식 연결 지향 (Connection-oriented) 비연결형 (Connectionless) 신뢰성 O X 순서 보장 O X 데이터 전송 방식 스트림(Stream) 데이터그램(Datagram) 흐름 제어 O X 혼잡 제어 O X 헤더 크기 20~60 Byte 8 Byte 속도 상대적으로 느림 상대적으로 빠름 언제 사용할까? TCP 웹 서비스 (HTTP, HTTPS) 이메일 (SMTP) 파일 전송 (FTP) 데이터의 정확성이 중요한 서비스 UDP DNS DHCP 실시간 스트리밍 VoIP 온라인 게임 빠른 응답이 중요한 서비스 선택 기준 데이터의 정확성과 순서가 중요하다면 TCP를 사용한다. 일부 패킷 손실이 발생하더라도 실시간성이 더 중요하다면 UDP를 사용한다.

January 31, 2025

Network. TCP Flow & Congestion Control

개요 TCP는 신뢰성 있는 데이터 전송을 위해 흐름 제어(Flow Control) 와 혼잡 제어(Congestion Control) 기능을 제공함. 흐름 제어는 송신자와 수신자 사이의 데이터 전송량을 조절하고, 혼잡 제어는 네트워크 전체의 혼잡을 방지하기 위한 메커니즘이다. 흐름 제어 (Flow Control) 송신자와 수신자의 처리 속도 차이로 인해 데이터가 손실되지 않도록 전송량을 조절하는 기능이다. 정지-대기 (Stop-and-Wait) 수신 측의 ACK를 받은 후에 다음 패킷을 전송하는 방식, 한 번에 하나의 패킷만을 전송할 수 있음 슬라이딩 윈도우 (Sliding Window) ACK를 이용해서 송신 데이터의 양을 조절하는 방식, ACK를 받지 않더라도 미리 정해진 패킷의 수 만큼 연속적으로 전송하는 방식 ...

January 31, 2025

Algorithm. Counter Clock Wise

소개 2차원 평면 위에서 두 선분이 주어졌을 때 두 선분의 교차 여부를 판단하는 알고리즘 아이디어 2차원 평면 상에 3개의 점이 있을 때, 이들을 이루는 방향을 계산해서 두 선분의 교차 여부를 판단한다. 여기서 말하는 3개의 점은 기준이 되는 선분의 양 끝점($P_1$, $P_2$라 하면)과, 나머지 선분의 한 끝점($Q_1$ 또는 $Q_2$)을 말한다. 총 4개의 점인데 왜 3개의 점이냐고 하냐면, 기준이 되는 선분의 양 끝점과 나머지 선분의 한 끝점을 이용해 각각 CCW를 계산하기 때문이다. ...

January 30, 2025