❓
물음표살인마 블로그
  • README
  • ALGORITHM
    • Sieve of Eratosthenes
    • Round Up
    • Binary Search
    • Union Find
    • Sorting Array
    • Lcm, Gcd
  • TechTalk Review
    • Template
  • Books
    • CS Note for Interview
      • Ch1. Design Pattern & Programming paradigm
        • 1.1.1 Singleton Pattern
        • 1.1.2 Factory Pattern
        • 1.1.4 Observer Pattern
        • 1.1.5 Proxty Pattern & Proxy Server
        • 1.1.8 Model-View-Controller Pattern
        • 1.2.1 Declarative and Functional Programming
        • 1.2.2 Object Oriented Programming
      • Ch2. Network
        • 2.2.1 TCP/IP Four-Layer Model
        • 2.2.1-1 TCP 3, 4 way handshake
        • 2.3 Network Devices L4, L7
        • 2.4.1 ARP, RARP
        • 2.4.2 Hop By Hop Communication
        • 2.4.3 IP Addressing Scheme
      • Ch3. Operating System
        • 3.1.1 Roles and Structure of Operating Systems
        • 3.2.1 Memory Hierarchy
        • 3.2.2 Memory Management
        • 3.3.1 Processes and Compilation Process
        • 3.3.3 Memory Structure of a Process
        • 3.3.4 Process Control Block (PCB)
        • 3.3.5 Multiprocessing
        • 3.3.6 Threads and Multithreading
        • 3.3.7 Shared Resources and Critical Sections
        • 3.3.8 Deadlock
        • 3.4 CPU Scheduling Algorithm
      • Ch4. Database
        • 4.1 Database Basic
        • 4.2 Normalization
        • 4.3 Transaction and Integrity
        • 4.4 Types of Databases
        • 4.5 Indexes
        • 4.6 Types of Joins
        • 4.7 Principles of Joins
      • Ch5. Data Structure
    • Learning the Basics of Large-Scale System Design through Virtual Interview Cases
      • 1. Scalability based on user counts(1/2)
      • 1. Scalability based on user counts(2/2)
      • 2.Back-of-the-envelope estimation
      • 3. Strategies for System Design Interviews
      • 4. Rate Limiter
      • 5. Consistent Hashing
      • 6. Key-Value System Design
      • 7. Designing a Unique ID Generator for Distributed Systems
      • 8. Designing a URL Shortener
      • 9. Designing a Web Crawler
      • 10. Notification System Design
      • 11. Designing a News Feed System
      • 12. Chat System Design
      • 13. AutoComplete
      • 14. Design YouTube
      • 15. Design Google Drive
      • Loadbalancer Algorithms
      • Cache tier
      • CDN, Content Delivery Network
      • Stateless Web tier
    • Computer System A programmer's perspective
    • Effective Java
      • Item 1. Consider Static Factory Methods Instead of Constructors
      • Item 2. Consider a Builder When Faced with Many Constructor Parameters
      • Item 3. Ensure Singleton with Private Constructor or Enum Type
      • Item 4. Enforce Noninstantiability with a Private Constructor
      • Item 5. Prefer Dependency Injection to Hardwiring Resources
      • Item 6. Avoid Creating Unnecessary Objects
      • Item 7. Eliminate Obsolete Object References
      • Item 8. Avoid Finalizers and Cleaners
      • Item 9.Prefer try-with-resources to try-finally
      • Item10. Adhering to General Rules When Overriding equals
        • Handling Transitivity Issues
        • Ensuring Consistency
      • Item11. Override hashCode When You Override equals
      • Item12. Always Override toString
        • Always Override toString
      • Item13. Override Clone Judiciously
      • Item14. Consider Implementing Comparable
      • Item15. Minimize the Accessibility of Classes and Members
      • Item16. Accessor Methods Over Public Fields
      • Item17. Minimize Mutability
      • Item18. Composition over inherentance
      • Item19. Design and Document for Inheritance, or Else Prohibit It
      • Item20. Prefer Interfaces to Abstract Classes
      • Item21. Design Interfaces with Implementations in Mind
      • Item22. Use Interfaces Only to define Types
      • Item23. Prefer Class Hierarchies to Tagged Classes
      • Item24. Favor Static Member Classes Over Non-Static
      • Item28. Use Lists Instead of Arrays
      • Item29. Prefer Generic Types
      • Item30. Favor Generic Methods
    • Head First Design Patterns
      • Ch1. Strategy Pattern
      • Ch2. Observer Pattern
        • Ver1. Ch2. Observer Pattern
      • Ch3. Decorator Pattern
        • Ch3. Decorator Pattern
      • Ch4. Factory Pattern
      • Ch5. Singleton Pattern
      • Ch6. Command Pattern
      • Ch7. Adapter and Facade Pattern
      • Ch8. Template Method Pattern
    • Digging Deep into JVM
      • Chapter 2. Java Memory Area & Memory Overflow
      • Chapter 3. Garbage Collector & Memory Allocation Strategy (1/2)
      • Chapter 3. Garbage Collector & Memory Allocation Strategy (2/2)
      • Chapter 5. Optimization Practice
      • Chapter 6. Class file structure
      • Chapter 8. Bytecode Executor Engine (1/2)
  • Interview Practices
    • Restful API Practices
      • Url Shortener API
      • Event Ticket Reservation API
      • Course Management API
      • Search posts by tags API
      • Online Code platform API
      • Simple Task Management API
      • Event Participation API
      • Review System API
      • Car management API
      • Online Library
    • Tech Review
      • if(kakao)
        • Kakao Account Cache Migration / if(kakao)2022
        • Improving the Anomaly Detection System for KakaoTalk Messaging Metrics / if(kakao) 2022
        • Standardizing API Case Handling Without Redeployment / if(kakaoAI)2024
        • JVM warm up / if(kakao)2022
    • Naver Computer Science
      • Process & Thread
      • TCP & UDP
      • Spring & Servlet
      • Filter & Interceptor & AOP
      • Equals() & ==
      • Dependency Injection
      • Object Oriented Programming
  • F-Lab
    • Week1
      • Client & Server
      • HTTP
      • TCP/UDP
      • REST API
      • Questions
        • Object Oriented Programming
        • HTTP
        • Process & Thread
        • Data Structure
    • Week2
      • OSI 7 layer
      • Web vs WAS
    • Week3
      • RDB vs NoSQL
      • RDB Index
      • Cache
      • Redis
      • Messaging Queue
    • Week4
      • Project - Ecommerce
    • Week5
      • ERD - 1
    • Week6
      • Ecommerce - 2
      • Role
      • pw hashing && Salt
      • CreatedAt, ModifiedAt
      • JWT
      • Copy of ERD - 1
    • Week7
      • Vault (HashiCorp Vault)
    • Week 8
      • Api Endpoints
    • Week10
      • Product Create Workflow
  • TOY Project
    • CodeMentor
      • Implementation of Kafka
      • Project Improvement (Architectural Enhancements)
      • Communication between servers in msa
  • JAVA
    • MESI protocol in CAS
    • CAS (Compare and Set)
    • BlockingQueue
    • Producer & Consumer
    • Synchronized && ReentrantLock
    • Memory Visibility
    • Checked vs Unchecked Exception
    • Thread
    • Batch delete instead of Cascade
    • Java Questions
      • Week 1(1/2) - Basic Java
      • Week 1(2/2) - OOP
      • Week 2(1/2) - String, Exception, Generic
      • Week2(2/2) Lambda, Stream, Annotation, Reflection
      • Week3(1/2) Collections
      • Week3(2/2) Threads
      • Week4 Java Concurrency Programming
      • Week5 JVM & GC
    • Java 101
      • JVM Structure
      • Java Compiles and Execution Method
      • Override, Overload
      • Interface vs Abstract Class
      • Primitive vs Object Type
      • Identity and equality
      • String, StringBuilder, StringBuffer
      • Checked Exceptions and Unchecked Exceptions
      • Java 8 methods
      • Try-with-reources
      • Strong Coupling and Loose Coupling
      • Serialization and Deserialization
      • Concurrency Programming in Java
      • Mutable vs Immutable
      • JDK vs JRE
  • SPRING
    • DIP. Dependency Inversion Principal
    • Ioc container, di practice
    • @Transactional
    • Proxy Pattern
    • Strategy Pattern
    • Template Method Pattern
    • using profile name as variable
    • Spring Questions
      • Spring Framework
      • Spring MVC & Web Request
      • AOP (Aspect-Oriented Programming)
      • Spring Boot
      • ORM & Data Access
      • Security
      • ETC
  • DATABASE
    • Enhancing Query Performance & Stability - User list
    • Ensuring Data Consistency, Atomicity and UX Optimization (feat.Firebase)
    • Redis: Remote Dictionary Server
    • Database Questions
      • Week1 DBMS, RDBMS basics
      • Week2 SQL
      • Week3 Index
      • Week4 Anomaly, Functional Dependency, Normalization
      • Week5 DB Transaction, Recovery
    • Normalization
      • 1st Normal Form
      • 2nd Normal Form
      • 3rd Normal Form
  • NETWORK
    • HTTP & TCP head of line blocking
    • HTTP 0.9-3.0
    • Blocking, NonBlocking and Sync, Async
    • Network Questions
      • Week1 Computer Network Basic
      • Week2(1/3) Application Layer Protocol - HTTP
      • Week2(2/3) Application Layer Protocol - HTTPS
      • Week2(3/3) Application Layer Protocol - DNS
      • Week3 Application Layer
      • Week4 Transport Layer - UDP, TCP
      • Week5 Network Layer - IP Protocol
    • Network 101
      • https://www.google.com
      • TCP vs UDP
      • Http vs Https
      • TLS Handshake 1.2
      • HTTP Method
      • CORS & SOP
      • Web Server Software
  • OS
    • Operating System Questions
      • Week1 OS & How Computer Systems Work
      • Week2(1/2) Process
      • Week2(2/2) Thread
      • Week3 CPU Scheduling
      • Week4 Process Synchronize
      • Week5 Virtual Memory
    • Operating System 101
      • Operating system
        • The role of the operating system
        • The composition of the operating system.
      • Process
        • In Linux, are all processes except the initial process child processes?
        • Zombie process, orphan process
        • (Linux) Daemon process
        • Process address space
        • Where are uninitialized variables stored?
        • Determination of the size of the Stack and Heap
        • Access speed of Stack vs Heap
        • Reason for memory space partitioning
        • Process of compiling a process
        • sudo kill -9 $CURRENT_PID
      • Thread
        • Composition of a thread's address space
      • Process vs Thread
        • Creation of processes and threads in Linux
      • Multiprocessing
        • Web Browser
        • Implementation of multiprocessing
        • Application areas of multiprocessing
      • Multithreading
        • Application areas of multithreading
      • Interrupt
        • HW / SW Interrupt
        • Method of handling interrupts
        • Occurrence of two or more interrupts simultaneously
      • Polling
      • Dual Mode
        • Reason for distinguishing between user mode and kernel mode
      • System call
        • Differentiation between system calls
        • Types of system calls
        • Execution process of a system call
      • Process Control Block (PCB)
        • PCB의 구조
        • 쓰레드는 PCB를 갖고 있을까?
        • 프로세스 메모리 구조
      • Context switching
        • Timing of context switching
        • Registers saved during context switching
        • Context switching in processes
        • Context switching in threads
        • Difference between context switching in processes and threads
        • Information of the current process during context switching
      • Interprocess Communication (IPC)
        • Cases where IPC is used
        • Process address space in IPC Shared Memory technique
        • Types of IPC
  • COMPUTER SCIENCE
    • Computer Architecture 101
      • 3 components of a computer
      • RAM vs ROM
      • CPU vs GPU
      • SIMD
      • Two's complement
      • Harvard Architecture vs. von Neumann Architecture
      • The structure of a CPU.
      • Instruction cycle (CPU operation method)
      • Instruction pipelining
      • Bus
      • Memory area
      • Memory hierarchy structure
        • Reason for using memory hierarchy structure
      • Cache memory
      • L1, L2, L3 Cache
      • Locality of reference (cache)
      • Fixed-point vs Floating-point
        • epresentation of infinity and NaN (Not a Number) in floating-point
      • RISC vs CISC
      • Hamming code
      • Compiler
      • Linking
      • Compiler vs Interpreter
      • Mutex vs Semaphore
      • 32bit CPU and 64bit CPU
      • Local vs Static Variable
      • Page
  • Programming Paradigm
    • Declarative vs Imperative
  • JPA, QueryDsl
    • why fetchResults() is deprecated
  • PYTHON
    • Icecream
  • FASTAPI
    • Template Page
  • LINUX
    • Template Page
  • DATA STRUCTURE
    • Counting Sort
    • Array vs Linked List
  • GIT, Github
    • git clone, invalid path error
  • INFRA
    • Template Page
  • AWS
    • Server Log Archive Pipeline
    • Image Processing using Lambda
  • DOCKER
    • Docker and VM
    • Python Executable Environment
    • Docker commands
  • docker-compose
    • Kafka, Multi Broker
  • KUBERNATES
    • !Encountered Errors
      • my-sql restarts
      • kafka producer: disconnected
    • Kubernetes Components
    • Helm
      • Helm commands
    • Pod network
    • Service network
      • deployment.yaml
      • services.yaml
    • Service type
      • Cluster IP
      • NodePort
    • service-name-headless?
    • kube-proxy
  • GraphQL
    • Template Page
  • WEB
    • Template Page
  • Reviews
    • Graphic Intern Review
    • Kakao Brain Pathfinder Review
    • JSCODE 자바 1기 Review
  • 😁Dev Jokes
    • Image
      • Plot twist
      • Priorities
      • SQL join guide
      • Google is generous
      • Genie dislikes cloud
      • buggy bugs
      • last day of unpaid internship
      • what if clients know how to inspect
      • its just game
      • how i wrote my achievement on resume
      • self explanatory
      • chr(sum(range(ord(min(str(not))))))
Powered by GitBook
On this page
  • 웹 서버 소프트웨어란?
  • 역할
  • Apache
  • Apache의 주요 특징
  • Apache의 사용 사례
  • Nginx
  • Nginx의 주요 특징
  • Nginx의 사용 사례
  • vs 웹 서버 애플리케이션
  • 역할 및 기능
  • 기술 스택 및 사용 사례
  • 처리 방식
  • OSI 7계층과의 라우팅의 연관성
  • L3 - 네트웤크 계층
  • L4 - 전송 계층
  • L7 - 애플리케이션 계층
  • 웹 서버 소프트웨어의 서버 간 라우팅 기능과 OSI 7계층
  • Layer 4 (전송 계층) 라우팅
  • Layer 7 (응용 계층) 라우팅
  1. NETWORK
  2. Network 101

Web Server Software

웹 서버 소프트웨어

웹 서버 소프트웨어란?

웹 서버 소프트웨어는 클라이언트(주로 웹 브라우저)로부터 HTTP 요청을 받아들이고, 이에 응답하는 역할을 합니다. 이러한 소프트웨어는 웹 사이트와 웹 애플리케이션의 백엔드에서 중요한 역할을 수행하며, 클라이언트가 요청한 콘텐츠를 전달하거나, 애플리케이션 서버와 상호작용하여 동적인 콘텐츠를 생성합니다.

역할

  • HTTP 요청 처리: 클라이언트가 보낸 HTTP 요청을 받아들이고, 적절한 응답을 생성하여 반환합니다.

  • 정적 파일 서비스: HTML, CSS, 이미지 등 정적인 파일을 클라이언트에게 전달합니다.

  • 동적 콘텐츠 처리: PHP, Python, Java와 같은 언어로 작성된 동적 콘텐츠를 처리합니다.

  • 로드 밸런싱: 여러 서버에 트래픽을 분산시켜 서버의 과부하를 방지합니다.

  • 보안 기능: HTTPS를 통해 데이터 암호화, SSL 인증서 관리, 접근 제어 등의 기능을 제공합니다.

Apache

Apache의 주요 특징

  • 모듈 기반 아키텍처: Apache는 모듈화된 아키텍처를 통해 사용자가 필요에 따라 기능을 추가하거나 제거할 수 있습니다. mod_rewrite, mod_ssl, mod_proxy 등 다양한 모듈이 제공됩니다.

  • 높은 확장성: 다양한 모듈을 추가함으로써 쉽게 확장할 수 있으며, 여러 프로그래밍 언어와 호환됩니다.

  • 광범위한 지원: 다양한 운영체제에서 사용할 수 있으며, 대부분의 웹 애플리케이션과 호환됩니다.

  • 광범위한 커뮤니티: 방대한 사용자 및 개발자 커뮤니티 덕분에 문제 해결 및 기술 지원이 용이합니다.

Apache의 사용 사례

Apache는 다양한 웹 사이트와 애플리케이션에서 사용됩니다. 특히 다음과 같은 경우에 적합합니다:

  • 정적 콘텐츠 서비스: HTML, CSS, 이미지와 같은 정적 파일을 효율적으로 제공할 수 있습니다.

  • 동적 콘텐츠 처리: PHP, Python, Perl 등 다양한 언어를 지원하며, CGI를 통해 동적 콘텐츠를 처리할 수 있습니다.

  • 복잡한 URL 재작성: mod_rewrite 모듈을 통해 복잡한 URL을 쉽게 관리할 수 있습니다.

Nginx

Nginx는 2004년에 Igor Sysoev에 의해 처음 개발된 고성능 웹 서버로, 주로 리버스 프록시 서버와 로드 밸런서로도 사용됩니다. Nginx는 비동기 이벤트 기반 아키텍처를 채택하여, 동시에 많은 클라이언트 요청을 처리할 수 있는 강점을 가지고 있습니다.

Nginx의 주요 특징

  • 비동기 처리: 비동기 이벤트 기반 아키텍처를 통해 높은 동시성 처리 성능을 자랑합니다.

  • 경량화: 메모리 사용량이 적으며, 높은 성능을 유지하면서도 리소스 소모가 적습니다.

  • 리버스 프록시 기능: Nginx는 리버스 프록시 서버로 동작하여 클라이언트 요청을 받아 적절한 백엔드 서버로 전달합니다. 이 과정에서 요청을 여러 서버로 분산시키거나, SSL/TLS 종료를 통해 HTTPS 트래픽을 처리하며, 백엔드 서버의 부하를 줄이는 역할을 합니다.

  • 정적 콘텐츠 서비스: 정적 파일을 매우 빠르게 서비스할 수 있으며, 이를 통해 성능을 극대화할 수 있습니다.

  • 로드 밸런싱: 트래픽을 여러 서버로 분산시키는 로드 밸런서로도 사용될 수 있습니다.

Nginx의 사용 사례

Nginx는 고성능이 요구되는 환경에서 주로 사용됩니다:

  • 정적 파일 서비스: 이미지, CSS, JS 파일 등 정적 콘텐츠를 매우 빠르게 제공할 수 있습니다.

  • 리버스 프록시 서버: 여러 애플리케이션 서버 앞단에서 클라이언트 요청을 중계하는 역할을 합니다.

  • 로드 밸런서: 여러 서버 간의 트래픽을 효율적으로 분산시킵니다.

  • API Gateway: 마이크로서비스 아키텍처에서 API 요청을 처리하는 게이트웨이 역할을 합니다.

vs 웹 서버 애플리케이션

웹 서버(Web Server)와 애플리케이션 서버(WAS)는 모두 웹 애플리케이션을 제공하는 데 중요한 역할을 하지만, 그 기능과 목적에 있어서 몇 가지 차이점이 있습니다.

역할 및 기능

  • 웹 서버(Web Server):

    • 주로 정적 콘텐츠를 처리합니다. 이는 HTML 파일, CSS, JavaScript, 이미지와 같은 정적인 파일을 클라이언트(웹 브라우저)에게 전달하는 역할을 합니다.

    • 동적 콘텐츠 요청이 들어올 경우, 이를 애플리케이션 서버나 CGI, PHP 등의 스크립트 언어로 전달하여 처리하게 합니다.

    • 웹 서버는 클라이언트로부터의 요청을 받아들여 적절한 파일이나 리소스를 반환하는 요청-응답 사이클을 관리합니다.

  • 애플리케이션 서버(WAS):

    • 동적 콘텐츠를 생성하고 관리하는 데 중점을 둡니다. WAS는 웹 서버가 전달한 요청을 받아서, 복잡한 비즈니스 로직을 처리하고, 데이터베이스와 상호작용하여 결과를 생성한 후, 이를 웹 서버로 전달합니다.

    • Java EE, Spring, .NET, Ruby on Rails 등의 프레임워크를 사용하여 웹 애플리케이션을 실행하며, EJB(Enterprise JavaBeans), Servlet, JSP와 같은 기술을 활용하여 웹 애플리케이션의 핵심 기능을 처리합니다.

    • WAS는 트랜잭션 관리, 데이터 소스 연결, 보안 관리, 세션 관리 등 서버 측 로직과 비즈니스 로직을 처리합니다.

기술 스택 및 사용 사례

  • 웹 서버(Web Server):

    • Apache, Nginx, Microsoft IIS 등이 대표적인 웹 서버 소프트웨어입니다.

    • 사용 사례로는 정적 웹 사이트나 간단한 웹 애플리케이션을 호스팅하는 경우가 있습니다. 예를 들어, 블로그, 포트폴리오 사이트, 마케팅 랜딩 페이지 등이 있습니다.

    • 또한, 프록시 서버로 활용되어, 클라이언트의 요청을 애플리케이션 서버로 전달하거나, 여러 서버 간의 로드 밸런싱을 수행할 수 있습니다.

  • 애플리케이션 서버(WAS):

    • Tomcat, JBoss, WebSphere, WebLogic 등이 대표적인 WAS입니다.

    • 사용 사례로는 복잡한 웹 애플리케이션이나 엔터프라이즈 애플리케이션을 처리하는 경우가 있습니다. 예를 들어, 전자 상거래 시스템, 금융 시스템, 대규모 ERP 시스템 등이 있습니다.

    • WAS는 서버 측에서 동적인 데이터를 생성하고, 이를 웹 서버와 클라이언트에게 전달하는 역할을 합니다.

처리 방식

  • 웹 서버(Web Server):

    • 웹 서버는 주로 HTTP 프로토콜을 통해 클라이언트의 요청을 처리합니다. 요청된 파일이 존재하면 이를 클라이언트에게 반환하고, 동적 요청은 애플리케이션 서버나 스크립트 엔진으로 전달하여 처리 결과를 반환받습니다.

    • 웹 서버는 요청된 리소스를 가능한 빠르게 반환하는 데 중점을 둡니다.

  • 애플리케이션 서버(WAS):

    • 애플리케이션 서버는 웹 서버로부터 받은 요청을 바탕으로 서버 측 비즈니스 로직을 실행합니다. 데이터베이스와 통신하여 필요한 데이터를 조회하고, 이를 비즈니스 로직에 따라 처리하여 동적 콘텐츠를 생성합니다.

    • 예를 들어, 사용자가 로그인 요청을 보낼 때, WAS는 데이터베이스에서 사용자의 정보를 조회하고, 인증 로직을 실행하여 성공 또는 실패 메시지를 생성합니다.

OSI 7계층과의 라우팅의 연관성

  • L3(네트워크 계층): IP 주소를 기반으로 패킷을 목적지까지 전달하는 기본적인 라우팅 기능을 수행합니다.

  • L4(전송 계층): TCP/UDP 포트 번호와 IP 주소를 기반으로 트래픽을 분산시키는 라우팅, 즉 L4 로드 밸런싱을 수행합니다.

  • L7(애플리케이션 계층): HTTP 헤더, URL 등 애플리케이션 레벨의 정보를 기반으로 한 고급 라우팅과 트래픽 분산, 즉 L7 로드 밸런싱 및 리버스 프록시 역할을 수행합니다.

L3 - 네트웤크 계층

  • 기능: IP 주소를 기반으로 한 라우팅.

  • 역할:

    • L3 라우터는 패킷이 출발지에서 목적지로 이동할 수 있도록 최적의 경로를 찾아 전달합니다.

    • IP 주소를 사용하여 네트워크 간에 데이터 패킷을 전달하며, 각 네트워크 장치(라우터)가 경로를 결정합니다.

    • 웹 서버와 관련된 L3 라우팅은 주로 인터넷 서비스 제공자(ISP) 네트워크나, 조직의 내부 네트워크에서 이루어지며, 웹 서버가 위치한 네트워크로 패킷을 전달하는 역할을 합니다.

  • 사용 예시: 클라이언트가 웹 서버에 접속하려고 할 때, 클라이언트의 요청은 여러 L3 라우터를 거쳐 웹 서버의 IP 주소로 도달합니다. 이 과정에서 각 라우터는 IP 주소를 기반으로 최적의 경로를 결정합니다.

L4 - 전송 계층

  • 기능: TCP/UDP 포트 번호와 IP 주소를 기반으로 한 라우팅 및 트래픽 분산.

  • 역할:

    • L4 로드 밸런서는 클라이언트 요청의 포트 번호와 IP 주소를 사용해 트래픽을 적절한 서버나 서비스로 전달합니다.

    • L4에서의 라우팅은 트래픽의 상태나 내용을 분석하지 않고, 전송 계층 정보만을 기반으로 라우팅을 결정합니다.

    • 이 계층에서는 클라이언트와 서버 간에 TCP 연결이 설정되며, 데이터를 세그먼트 단위로 나누고 오류를 검출 및 수정하여 신뢰성 있는 데이터 전송을 보장합니다.

  • 사용 예시: HTTP 요청(포트 80)과 HTTPS 요청(포트 443)을 받아들여 여러 웹 서버에 균등하게 분산시키는 로드 밸런싱. 예를 들어, 클라이언트의 TCP 연결을 여러 웹 서버에 분산하여 트래픽을 처리하는 경우입니다.

L7 - 애플리케이션 계층

  • 기능: 애플리케이션 레벨 정보(예: URL, HTTP 헤더, 쿠키 등)를 기반으로 한 라우팅.

  • 역할:

    • L7 로드 밸런서는 클라이언트 요청의 HTTP 헤더, URL 경로, 쿠키, 세션 정보 등을 분석하여 트래픽을 적절한 서버로 분배합니다.

    • L7 라우팅은 트래픽의 내용을 심층적으로 분석하여, 특정 요청(예: /api)을 처리할 서버나 서비스에 전달하는 기능을 수행합니다.

    • 이 계층에서는 콘텐츠 기반 라우팅(Content Switching), 고급 로드 밸런싱, 리버스 프록시, SSL 종료 등의 고급 기능이 제공됩니다.

  • 사용 예시: 특정 도메인(api.example.com)으로 오는 모든 요청을 API 서버로 전달하거나, 특정 URL 패턴(/login)을 처리하는 서버로 요청을 전달하는 경우. 예를 들어, Nginx가 리버스 프록시 역할을 하여, URL 경로에 따라 요청을 적절한 백엔드 서버로 분배하는 경우입니다.

웹 서버 소프트웨어의 서버 간 라우팅 기능과 OSI 7계층

Apache와 Nginx 같은 웹 서버 소프트웨어는 Layer 4(전송 계층)과 Layer 7(응용 계층)에서 라우팅 기능을 제공합니다.

Layer 4 (전송 계층) 라우팅

  • 동작 방식:

    • Layer 4에서의 라우팅은 주로 TCP/UDP 포트 정보를 기반으로 트래픽을 처리합니다. Nginx와 같은 웹 서버 소프트웨어는 이 계층에서 IP 주소와 포트 번호를 사용해 요청을 적절한 백엔드 서버로 라우팅합니다.

    • 예를 들어, 특정 포트로 들어오는 트래픽을 여러 백엔드 서버로 분산시켜 로드 밸런싱할 수 있습니다. Nginx의 경우 upstream 블록을 사용해 여러 서버를 묶어 로드 밸런싱을 수행할 수 있습니다.

Layer 7 (응용 계층) 라우팅

  • 동작 방식:

    • Layer 7에서의 라우팅은 HTTP URI, 헤더, 쿠키 등의 응용 계층 정보를 기반으로 요청을 처리합니다. 웹 서버는 이 계층에서 클라이언트의 요청을 분석하고, URI 경로, 서브도메인, HTTP 메서드 등에 따라 적절한 리소스로 요청을 라우팅하거나 다른 서버로 전달합니다.

    • L7 라우팅에서는 요청의 내용(예: URI 경로, 쿼리 파라미터 등)을 바탕으로 더 세분화된 라우팅이 가능합니다. 이 계층에서는 정적 파일을 제공하거나, 특정 URI 패턴에 따라 다른 서버로 요청을 전달하는 리버스 프록시 역할도 수행할 수 있습니다.

PreviousCORS & SOPNextOperating System Questions

Last updated 10 months ago