KR_Net_Basics - somaz94/DevOps-Engineer GitHub Wiki

넀튞워크 Ʞ볞 개념 & ì°žê³  자료

ì°žê³  자료 (References)


1. HTTP vs HTTPS

HTTP

HTTP는 웹 람띌우저와 서버 간에 데읎터륌 전송하는 방식을 정의한닀.

읎 데읎터는 HTML, 읎믞지, 비디였, 였디였 및 Ʞ타 형식의 컚텐잠륌 포핚할 수 있닀.

HTTP는 음반적윌로 암혞화되지 않은 텍슀튞로 전송된닀. 따띌서 볎안에 췚앜하닀.

HTTP의 동작 원늬는 닀음곌 같닀.

  • 큎띌읎얞튞가 서버에 HTTP 요청 메시지륌 볎낞닀.
    • 읎 요청 메시지는 HTTP 메서드(GET, POST, PUT, DELETE 등)와 요청 URI(Uniform Resource Identifier)로 구성된닀.
    • GET 메서드는 서버로부터 데읎터륌 요청하고, POST 메서드는 큎띌읎얞튞에서 서버로 데읎터륌 전송하는 등의 역할을 한닀.
  • 서버는 큎띌읎얞튞의 요청을 받고, 요청한 데읎터륌 찟아서 HTTP 응답 메시지륌 볎낞닀.
    • 읎 응답 메시지는 상태 윔드(200, 404, 500 등)와 응답 볞묞윌로 구성된닀.
    • 상태 윔드는 큎띌읎얞튞의 요청에 대한 성공 여부륌 나타낎며, 응답 볞묞은 요청한 데읎터륌 포핚한닀.
  • 큎띌읎얞튞는 서버로부터 받은 응답 메시지륌 핎석하고, 필요에 따띌 추가적읞 요청을 볎낌 수 있닀.
    • 예륌 듀얎, 큎띌읎얞튞가 웹 페읎지륌 요청한 겜우, 서버는 HTML, CSS, JavaScript 등의 파음을 포핚한 응답을 볎낎게 된닀.
    • 읎후 큎띌읎얞튞는 읎 파음듀을 받아서 웹 페읎지륌 렌더링한닀.

HTTPS

HTTPS는 HTTP의 볎안 버전읎닀.

HTTPS는 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security)륌 사용하여 데읎터륌 암혞화하고 읞슝서륌 사용하여 통신하는 서버의 신원을 확읞한닀.

HTTPS륌 사용하멎 믌감한 정볎륌 전송할 때 데읎터가 암혞화되므로 쀑간에서 누군가가 정볎륌 가로채서 읜을 수 없닀.

간닚히 말핮, HTTP는 암혞화되지 않은 읞터넷 연결을 사용하여 데읎터륌 전송하는 반멎, HTTPS는 암혞화된 연결을 사용하여 데읎터륌 전송하는 것읎닀.

HTTPS륌 사용하멎 데읎터의 Ʞ밀성곌 묎결성을 유지할 수 있윌며, 쀑간자 공격 및 닀륞 볎안 위협윌로부터 볎혞된닀.

HTTPS의 동작 원늬는 닀음곌 같닀.

  • 큎띌읎얞튞가 HTTPS로 볎혞된 서버에 접속한닀. 읎때 큎띌읎얞튞는 SSL/TLS륌 지원하는 람띌우저륌 사용핎알 한닀.
  • 큎띌읎얞튞는 서버의 공개킀륌 요청한닀. 읎륌 위핎 서버는 SSL/TLS 읞슝서륌 전송한닀. 읞슝서는 큎띌읎얞튞와 서버 간의 통신을 볎혞하Ʞ 위한 공개킀, 읞슝 Ʞꎀ의 정볎 등을 포핚한닀.
  • 큎띌읎얞튞는 서버의 읞슝서륌 검슝한닀. 읎륌 위핎 큎띌읎얞튞는 읞슝 Ʞꎀ의 공개킀륌 읎용하여 서버의 공개킀가 올바륞지 확읞한닀.
  • 큎띌읎얞튞는 서버의 공개킀륌 사용하여 섞션 킀륌 생성한닀. 읎 섞션 킀는 큎띌읎얞튞와 서버 간의 통신을 암혞화하Ʞ 위한 대칭킀읎닀.
  • 큎띌읎얞튞는 서버의 공개킀륌 사용하여 섞션 킀륌 암혞화하여 서버에 전송한닀.
  • 서버는 자신의 비공개킀륌 사용하여 섞션 킀륌 복혞화한닀.
  • 큎띌읎얞튞와 서버는 읎제 섞션 킀륌 사용하여 암혞화된 HTTPS 통신을 수행한닀.

Reference


2. OSI 7계잵 & TCP/IP 4계잵읎란?

OSI 7계잵곌 TCP/IP 4계잵은 둘 ë‹€ 넀튞워크 프로토윜 슀택의 구성 요소읎닀. 하지만 각각은 서로 닀륞 방식윌로 계잵을 구성하고 있닀.

OSI 7계잵곌 TCP/IP 4계잵을 비교핎볎멎, OSI 몚덞의 상위 3개 계잵읞 섞션 계잵, 표현 계잵, 응용 계잵은 응용 프로귞랚에 ꎀ렚된 Ʞ능을 닎당하고, 읎에 대한 표쀀 프로토윜듀읎 정의되얎 있닀.

반멎에 TCP/IP 몚덞은 응용 프로귞랚 계잵읎 TCP와 UDP 프로토윜을 포핚하고 있얎서, 응용 프로귞랚 계잵곌 튞랜슀포튞 계잵을 연결핎죌는 역할을 한닀.

섞션 계잵곌 표현 계잵은 데읎터의 형식 변환, 데읎터의 구조화, 압축 및 암혞화와 같은 Ʞ능을 닎당하는 반멎, TCP/IP 몚덞은 읎러한 Ʞ능을 닎당하는 계잵읎 없닀. 읎러한 Ʞ능듀은 응용 계잵에서 직접 처늬될 수 있닀.

OSI 7계잵

OSI 7계잵은 Open Systems Interconnection 몚덞을 의믞한닀. 읎 몚덞은 국제 표쀀화 Ʞ구(ISO)에서 개발한 넀튞워크 프로토윜 슀택의 ì°žì¡° 몚덞읎닀.

7계잵은 닀음곌 같읎 구성된닀:

  • 묌늬 계잵 (Physical Layer): 전Ʞ적, 묌늬적 신혞륌 전송하는 계잵읎닀.
    • 프로토윜 : Ethernet, Fast Ethernet, Gigabit Ethernet, Wi-Fi, Bluetooth, USB
  • 데읎터 링크 계잵 (Data Link Layer): 넀튞워크에서의 신뢰성 있는 데읎터 전송을 닎당한닀.
    • 프로토윜 : Ethernet, Token Ring, FDDI, HDLC, PPP, SLIP
  • 넀튞워크 계잵 (Network Layer): 데읎터륌 목적지로 전달하는 겜로륌 선택하고, 팚킷의 전송을 ꎀ늬한닀.
    • 프로토윜 : IP, ICMP, ARP, RARP, OSPF, BGP, IS-IS
  • 전송 계잵 (Transport Layer): 데읎터의 전송을 볎장하고, 였류 검출곌 복구륌 닎당한닀.
    • 프로토윜 : TCP, UDP, SCTP
  • 섞션 계잵 (Session Layer): 양 끝닚의 사용자 간의 연결을 ꎀ늬하고, 통신 방식을 제얎한닀.
    • 프로토윜 : NetBIOS, RPC, SQL
  • 표현 계잵 (Presentation Layer): 데읎터의 형식을 변환하거나, 암혞화, 복혞화 등의 처늬륌 수행한닀.
    • 프로토윜 : JPEG, MPEG, SMB
  • 응용 계잵 (Application Layer): 응용 프로귞랚에게 서비슀륌 제공하는 계잵읎닀.
    • 프로토윜 : HTTP, FTP, SMTP, POP3, IMAP, Telnet, SSH

TCP/IP 4계잵

TCP/IP 4계잵은 Transmission Control Protocol/Internet Protocol 몚덞을 의믞한닀. 읎 몚덞은 읞터넷 프로토윜 슀택의 ì°žì¡° 몚덞읎닀.

4계잵은 닀음곌 같읎 구성된닀.

  • 넀튞워크 읞터페읎슀 계잵 (Network Interface Layer): 묌늬적읞 넀튞워크륌 ꎀ늬한닀. 묌늬 계잵곌 데읎터 링크 계잵의 역할을 수행한닀. 읎 계잵에서는 넀튞워크 읞터페읎슀, 랜 칎드 등의 장비가 사용된닀.
  • 읞터넷 계잵 (Internet Layer): IP 죌소륌 사용하여 데읎터륌 전송한닀. 넀튞워크 계잵의 역할을 수행한닀. 읎 계잵에서는 IP 프로토윜읎 사용된닀.
  • 전송 계잵 (Transport Layer): TCP나 UDP 프로토윜을 사용하여 데읎터의 전송을 볎장하고, 였류 검출곌 복구륌 닎당한닀. OSI 몚덞의 전송 계잵에 핎당하는 역할을 수행한닀.
  • 응용 계잵 (Application Layer): 응용 프로귞랚에게 서비슀륌 제공하는 계잵읎닀. OSI 몚덞의 응용 계잵, 표현 계잵, 섞션 계잵의 역할을 수행한닀. 읎 계잵에서는 HTTP, FTP, SMTP 등의 프로토윜읎 사용된닀.

Reference


3. AS(Autonomous System)란?

AS란 Autonomous System(자윚 시슀템) 의 앜자로 í•˜ë‚˜ì˜ 넀튞워크 ꎀ늬자에 의핎서 ꎀ늬되는 띌우터의 집닚, í•˜ë‚˜ì˜ ꎀ늬 규정 아래서 욎영되는 띌우터의 집닚, 또는 하나의 ꎀ늬 전략윌로 구성된 띌우터의 집닚읎닀.

낎부용 띌우팅 프로토윜(Interior Routing Protocols)

  • AS 안에서 띌우터듀끌늬 띌우팅 정볎륌 죌고받Ʞ 위핎 띌우터가 사용하는 프로토윜
  • 종류: RIP, IGRP, EIGRP, OSPF

왞부용 띌우팅 프로토윜 (Exterior Routing Protocols)

  • AS와 AS간 왞부에서 서로 띌우팅 정볎륌 죌고 받Ʞ 위핎 띌우터가 사용하는 프로토윜
  • 종류: EGP, BGP (요슘은 EGP 볎닀 BGP륌 사용하는 추섞)

AS의 필요성

띌우터가 가지는 정볎륌 횚윚적윌로 ꎀ늬하고 읞터넷 서비슀륌 좀더 간펞하게 할수 있닀.

AS안에 있는 띌우터듀은 자신의 AS에 속핎있는 띌우터에 대한 낎부 넀튞워크 정볎만 알고 있닀가 왞부, 슉 AS 밖윌로 나갈때는 ê·ž AS의 묞지Ʞ 띌우터 ASBR (Autonomous System Boundary Router)에게 정볎륌 묌얎볞후 왞부 읞터넷윌로 나가게 되는 것읎닀.

묞지Ʞ 띌우터 ASBR은 자신의 AS와 읞접핎 있는 닀륞 AS에 대한 정볎륌 가지고 있윌멎서 자Ʞ AS에서 밖윌로 나가는 띌우터나 왞부 AS에서 자Ʞ AS쪜윌로 듀얎였는 띌우터에게 정볎륌 제공하는 역할을 한닀.

읎러한 시슀템 때묞에 띌우터듀은 읞터넷에 접속하더띌도 전 섞계의 몚든 넀튞워크에 대한 정볎륌 ë‹€ 가지고 있을 필요없읎 닚지 자신읎 속한 AS에 대한 정볎만 가지멎 되는 것읎닀.

읎때 띌우터가 AS 낎부에서 사용하는 띌우팅 프로토윜을 낎부용 띌우팅 프로토윜(Interior Routing Protocols) 또는 IGP 띌고 하고, AS 간에, 슉 AS 왞부에서 서로 띌우팅 정볎륌 죌고 받Ʞ 위핎 사용 하는 띌우팅 프로토윜을 왞부용 띌우팅 프로토윜 (Exterior Routing Protocols) 또는 EGP 띌고 한닀.

Reference


4. BGP(Border Gateway Protocol)란?

BGP는 Border Gateway Protocol읎닀. AS의 가장자늬에 위치한 BG(Border Gateway)ë“€ 간의 프로토윜을 BGP띌고 한닀.

따띌서 몚든 BGP 프로토윜읎 서로 닀륞 AS듀을 연결핎죌는 것읎아니닀.

귞래서 묌론 닀륞 AS듀에 속한 BG간의 연결에도 ꎀ여하지만, 같은 AS 낎의 BG 간의 연결에도 ꎀ여한닀. 읎러한 역할의 찚읎에 따띌 BGP는 크게 두가지로 구분된닀.

iBGP

서로 같은 AS 상의 Border Gatewayë“€ 끌늬의 연결을 닎당하는 BGP

eBGP

서로 닀륞 AS 상의 Border Gatewayë“€ 끌늬의 연결을 닎당은 BGP, inter-AS 띌우팅읎닀.


또한 BGP 띌우터는 AS 플얎링 계앜에 섀정된 의사 결정 알고늬슘곌 정책을 사용핎서 프늬픜슀 선얞을 통핎 수집하는 데읎터륌 분석하고 ê·ž 시점에 각 팚킷 슀튞늌을 볎낌 최적의 플얎륌 선택한닀.

대부분의 겜우 넀튞워크 홉의 수가 가장 적은 겜로가 선택되지만, 혌잡곌 지연윌로 읞핎 더 ꞎ 겜로의 속도가 더 빠륌 수도 있닀.

튞래픜읎 AS륌 통곌핎 읎동하여 닀륞 AS에 연결된 닀륞 BGP 띌우터에 도달하멎 데읎터가 목적지 사읎튞가 위치한 AS에 도달할 때까지 읎 프로섞슀가 반복된닀.  TCP 포튞 179번을 사용하고 유니캐슀튞 방식윌로 교환한닀.

IGP와 닀륎게 직접 연결되얎 있지 않은 장비와 BGP Peer(Neighbor) ꎀ계륌 형성하는 것읎 가능하닀.

넀튞워크 통신방식

유니캐슀튞(1:1)

  • 출발지와 목적지가 정확핎알하는 음대음 통신
  • 송신 녾드 하나가  수신녞드 하나에 데읎터륌 전송하는 음대음 방식

람로드캐슀튞(1:All)

  • 낎가 속한 넀튞워크 낎의 몚든 장비듀곌 통신을 하는 방식
  • 개별 PC의 성능에도 영향을 믞치고, 넀튞워크 전첎적읞 튞래픜에도 영향을 믞칚

멀티캐슀튞(1:Group)

  • 특정 음부에게 정볎륌 동시에 볎낎알 하는 겜우 사용 (ex 10명쀑 8명)
  • 선택적윌로 데읎터륌 전송하여 불필요한 튞래픜읎나 성능저하륌 막음

애니캐슀튞(1:1)

  • 가장 가까욎 녞드와 통신하는 방식
  • 유니캐슀튞와 찚읎점은 송신 녞드가 넀튞워크에 연결된 수신 가능한 녾드 쀑 한 녞드에만 데읎터륌 전송

Reference


5. HTTP 메서드(Method)란?

HTTP 메서드는 큎띌읎얞튞가 웹 서버에게 ì–Žë–€ 종류의 동작을 원하는지륌 나타낮는 방법읎닀. 각 메서드는 특정한 종류의 작업을 수행하도록 섀계되었닀.

GET

  • 죌로 서버에서 정볎륌 조회할 때 사용한닀. (Get)
  • GET 요청은 데읎터륌 변겜하거나 생성하는 데 사용되지 않윌며, 였직 데읎터륌 읜는 데만 사용된닀.

POST

  • 죌로 서버에 늬소슀륌 추가할 때 사용한닀. (Create)
  • 큎띌읎얞튞가 서버의 늬소슀륌 생성하렀고 할 때 사용한닀.
  • POST 요청은 서버에게 데읎터륌 볎낎고, ê·ž 데읎터륌 사용핎서 새로욎 늬소슀륌 생성하거나 Ʞ졎 늬소슀륌 업데읎튞하띌는 요청을 한닀.

HEAD

  • GET 요청곌 거의 유사하지만, 싀제 볞묞의 낎용 없읎 HTTP 헀더 정볎만을 반환한닀. (No Body)
  • response에 Body가 없닀.
  • 늬소슀륌 가젞였지 않고도 귞에 대한 정볎륌 얻을 수 있얎 횚윚적읎닀.

PUT

  • 특정 URL에 대응하는 늬소슀의 전첎 낎용을 갱신하는 데 사용한닀. (Update)
  • 만앜 핎당 URL에 늬소슀가 읎믞 졎재한닀멎 PUT 요청은 ê·ž 늬소슀륌 새로욎 것윌로 대첎하고, 만앜 늬소슀가 졎재하지 않는닀멎 새로욎 늬소슀륌 생성한닀.

DELETE

  • 특정 늬소슀륌 제거하는 데 사용된닀.
  • DELETE 요청은 성공했을 때 볎통 응답 볞묞에 데읎터륌 포핚하지 않는닀.

PATCH

  • 소슀의 부분적읞 변겜을 적용하는 데 사용된닀.
  • PATCH 요청은 음부만 변겜하Ʞ 때묞에 PUT 요청볎닀 더 횚윚적음 수 있닀.

OPTIONS

  • 늬소슀가 지원하는 메서드의 종류륌 확읞하는 데 사용된닀.
  • OPTIONS 요청은 "Allow"띌는 헀더와 핚께 핎당 늬소슀에서 사용 가능한 HTTP 메서드 목록을 반환한닀.

TRACE

  • 죌로 진닚 목적윌로 사용된닀.
  • TRACE 요청은 큎띌읎얞튞에서 서버로 전송되며, 읎 곌정에서 ì–Žë–€ 변겜읎나 추가가 읎룚얎지는지륌 확읞하는데 사용될 수 있닀. TRACE 요청읎 서버에 도달하멎, 서버는 요청을 귞대로 응답 볞묞윌로 반환한닀.
  • 읎륌 통핎 큎띌읎얞튞는 요청읎 얎떻게 처늬되었는지 확읞할 수 있닀.

CONNECT

  • 죌로 넀튞워크 터널을 만드는 데 사용된닀. 가장 흔한 예는 HTTPS 통신을 위한 SSL 터널읎닀.
  • 큎띌읎얞튞가 CONNECT 메서드륌 사용하멎, 웹 서버는 목적지 서버와의 넀튞워크 연결을 섀정하고, 큎띌읎얞튞와 목적지 서버 사읎에서 데읎터륌 늎레읎하게 된닀.

Reference


6. HTTP Status Code란?

HTTP 상태 윔드(HTTP Status Code)는 HTTP 응답에서 서버가 큎띌읎얞튞에게 요청 처늬의 결곌륌 전달하는 방법읎닀.

읎 윔드는 섞 자늬 숫자로 구성되며, 각각읎 의믞하는 바는 닀음곌 같닀.

  • 1xx (Informational): 요청읎 수신되었고 프로섞슀가 계속되는 쀑임을 나타낞닀.
  • 2xx (Successful): 요청읎 성공적윌로 수신, 읎핎, 귞늬고 수용되었음을 나타낞닀. 가장 음반적읞 윔드는 200 OK로, 요청읎 성공적윌로 처늬되었음을 나타낞닀.
  • 3xx (Redirection): 큎띌읎얞튞는 요청을 완료하Ʞ 위핎 추가 동작을 췚핎알 핚을 나타낞닀. 예륌 듀얎, 301 Moved Permanently는 요청한 늬소슀의 URI가 변겜되었음을 나타낎며, 새로욎 URI륌 큎띌읎얞튞에게 제공한닀.
  • 4xx (Client Error): 큎띌읎얞튞의 요청읎 잘못되었거나 완료할 수 없음을 나타낞닀. 가장 흔히 볌 수 있는 윔드는 404 Not Found로, 요청한 늬소슀륌 서버에서 찟을 수 없을 때 반환된닀.
  • 5xx (Server Error): 서버가 유횚한 요청을 처늬하는 데 싀팚했음을 나타낞닀. 500 Internal Server Error는 서버에 묞제가 있음을 나타낮는 가장 음반적읞 윔드읎닀.

Reference


7. DNS란?

DNS(Domain Name System)는 읞터넷에서 사용되는 í˜žìŠ€íŠž 읎늄(도메읞 읎늄)을 싀제 IP 죌소로 변환하는 시슀템 읎닀.

Root DNS 서버

Root DNS 서버는 읞터넷에서 가장 쀑요한 DNS 서버 쀑 하나읎닀. 읎 서버는 전 섞계적윌로 분산되얎 있윌며, 읞터넷 상의 몚든 도메읞 읎늄에 대한 최상위 DNS 서버로 읞터넷 전첎 DNS 시슀템의 Ʞ쎈륌 닎당한닀.

귞늬고 룚튞 도메읞 읎늄을 ꎀ늬한닀. 룚튞 도메읞 읎늄은 읞터넷에서 사용되는 도메읞 읎늄 쀑 최상위 도메읞 읎늄읎닀. 룚튞 도메읞 읎늄은 .(점)윌로 표시되며, 예륌 듀얎 볎자멎 www.aaa.com읎띌는 도메읞 읎늄의 의 룚튞 도메읞 읎늄은 .com읎닀.

Root DNS 서버는 TLD DNS 서버의 IP 죌소륌 알고 있닀. 따띌서 사용자가 www.aaa.com읎띌는 도메읞 읎늄윌로 쿌늬륌 수행할 때, 뚌저 Root DNS 서버에 핎당 도메읞 읎늄의 TLD DNS 서버가 얎디에 있는지 묌얎볞닀. 귞늬고 Root DNS 서버는 TLD DNS 서버의 IP 죌소륌 반환하고, 읎후 사용자의 DNS 쿌늬는 핎당 TLD DNS 서버로 전달된닀.

슉, Root DNS 서버는 읞터넷 상의 몚든 DNS 서버에 대한 출발점읎며, 읞터넷 전첎 DNS 시슀템의 핵심 역할을 닎당한닀. Root DNS 서버는 전 섞계적윌로 분산되얎 있윌며, ICANN(Internet Corporation for Assigned Names and Numbers)에서 ꎀ늬된닀.

TLD DNS 서버(Top-Level Domain)

TLD DNS 서버는 읞터넷에서 사용되는 최상위 도메읞 읎늄(Top-Level Domain)을 ꎀ늬하는 DNS 서버읎닀. .com, .org, .edu 등곌 같읎 최상위 도메읞 읎늄에 대한 DNS 서버로, 각 도메읞 읎늄의 DNS 쿌늬륌 처늬한닀.

TLD DNS 서버는 각 TLD 도메읞 읎늄에 대한 IP 죌소와 Ʞ타 DNS 레윔드 정볎륌 ꎀ늬한닀. 예륌 듀얎, .com 도메읞 읎늄에 대한 TLD DNS 서버는 .com 도메읞 읎늄에 대한 몚든 DNS 쿌늬륌 처늬합니닀. 읎러한 DNS 쿌늬는 핎당 도메읞 읎늄에 대한 IP 죌소륌 찟는 것읎 죌된 목적읎닀.

TLD DNS 서버는 또한 ICANN(Internet Corporation for Assigned Names and Numbers)에 등록되얎 있윌며, 핎당 TLD 도메읞 읎늄을 사용하는 도메읞 읎늄 등록 업첎(Domain Name Registrar)와 협력하여 핎당 도메읞 읎늄에 대한 정볎륌 업데읎튞한닀.

TLD DNS 서버는 Root DNS 서버로부터 요청된 DNS 쿌늬륌 받는닀. Root DNS 서버는 TLD DNS 서버의 IP 죌소륌 알고 있윌며, 읎륌 통핎 사용자가 요청한 도메읞 읎늄의 TLD DNS 서버륌 찟아서 DNS 쿌늬륌 전달한닀. TLD DNS 서버는 읎후 핎당 도메읞 읎늄의 Second-Level DNS 서버륌 찟아서 DNS 쿌늬륌 전달한닀.

따띌서, TLD DNS 서버는 읞터넷 상의 몚든 도메읞 읎늄에 대한 DNS 쿌늬 처늬에서 쀑요한 역할을 닎당합니닀. TLD DNS 서버는 전 섞계적윌로 분산되얎 있윌며, 도메읞 읎늄 등록 업첎와 ICANN에 의핎 ꎀ늬된닀.

Second-Level DNS 서버(Authoritative DNS 서버)

Second-Level DNS는 DNS의 핵심 요소 쀑 하나로, 특정 도메읞 읎늄에 대한 IP 죌소 정볎륌 제공하는 DNS 서버읎닀.

음반적윌로 도메읞/혞슀팅 업첎의 넀임서버륌 말한닀.

또한 핎당 도메읞 읎늄에 대한 정볎륌 가지고 있는 최종적읞 답변자 역할을 한닀. 예륌 듀얎 aaa.com 도메읞 읎늄에 대한 IP 죌소륌 알고 있는 DNS 서버가 있닀멎, 핎당 DNS 서버는 Second-Level DNS 서버가 된닀.

DNS 레윔드

DNS record는 Domain Name System(DNS)에서 도메읞 읎늄곌 핎당 도메읞곌 연결된 IP 죌소륌 맀핑하는 데 사용되는 데읎터 항목읎닀. DNS 레윔드는 도메읞 읎늄곌 ꎀ렚된 정볎륌 닎고 있윌며, DNS 쿌늬륌 수행하는 서버에 의핎 사용된닀.

DNS 레윔드의 유형은 닀양하닀. 닀음은 음반적읞 DNS 레윔드 유형의 몇 가지 예읎닀.

  • A 레윔드: 도메읞 읎늄을 IP 죌소로 맀핑한닀. 읎 레윔드는 도메읞 읎늄을 IP 죌소로 핎석하는 데 사용된닀..
  • CNAME 레윔드: 도메읞 읎늄을 닀륞 도메읞 읎늄윌로 맀핑한닀.. 읎 레윔드는 도메읞 읎늄을 닀륞 도메읞 읎늄윌로 변겜하는 데 사용된닀..
  • MX 레윔드: 도메읞 읎늄곌 연결된 메음 서버의 우선 순위륌 지정한닀. 읎 레윔드는 읎메음을 전송할 때 도메읞 읎늄곌 연결된 메음 서버륌 찟는 데 사용된닀.
  • NS 레윔드: 도메읞 읎늄에 대한 권한 DNS 서버륌 식별한닀. 읎 레윔드는 DNS 쿌늬가 수행될 때 도메읞 읎늄에 대한 권한 DNS 서버륌 찟는 데 사용된닀.
  • TXT 레윔드: 도메읞 읎늄곌 연결된 텍슀튞 정볎륌 포핚된닀. 읎 레윔드는 볎안, 읞슝 등 닀양한 목적윌로 사용된닀.
  • SPF(Sender Policy Framework) 레윔드: 읎메음 슀팞을 방지하Ʞ 위핎 도메읞 읎늄의 읎메음 발송 권한을 확읞하는 데 사용된닀. SPF 레윔드는 도메읞 읎늄을 검색하여 읎메음 발송 권한을 확읞하고, 읎륌 통핎 도메읞 읎늄의 읎메음 슀팞을 방지한닀.
  • SRV(Service) 레윔드: DNS 서버가 제공하는 특정 서비슀의 위치륌 식별하는 데 사용된닀. 읎 레윔드는 웹 서비슀, VoIP, FTP 등곌 같은 특정 서비슀의 위치륌 찟는 데 사용된닀.
  • AAAA 레윔드: IPv6 죌소륌 도메읞 읎늄에 맀핑하는 데 사용된닀. IPv6는 IPv4의 죌소 고갈 묞제륌 핎결하Ʞ 위핎 개발된 새로욎 IP 죌소 첎계읎닀.
  • SOA(Start of Authority) 레윔드: 도메읞 읎늄에 대한 Ʞ볞 섀정을 제공한닀. 읎 레윔드는 도메읞 읎늄의 소유자, DNS 서버, 캐시 된 정볎의 유횚 êž°ê°„ 등의 정볎륌 제공한닀.
  • PTR(Pointer) 레윔드: 읎 레윔드는 IP 죌소륌 도메읞 읎늄윌로 맀핑하는 데 사용된닀. A 레윔드가 도메읞 읎늄을 IP 죌소로 맀핑하는 반멎, PTR 레윔드는 IP 죌소륌 도메읞 읎늄윌로 맀핑한닀. PTR 레윔드는 역 DNS (reverse DNS)띌고도 하며, 죌로 읎메음 서버에서 사용된닀.. 읎메음 서버에서는 전송된 읎메음의 IP 죌소륌 역 DNS 쿌늬로 검색하여 핎당 IP 죌소가 신뢰할 수 있는 소슀에서 전송되었는지 확읞할 수 있닀.

Reference


8. Service Mesh vs API Gateway

Service Mesh

Service Mesh는 분산 애플늬쌀읎션에서 서비슀 간의 통신을 ꎀ늬하Ʞ 위한 읞프띌슀튞럭처읎닀. 마읎크로서비슀 아킀텍처에서는 여러 개의 작은 서비슀로 구성된 애플늬쌀읎션을 구축하게 되는데, 읎러한 작은 서비슀듀은 서로 통신하멎서 애플늬쌀읎션을 구성한. 읎때, 서비슀 간의 통신은 넀튞워크 상에서 발생하Ʞ 때묞에 읎륌 ꎀ늬하Ʞ 위한 읞프띌슀튞럭처가 필요하닀.

Service Mesh는 읎러한 서비슀 간의 통신을 추상화하여 ꎀ늬한닀. 슉, 서비슀 간의 통신을 위한 넀튞워크 읞프띌륌 쉜게 ꎀ늬할 수 있도록 도와쀀닀. Service Mesh는 분산 추적, 볎안, 로깅, 부하 분산 등의 Ʞ능을 제공하며, 읎러한 Ʞ능듀은 서비슀 간의 통신을 안전하고 횚윚적윌로 처늬할 수 있도록 도와쀀닀.

Service Mesh륌 구현하는 방법에는 여러가지가 있지만, 음반적윌로는 사읎드칎 팹턮(Sidecar Pattern)을 사용한닀. 사읎드칎 팚턎은 각 서비슀 읞슀턎슀에 사읎드칎 컚테읎너륌 배치하여, 읎륌 통핎 서비슀 간의 통신을 ꎀ늬한닀. 읎때, 사읎드칎 컚테읎너는 Service Mesh 솔룚션에서 제공하는 프록시나 에읎전튞로 구성된닀.

Istio 또는 Linkerd와 같은 서비슀 메시는 Kubernetes 환겜에서 자죌 사용된닀.

Service Mesh의 죌요 Ʞ능
  • 분산 추적: 서비슀 간의 통신을 추적하고 분석하여, 묞제 발생 시 신속한 대응읎 가능하닀.
  • 볎안: 튞래픜 암혞화, 읞슝, 읞가, ì ‘ê·Œ 제얎 등의 Ʞ능을 제공하여, 볎안성을 향상시킚닀.
  • 로깅: 서비슀 간의 통신 낎역을 Ʞ록하여, 묞제 핎결에 도움을 쀀닀.
  • 부하 분산: 튞래픜을 여러 서비슀 읞슀턎슀로 분산시쌜, 안정적읞 서비슀 제공을 가능하게 한닀.

죌요 Service Mesh 솔룚션윌로는 Istio, Linkerd, Consul 등읎 있닀. 읎러한 솔룚션을 사용하멎, Service Mesh륌 쉜게 구현하고 욎영할 수 있닀.

API Gateway

API Gateway는 마읎크로서비슀 아킀텍처에서 여러 개의 서비슀륌 하나의 API로 녞출시킀는 역할을 하는 서비슀읎닀. 큎띌읎얞튞는 API Gateway에 HTTP 요청을 볎낎멎, API Gateway는 낎부의 여러 서비슀륌 혞출하고, ê·ž 결곌륌 적절히 변환하여 큎띌읎얞튞에게 전달한닀.

API Gateway는 죌요 Ʞ능
  • 읞슝곌 읞가: 큎띌읎얞튞의 요청을 검슝하고, 사용자 읞슝곌 권한 검사륌 수행한닀. 읎륌 통핎 볎안적읞 잡멎에서 안전한 API륌 제공할 수 있닀.
  • 로드 밞런싱: 여러 개의 서비슀륌 처늬할 때, 요청을 분산하여 각각의 서비슀에 고륎게 전달한닀. 읎륌 통핎 각 서비슀의 부하륌 분산시킬 수 있고, 가용성을 향상시킬 수 있닀.
  • 캐싱: 반복적읞 요청에 대핮 빠륞 응답을 제공하Ʞ 위핎, API Gateway는 캐시륌 활용하여 서비슀의 부하륌 쀄읞닀.
  • 로깅곌 몚니터링: API Gateway는 큎띌읎얞튞의 요청 및 서비슀의 응답 등을 Ʞ록하고 몚니터링할 수 있닀. 읎륌 통핎 묞제 발생 시 슉각적윌로 대응할 수 있닀.
  • API ꎀ늬: API Gateway는 API륌 ꎀ늬하고 버전을 ꎀ늬할 수 있닀. 새로욎 버전의 API륌 배포하거나, 읎전 버전의 API륌 제거할 수 있닀.

API Gateway는 마읎크로서비슀 아킀텍처에서 필수적읞 서비슀로, 닀양한 Ʞ능곌 유연성을 제공하여 애플늬쌀읎션을 횚윚적윌로 ꎀ늬하고 욎영할 수 있닀.

Service Mesh와 Api Gateway의 찚읎점

API Gateway와 Service Mesh는 몚두 분산 애플늬쌀읎션에서 서비슀 간의 통신을 ꎀ늬하Ʞ 위한 도구읎닀. 하지만 둘은 목적곌 구현 방법에서 찚읎가 있닀.

API Gateway는 큎띌읎얞튞와 백엔드 서비슀 간의 통신을 쀑개하는 서버읎닀. 큎띌읎얞튞는 API Gateway륌 통핎 백엔드 서비슀에 요청을 볎낎며, API Gateway는 핎당 요청을 수신하여 필요한 읞슝, 읞가, 로깅 등의 처늬륌 수행한 뒀에 백엔드 서비슀에 전달한닀. API Gateway는 닚음 진입점(Single Entry Point)을 제공하여 큎띌읎얞튞와 백엔드 서비슀 간의 통신을 간소화하고, 볎안곌 몚니터링을 향상시킬 수 있닀.

반멎에, Service Mesh는 분산 애플늬쌀읎션 낎부의 서비슀 간의 통신을 ꎀ늬한닀. 각 서비슀 읞슀턎슀에 사읎드칎 컚테읎너륌 배치하여, 읎륌 통핎 서비슀 간의 통신을 쀑개한닀. Service Mesh는 분산 추적, 볎안, 로깅, 부하 분산 등의 Ʞ능을 제공하여 서비슀 간의 통신을 안전하고 횚윚적윌로 처늬할 수 있도록 도와쀀닀.

따띌서, API Gateway는 큎띌읎얞튞와 백엔드 서비슀 간의 통신을 쀑개하는 서버로서, 왞부에서 액섞슀하는 서비슀륌 ꎀ늬하고 볎혞하는데 사용되며, Service Mesh는 분산 애플늬쌀읎션 낎부의 서비슀 간의 통신을 ꎀ늬하여, 분산 애플늬쌀읎션을 볎혞하고 안정적윌로 욎영하는데 사용된닀.

Reference


9. Reverse Proxy란?

역방향 프록시(Reverse Proxy) 는 웹 서버 앞에 앉아 큎띌읎얞튞(예: 웹 람띌우저) 요청을 웹 서버에 전달하는 서버의 한 유형읎닀. 역방향 프록시와 순방향 프록시의 죌요 찚읎점은 서비슀의 방향에 있닀. 순방향 프록시는 사용자와 읞터넷의 방대한 자원 사읎의 게읎튞웚읎 역할을 하는 반멎, 역방향 프록시는 읞터넷곌 더 작은 서버 귞룹 사읎의 게읎튞웚읎 역할을 한닀.

역방향 프록시의 Ʞ능

  • 로드 밞런싱(Load Balancing): 큎띌읎얞튞 요청을 여러 서버에 분산하여 로드 균형을 조정하여 늬소슀의 속도와 안정성을 향상시킚닀.
  • Ꞁ로벌 서버 로드 밞런싱(Global Server Load Balancing): 여Ʞ에는 큎띌읎얞튞의 지늬적 위치륌 Ʞ반윌로 가장 가까욎 서버로 큎띌읎얞튞 요청을 띌우팅하여 사용자 응답 시간을 향상시킀는 작업읎 포핚된닀.
  • SSL 암혞화(SSL Encryption): SSL 읞슝서 ꎀ늬륌 개별 서버에서 ꎀ늬하는 대신 한 곳에서 쀑앙 집쀑화한닀.
  • 윘텐잠 캐싱(Caching Content): 웹 서버에서 캐시된 정적 및 동적 윘텐잠륌 제공하여 서버 로드륌 쀄읞닀.
  • 압축(Compression): 파음을 큎띌읎얞튞에 볎낎Ʞ 전에 압축하여 응답 대역폭을 쀄읞닀.
  • 볎안 및 익명성(Security and Anonymity): 백엔드 서버의 특성곌 출처륌 숚겚 볎안을 제공한닀.

역방향 프록시 도구의 예: Nginx

Nginx는 웹 서버, 로드 밞런서, HTTP 캐시 및 메음 프록시로 사용되는 것 왞에도 섞계에서 가장 읞Ʞ 있는 역방향 프록시 서버 쀑 하나읎닀. 고성능, 안정성, 풍부한 Ʞ능 섞튞, 간닚한 구성 및 낮은 늬소슀 소비로 잘 알렀젞 있닀.

http {
    upstream backend {
        server backend1.example.com weight=5;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}
  • upstream backend 는 서로 닀륞 가쀑치륌 갖는 서버 백엔드 귞룹을 정의한닀(지정되지 않은 겜우 각각의 가쀑치는 동음핚). 읎륌 통핎 Nginx는 튞래픜을 닀륞 서버로 전달할 뿐만 아니띌 가쀑치가 더 높은 서버에 더 많은 튞래픜을 할당핚윌로썚 로드륌 분산할 수 있닀.
  • proxy_pass 지시얎는 요청을 업슀튞늌 서버 귞룹에 전달한닀.
  • proxy_set_header 지시묞은 백엔드 서버에 전달되는 요청 헀더륌 수정합니닀. 여Ʞ에는 싀제 큎띌읎얞튞 IP 죌소 및 Ʞ타 섞부 정볎륌 백엔드로 전달하는 것읎 포핚될 수 있닀.

10. STP(Spanning Tree Protocol)와 RSTP(Rapid Spanning Tree Protocol)란?

STP(Spanning Tree Protocol) 및 RSTP(Rapid Spanning Tree Protocol)는 넀튞워크 환겜에서 룚프 상태륌 방지하는 데 사용되는 두 가지 넀튞워크 프로토윜읎닀. 읎는 슀위치 간 닀쀑 겜로륌 포핚하는 읎더넷 넀튞워크에서 특히 쀑요하닀.

Spanning Tree Protocol(STP)

IEEE 802.1D로 표쀀화된 STP는 읎더넷 넀튞워크륌 위한 룚프 없는 토폎로지륌 유지하도록 섀계되었닀. 읎것은 룚프륌 알Ʞ할 수 있는 쀑복 겜로듀 쀑 음부륌 선택적윌로 찚닚핚윌로썚 작동한닀. STP는 활성 링크가 싀팚할 겜우, 람늬지 룚프나 귞와 연ꎀ된 방송 방사의 위험 없읎, 낎결핚성 및 자동 백업 겜로 활성화륌 제공하Ʞ 위핎 넀튞워크 섀계륌 포핚하도록 한닀.

작동방식은 아래와 같닀.

  • 룚튞 람늬지 선택(Root Bridge Selection): 몚든 슀위치는 선택 프로섞슀에 찞여하여 넀튞워크의 녌늬적 쀑심읞 룚튞 람늬지륌 선택한닀. 람늬지 ID가 가장 낮은 슀위치가 룚튞가 된닀.
  • 겜로 선택(Path Selection): 각 슀위치는 겜로 비용을 Ʞ쀀윌로 자첎에서 룚튞 람늬지까지의 최닚 겜로륌 결정한닀.
  • 쀑복 겜로 찚닚(Blocking Redundant Paths): 룚프륌 방지하Ʞ 위핎 STP는 룚프륌 형성할 수 있는 쀑복 겜로륌 찚닚하지만 읎륌 백업 링크로 유지한닀.
  • 포튞 상태 및 역할(ort States and Roles): STP 토폎로지의 포튞는 찚닚, 듣Ʞ, 학습, 전달 또는 비활성화와 같은 여러 상태 쀑 하나음 수 있닀. 룚튞 람늬지가 아닌 각 포튞에는 룚튞 포튞(룚튞 람늬지에 도달하는 가장 좋은 포튞), 지정된 포튞(넀튞워크 섞귞뚌튞륌 였가는 포튞 전달 프레임) 또는 지정되지 않은 포튞(찚닚된 포튞) 쀑 하나의 역할읎 있닀.

Rapid Spanning Tree Protocol (RSTP)

IEEE 802.1w에 정의된 RSTP는 넀튞워크 변겜 시 더 빠륞 수렎을 제공하는 STP의 진화형읎닀. 표쀀 STP와 역혞환되도록 섀계되었닀.

작동방식은 아래와 같닀.

  • Faster Convergence: RSTP는 빠륞 상태 전환을 통핎 더 빠륞 수렎을 달성할 수 있닀. 새로욎 포튞 역할곌 상태륌 도입하여 타읎뚞가 만료될 때까지 Ʞ닀늬지 않고도 슀위치가 포튞륌 전달 상태로 안전하게 읎동할 수 있는지 적극적윌로 확읞할 수 있닀.
  • 포튞 역할(Port Roles): RSTP는 룚튞 포튞, 지정 포튞, 대첎 포튞(룚튞 포튞로 백업), 백업 포튞(지정 포튞로 백업)와 같은 역할을 정의한닀.
  • 포튞 상태(Port States): RSTP는 STP의 5개 포튞 상태(폐Ʞ, 학습 및 전달)에 비핎 3개 포튞 상태만 사용한닀.
  • 에지 포튞(Edge Ports): 엔드 슀테읎션에 직접 연결된 포튞는 넀튞워크 룚프륌 생성할 가능성읎 없윌므로 읎러한 포튞륌 에지 포튞로 구성하여 Ʞ졎 ì²­ì·š/학습 상태륌 우회하고 전달 상태로 직접 전환할 수 있닀.
  • 링크 유형(Link Type): RSTP는 링크 유형도 식별할 수 있윌며 링크가 지점 간 링크읞 겜우 RSTP는 핎당 링크의 수렎 속도륌 높읞닀.

읎점은 아래와 같닀. 넀튞워크 변겜읎나 장애에 대응하여 훚씬 더 빠륞 복구륌 제공하여 많은 겜우에 수십 쎈(STP 사용)에서 1쎈 믞만윌로 시간을 닚축한닀. 넀튞워크 묞제 핎결을 닚순화하고 넀튞워크 안정성곌 성능을 향상시킚닀.

STP와 RSTP 정늬

요앜하멎 STP는 넀튞워크 룚프륌 방지하는 데 횚곌적읎지만 RSTP는 더 빠륞 수렎을 제공하여 STP륌 개선한닀. 읎는 가동 쀑지 시간을 최소화하는 것읎 쀑요한 넀튞워크에서 맀우 쀑요할 수 있닀.


11. 허뾌 ì•€ 슀포크 넀튞워크 아킀텍처(Hub & Spoke Network Artchitecture)란?

Hub & Spoke 넀튞워크 아킀텍처는 쀑앙 집쀑식 ꎀ늬와 횚윚적읞 연결 사용읎 필요한 닀양한 분알에 적용되는 Ʞ볞 섀계읎닀. 쀑앙 지점을 강력하게 ꎀ늬할 수 있고 넀튞워크 읞프띌륌 횚윚적윌로 확장하렀는 조직에 적합하닀.

구조(Structure)

  • 허뾌(Hub): 넀튞워크의 닀륞 몚든 녞드에 대한 공통 연결 지점 역할을 하는 쀑앙 녞드읎닀. 허뾌는 몚든 데읎터가 통곌하는 넀튞워크의 핵심윌로, 데읎터 흐늄을 ꎀ늬하는 구심점 역할을 한닀.
  • 슀포크(Spoke): 허람에 연결된 녞드읎닀. 각 슀포크는 허람에만 연결되며 닀륞 슀포크에는 연결되지 않는닀. 읎 섀정은 녾드 간의 연결 수륌 쀄여 전첎 넀튞워크 섀계륌 닚순화한닀.

특성 및 사용법(Characteristics and Usage)

  • 쀑앙 집쀑식 ꎀ늬(Centralized Management): Hub & Spoke 아킀텍처륌 사용하멎 쀑앙 집쀑식 ꎀ늬가 가능하므로 정책을 더 쉜게 구현하고 넀튞워크 활동을 몚니터링할 수 있닀.
  • 늬소슀 사용의 횚윚성(Efficiency in Resource Use): 늬소슀륌 허람에 쀑앙 집쀑화핚윌로썚 넀튞워크는 대역폭을 횚윚적윌로 ꎀ늬하고 튞래픜 우선 순위륌 지정할 수 있윌며 읎는 특히 WAN(ꎑ역 넀튞워크)에 유용하닀.
  • 확장성(Scalability): 새 슀포크륌 추가하는 것은 Ʞ졎 슀포크 연결에 영향을 죌지 않고 허람에서 새 녞드로 띌읞을 확장하는 작업읎므로 비교적 간닚하닀.

장닚점(Advantages & Disadvantages)

  • 장점
    • 간닚한 읞프띌(Simplified Infrastructure): 여러 녾드 간의 직접 연결을 최소화하여 여러 녞드륌 연결하는 복잡성을 쀄읞닀.
    • 비용 횚윚적(Cost-Effective): 각 녞드가 닀륞 몚든 녞드와 직접 연결되는 완전 메시형 넀튞워크에 비핎 쌀읎랔 연결읎나 띌우팅읎 덜 필요하닀.
    • 유지 ꎀ늬 및 묞제 핎결(Easier Maintenance and Troubleshooting): 허람에서 ꎀ늬 Ʞ능을 쀑앙 집쀑화하멎 업데읎튞 배포 및 묞제 핎결읎 더 쉬워진닀.
  • 닚점
    • 닚음 싀팚 지점(Single Point of Failure): 허람가 쀑요한 싀팚 지점읎 된닀. 허람가 닀욎되멎 슀포크 전첎의 몚든 연결읎 끊얎질 수 있닀.
    • 잠재적읞 병목 현상(Potential Bottlenecks): 제대로 장착되지 않은 겜우, 특히 넀튞워크 튞래픜읎 맀우 높은 겜우 허람에 병목 현상읎 발생하여 성능곌 속도에 영향을 믞칠 수 있닀.
  • 확장 허뾌 및 슀포크(Extended Hub & Spoke): 때로는 로드륌 분산하고 쀑복성을 제공하Ʞ 위핎 볎조 허람가 도입되얎 닚음 허뾌 시슀템에 낎재된 위험 쀑 음부륌 완화할 수 있닀.

12. IPsec vs SSL/TLS

IPsec(읞터넷 프로토윜 볎안) 및 SSL(볎안 소쌓 레읎얎) 은 몚두 넀튞워크 튞래픜을 볎혞하는 데 사용되는 프로토윜읎닀. 읎는 읞터넷을 통핎 데읎터 묎결성, Ʞ밀성 및 신뢰성을 제공하지만 넀튞워크 슀택의 닀양한 계잵에서 작동한닀.

IPsec

IPsec은 통신 섞션의 각 IP 팚킷을 읞슝하고 암혞화하여 읞터넷 프로토윜(IP) 통신을 볎혞하Ʞ 위한 프로토윜 몚음읎닀. IPsec에는 섞션 시작 시 에읎전튞 간 상혞 읞슝을 섀정하고 섞션 쀑에 사용할 암혞화 킀륌 협상하Ʞ 위한 프로토윜읎 포핚되얎 있닀.

  • 넀튞워크 계잵 볎안(Network Layer Security): IPsec은 IP 계잵에서 작동하므로 읎륌 통곌하는 몚든 튞래픜을 볎혞할 수 있윌므로 VPN에 적합하닀.
  • 암혞화 및 읞슝(Encryption and Authentication): 두 가지 작동 몚드륌 제공합니닀. 전송 몚드(encrypts the payload only) 및 터널 몚드(encrypts the entire IP packet).
  • 닀양한 애플늬쌀읎션(Versatile in Application): 읞터넷곌 같읎 신뢰할 수 없는 넀튞워크에서 볎안 넀튞워크(VPN)륌 만드는 데 사용할 수 있닀.

SSL/TLS

SSL(and its successor, TLS - Transport Layer Security)은 넀튞워크로 연결된 컎퓚터 간의 연결을 볎혞하Ʞ 위한 프로토윜읎닀. 원래는 HTTP 튞래픜용윌로 섀계되었지만 읞터넷을 통한 닀양한 유형의 통신을 볎혞하는 데 사용된닀.

  • 섞션 계잵 볎안(Session Layer Security): SSL은 섞션 계잵에서 작동하지만 SSL을 활용하도록 섀계된 특정 애플늬쌀읎션을 볎혞한닀.
  • 암혞화, 읞슝 및 묎결성(Encryption, Authentication, and Integrity): SSL은 데읎터가 읞터넷을 통핎 전송되Ʞ 전에 암혞화 알고늬슘을 사용하여 데읎터륌 암혞화하고 읞슝을 위핎 읞슝서륌 사용한닀.
  • 볎안 웹 람띌우징에 널늬 사용됚(Widely Used for Secure Web Browsing): 음반적윌로 신용 칎드 거래, 데읎터 전송 및 웹 사읎튞 로귞읞을 볎혞하는 데 사용된닀.

IPsec곌 SSL의 찚읎점

  • 욎영 계잵(Layer of Operation): IPsec은 넀튞워크 계잵에서 작동하여 통곌하는 몚든 튞래픜을 볎혞한닀. SSL은 섞션 계잵에서 작동하여 사용자와 애플늬쌀읎션 간의 특정 섞션을 볎혞한닀.
  • 읞슝서 ꎀ늬(Management of Certificates): SSL은 음반적윌로 신뢰할 수 있는 읞슝 Ʞꎀ의 계잵 구조륌 사용하여 엔드포읞튞의 ID륌 읞슝한닀. IPsec은 읞슝서륌 사용할 수도 있지만 사전 공유 킀나 닀륞 형태의 넀튞워크 수쀀 읞슝을 통핎 ꎀ늬되는 겜우가 ë§Žë‹€.
  • 유연성 및 섀정(Flexibility and Setup): SSL은 음반적윌로 애플늬쌀읎션별로 섀정하고 ꎀ늬하Ʞ가 더 쉬욎 것윌로 간죌된닀. 넀튞워크 아킀텍처에 통합되는 IPsec은 더 많은 섀정읎 필요하고 볎안 애플늬쌀읎션읎 덜 섞분화되얎 있지만 더 넓은 적용 범위륌 제공한닀.
  • 사용 시나늬였(Usage Scenarios): IPsec은 전첎 넀튞워크 튞래픜의 볎안읎 필요한 VPN에 선혞된닀. SSL은 특히 HTTP(HTTPS)륌 통한 웹 사읎튞 볎안곌 같은 특정 애플늬쌀읎션에 선혞된닀.
Feature IPsec SSL/TLS
Layer Network (IP layer) Session (Application)
Security Encrypts entire packet Encrypts session data
Usage VPNs, site-to-site Web browsers, specific applications
Authentication Certificates, pre-shared keys Certificates, often from a CA
Configuration Complex, network-level Simpler, application-specific
Encryption Modes Transport and Tunnel Secure channel per session

IPsec VPN vs SSL/TLS VPN

특성 IPsec VPN SSL/TLS VPN
정의 몚든 IP 팚킷을 암혞화하고 읞슝하여 읞터넷 프로토윜 통신을 볎혞하는 프로토윜 제품군(TCP/UDP 지원) 연결을 암혞화하고 볎혞하는 프로토윜, 데읎터 부분만 암혞화(TCP 지원 O UDP 지원X)
암혞화 넀튞워크 레읎얎에서 작동하며 IP 레벚에서 몚든 튞래픜을 암혞화하며 전첎 넀튞워크 암혞화에 읎상적 섞션 레읎얎에서 작동하며 애플늬쌀읎션능레벚에서 암혞화하여 특정 애플늬쌀읎션 또는 서비슀륌 볎안 유지
프로토윜 IP TCP
계잵 OSI 몚덞의 넀튞워크 레읎얎에서 작동(3 Layer) OSI 몚덞의 섞션 레읎얎에서 작동(6 Layer)
사용 펞의성 섀정 및 ꎀ늬가 더 복잡핚. 넀튞워크 레벚에서 작동하고 더 포ꎄ적읞 구성읎 필요핚 표쀀 볎안 웹 람띌우징을 위핎 람띌우저륌 통핎 쉜게 사용 및 구현 가능
읞슝 읞슝서, 사전 공유 í‚€ 또는 더 상섞한 구성읎 필요할 수 있는 닀륞 읞슝 방법을 사용할 수 있음 신뢰할 수 있는 읞슝 Ʞꎀ에서 ꎀ늬하는 읞슝서와 킀륌 죌로 사용
배포 전첎 넀튞워크 액섞슀, 사읎튞 간 VPN 또는튞볎안 액섞슀가 필요한 전첎 서람넷에 가장 적합 읞터넷을 통한 개별 애플늬쌀읎션 또는 서비슀에 대한 원격 액섞슀에 읎상적
유연성 큎띌읎얞튞 섀정에 대한 유연성읎 떚얎지지만 강력한 볎안 Ʞ능을 제공 웹 êž°ë°˜ 액섞슀에 더 유연하며 웹 SSL VPN을 사용하여 큎띌읎얞튞 소프튞웚얎 섀치 없읎 사용 가능
음반적읞 사용 사례 전첎 데읎터륌 넀튞워크륌 통핎 전송할 때 볎안 사읎튞 간 연결, 죌로 êž°ì—… 환겜에서 사용 웹 애플늬쌀읎션, SaaS 제품 및 Ʞ타 웹 êž°ë°˜ 늬소슀에 대한 볎안 연결에 사용
볎안 복잡성의 대가로 강력한 볎안을 제공하며 넀튞워크륌 통핎 전송되는 몚든 데읎터륌 컀버 적당한 볎안을 제공하며 특히 임시 액한슀에 대핮 읞터넷 연결에서 쉜게 섀정 및 ꎀ늬 가능
특징 2개의 서버 장비 필요, 소프튞웚얎 섀치가 필요, 닀양한 얎플늬쌀읎션곌 혾환 사섀망에 직접 연결된 것처럌 사용가능 1개의 서버 장비 필요, 웹 람띌우저만윌로 사용, SSL 포탈을 통핎서 연결됚

Q24: 팚킷 레벚 넀튞워크 통신 곌정 비교 (Kubernetes vs 음반 읞슀턎슀)

질묞: 웹 애플늬쌀읎션윌로 HTTP 요청읎 전달되는 곌정을 팚킷 레벚에서 섀명하섞요. Kubernetes 환겜곌 음반 EC2 읞슀턎슀 환겜을 비교하여 각 닚계에서의 헀더 변화와 넀튞워크 컎포넌튞륌 섀명하섞요.

답변:


1. 음반 EC2 읞슀턎슀 환겜 (전통적읞 아킀텍처)

아킀텍처 구성

[큎띌읎얞튞] 
    ↓
[읞터넷 게읎튞웚읎]
    ↓
[ALB (Application Load Balancer)]
    ↓
[EC2 읞슀턎슀 (웹 서버)]

팚킷 전송 곌정 (닚계별 헀더 변화)

Step 1: 큎띌읎얞튞 → ALB

큎띌읎얞튞 ìž¡ 팚킷 구조:
┌─────────────────────────────────────────────────────┐
│ Ethernet Header                                      │
│  - Src MAC: 큎띌읎얞튞 MAC (aa:bb:cc:dd:ee:ff)      │
│  - Dst MAC: 게읎튞웚읎 MAC (11:22:33:44:55:66)      │
├──────────────────────────────────────────────────────
│ IP Header                                            │
│  - Src IP: 큎띌읎얞튞 IP (203.0.113.100)            │
│  - Dst IP: ALB Public IP (54.230.10.20)             │
│  - Protocol: TCP (6)                                 │
│  - TTL: 64                                           │
├──────────────────────────────────────────────────────
│ TCP Header                                           │
│  - Src Port: 50001 (ephemeral)                      │
│  - Dst Port: 443 (HTTPS)                            │
│  - Seq: 1000, Ack: 0                                │
│  - Flags: SYN                                        │
│  - Window: 65535                                     │
├──────────────────────────────────────────────────────
│ TLS Client Hello (Application Layer)                │
│  - SNI: example.com                                  │
│  - Cipher Suites                                     │
└─────────────────────────────────────────────────────┘

겜로: 큎띌읎얞튞 → ISP → AWS Edge Location → IGW → ALB

Step 2: ALB → EC2 읞슀턎슀

ALB에서 EC2로 전송되는 팚킷:
┌─────────────────────────────────────────────────────┐
│ Ethernet Header (VPC 낎부)                           │
│  - Src MAC: ALB ENI MAC (aa:aa:aa:aa:aa:aa)         │
│  - Dst MAC: EC2 ENI MAC (bb:bb:bb:bb:bb:bb)         │
├──────────────────────────────────────────────────────
│ IP Header                                            │
│  - Src IP: ALB Private IP (10.0.1.100)              │
│  - Dst IP: EC2 Private IP (10.0.2.50)               │
│  - Protocol: TCP (6)                                 │
│  - TTL: 63 (감소)                                    │
├──────────────────────────────────────────────────────
│ TCP Header                                           │
│  - Src Port: 45678 (ALB ephemeral)                  │
│  - Dst Port: 8080 (애플늬쌀읎션)                     │
│  - Seq: 2000, Ack: 1500                             │
│  - Flags: PSH, ACK                                   │
├──────────────────────────────────────────────────────
│ HTTP Request (평묞 또는 ALB에서 TLS 종료)            │
│  GET /api/users HTTP/1.1                            │
│  Host: example.com                                   │
│  X-Forwarded-For: 203.0.113.100                     │
│  X-Forwarded-Proto: https                            │
└─────────────────────────────────────────────────────┘

죌요 변겜사항:
✓ TLS 종료: ALB에서 HTTPS → HTTP 변환 (선택사항)
✓ Source IP: 큎띌읎얞튞 IP → ALB IP
✓ 헀더 추가: X-Forwarded-For로 원볞 큎띌읎얞튞 IP 전달
✓ 컀넥션 풀: ALB와 EC2 간 Keep-Alive 연결 재사용

Step 3: EC2 응답 → 큎띌읎얞튞

EC2 → ALB:
┌─────────────────────────────────────────────────────┐
│ IP Header                                            │
│  - Src IP: 10.0.2.50 (EC2)                          │
│  - Dst IP: 10.0.1.100 (ALB)                         │
├──────────────────────────────────────────────────────
│ TCP Header                                           │
│  - Src Port: 8080                                    │
│  - Dst Port: 45678                                   │
├──────────────────────────────────────────────────────
│ HTTP Response                                        │
│  HTTP/1.1 200 OK                                     │
│  Content-Type: application/json                      │
│  {"users": [...]}                                    │
└─────────────────────────────────────────────────────┘

ALB → 큎띌읎얞튞:
┌─────────────────────────────────────────────────────┐
│ IP Header                                            │
│  - Src IP: 54.230.10.20 (ALB Public)                │
│  - Dst IP: 203.0.113.100 (큎띌읎얞튞)               │
├──────────────────────────────────────────────────────
│ TCP Header                                           │
│  - Src Port: 443                                     │
│  - Dst Port: 50001                                   │
├──────────────────────────────────────────────────────
│ TLS Encrypted HTTP Response                         │
│  (ALB에서 닀시 TLS 암혞화)                           │
└─────────────────────────────────────────────────────┘

2. Kubernetes 환겜 (컚테읎너 였쌀슀튞레읎션)

아킀텍처 구성

[큎띌읎얞튞]
    ↓
[읞터넷 게읎튞웚읎]
    ↓
[NLB/ALB (Ingress)]
    ↓
[Kubernetes Service (ClusterIP)]
    ↓
[kube-proxy (iptables/IPVS)]
    ↓
[CNI (Calico/Cilium/AWS VPC CNI)]
    ↓
[Pod Network Namespace]
    ↓
[Container (애플늬쌀읎션)]

팚킷 전송 곌정 (Kubernetes 특화)

Step 1: 큎띌읎얞튞 → NLB/ALB (Ingress)

음반 읞슀턎슀와 동음:
┌─────────────────────────────────────────────────────┐
│ Ethernet Header                                      │
│ IP Header                                            │
│  - Src IP: 203.0.113.100                            │
│  - Dst IP: NLB Public IP (52.200.10.30)             │
│ TCP Header                                           │
│  - Dst Port: 443                                     │
│ TLS/HTTP Request                                     │
└─────────────────────────────────────────────────────┘

Step 2: NLB → Kubernetes NodePort

NLB가 워컀 녞드의 NodePort로 전송:
┌─────────────────────────────────────────────────────┐
│ IP Header                                            │
│  - Src IP: NLB Private IP (10.0.1.50)               │
│  - Dst IP: Worker Node IP (10.0.3.100)              │
├──────────────────────────────────────────────────────
│ TCP Header                                           │
│  - Src Port: 54321                                   │
│  - Dst Port: 30080 (NodePort)                       │
├──────────────────────────────────────────────────────
│ HTTP Request (Ingress Controller가 TLS 종료)        │
└─────────────────────────────────────────────────────┘

NodePort 맀핑:
- Service Type: NodePort
- 몚든 워컀 녞드의 30080 포튞가 엎늌
- kube-proxy가 iptables 규칙 생성

Step 3: kube-proxy iptables NAT 처늬

# kube-proxy가 생성한 iptables 규칙 예시
iptables -t nat -A KUBE-SERVICES -p tcp --dport 30080 \
  -j KUBE-SVC-ABCD1234

iptables -t nat -A KUBE-SVC-ABCD1234 -m statistic \
  --mode random --probability 0.33 -j KUBE-SEP-POD1

iptables -t nat -A KUBE-SEP-POD1 -p tcp \
  -j DNAT --to-destination 10.244.1.50:8080

팚킷 변환 곌정:

NodePort 진입 후 DNAT 적용:
┌─────────────────────────────────────────────────────┐
│ IP Header (DNAT 후)                                  │
│  - Src IP: 10.0.1.50 (NLB) [SNAT 가능]              │
│  - Dst IP: 10.244.1.50 (Pod IP) ← 변겜됚!           │
├──────────────────────────────────────────────────────
│ TCP Header                                           │
│  - Src Port: 54321                                   │
│  - Dst Port: 8080 ← 변겜됚! (NodePort → Container)  │
├──────────────────────────────────────────────────────
│ HTTP Request                                         │
└─────────────────────────────────────────────────────┘

죌요 변겜:
✓ Destination IP: 녾드 IP → Pod IP (10.244.x.x 대역)
✓ Destination Port: 30080 → 8080
✓ kube-proxy가 로드밞런싱 (Pod 3개 쀑 랜덀 선택)

Step 4: CNI 넀튞워크 띌우팅 (AWS VPC CNI 예시)

AWS VPC CNI 동작:
┌─────────────────────────────────────────────────────┐
│ 워컀 녾드 띌우팅 테읎랔                              │
│  10.244.1.0/24 → veth1234abcd (Pod veth pair)       │
│  10.244.2.0/24 → 닀륞 녾드 (녾드 간 띌우팅)         │
└─────────────────────────────────────────────────────┘

# 녞드에서 띌우팅 확읞
ip route show
# 10.244.1.50 dev veth1234abcd scope link

팚킷읎 veth pair륌 통핎 Pod Network Namespace로 전달:
┌──────────────────────────────────────┐
│ Host Network Namespace               │
│   eth0 (10.0.3.100)                  │
│   veth1234abcd ← 혞슀튞 ìž¡ 읞터페읎슀│
└──────────┬───────────────────────────┘
           │ veth pair
┌──────────▌───────────────────────────┐
│ Pod Network Namespace                │
│   eth0@if5 (10.244.1.50) ← Pod ìž¡    │
│   Container Process (PID 1)          │
└──────────────────────────────────────┘

Step 5: Pod 낎부 수신

Pod 낮 컚테읎너가 수신하는 팚킷:
┌─────────────────────────────────────────────────────┐
│ Ethernet Header (veth)                               │
│  - Src MAC: veth host side                          │
│  - Dst MAC: veth pod side                           │
├──────────────────────────────────────────────────────
│ IP Header                                            │
│  - Src IP: 10.0.1.50 (또는 SNAT된 IP)               │
│  - Dst IP: 10.244.1.50 (Pod IP)                     │
├──────────────────────────────────────────────────────
│ TCP Header                                           │
│  - Src Port: 54321                                   │
│  - Dst Port: 8080                                    │
├──────────────────────────────────────────────────────
│ HTTP Request                                         │
│  GET /api/users HTTP/1.1                            │
│  Host: example.com                                   │
│  X-Forwarded-For: 203.0.113.100                     │
│  X-Real-IP: 203.0.113.100                           │
└─────────────────────────────────────────────────────┘

컚테읎너 수신 곌정:
1. 컀널읎 netfilter 첎읞 통곌 (PREROUTING → INPUT)
2. Socket Buffer에 팚킷 저장
3. 애플늬쌀읎션읎 read() 시슀템 윜로 수신

Step 6: 응답 겜로 (역방향)

Pod → kube-proxy → Node → NLB → 큎띌읎얞튞

Pod 송신:
┌─────────────────────────────────────────────────────┐
│ IP Header                                            │
│  - Src IP: 10.244.1.50 (Pod)                        │
│  - Dst IP: 10.0.1.50 (NLB)                          │
├──────────────────────────────────────────────────────
│ HTTP Response 200 OK                                │
└─────────────────────────────────────────────────────┘

kube-proxy SNAT 역변환:
┌─────────────────────────────────────────────────────┐
│ IP Header (SNAT 후)                                 │
│  - Src IP: 10.0.3.100 (Node IP) ← 변겜됚!           │
│  - Dst IP: 10.0.1.50 (NLB)                          │
├──────────────────────────────────────────────────────
│ TCP Header                                           │
│  - Src Port: 30080 ← 복원됚!                        │
└─────────────────────────────────────────────────────┘

NLB → 큎띌읎얞튞:
- NLB가 Source IP륌 자신의 Public IP로 변겜
- 큎띌읎얞튞에게 응답 전달

3. 죌요 찚읎점 비교표

항목 음반 EC2 읞슀턎슀 Kubernetes
넀튞워크 계잵 수 3계잵 (큎띌읎얞튞→LB→읞슀턎슀) 5계잵 (큎띌읎얞튞→LB→Node→kube-proxy→Pod)
IP 죌소 변환 ALB Private IP ↔ EC2 Private IP Node IP → Pod IP (10.244.x.x)
포튞 맀핑 ALB:443 → EC2:8080 NodePort:30080 → Container:8080
로드밞런싱 ALB (L7) kube-proxy (iptables/IPVS L4)
넀튞워크 넀임슀페읎슀 닚음 (혞슀튞) 분늬 (Pod마닀 격늬)
MAC 죌소 묌늬적 ENI MAC veth pair 가상 MAC
팚킷 캡처 위치 tcpdump -i eth0 tcpdump -i eth0 (혞슀튞)
nsenter + tcpdump (Pod)
Source IP 볎졎 X-Forwarded-For 헀더 X-Forwarded-For + Service externalTrafficPolicy

4. Kubernetes 넀튞워크 디버깅 싀습

Pod 낎부에서 팚킷 캡처

# 1. Pod ì°Ÿêž°
kubectl get pods -o wide
# NAME                     READY   STATUS    IP            NODE
# webapp-7d8f9c-abcd       1/1     Running   10.244.1.50   node-1

# 2. Pod의 Network Namespace 확읞
kubectl exec webapp-7d8f9c-abcd -- cat /proc/1/ns/net
# net:[4026532456]

# 3. 워컀 녞드에 SSH 접속 후 Pod Network Namespace에서 tcpdump
NODE_IP=$(kubectl get pod webapp-7d8f9c-abcd -o jsonpath='{.status.hostIP}')
ssh ec2-user@$NODE_IP

# Pod의 PID ì°Ÿêž°
docker inspect --format '{{.State.Pid}}' $(docker ps | grep webapp | awk '{print $1}')
# 12345

# nsenter로 Pod Network Namespace 진입
sudo nsenter -t 12345 -n tcpdump -i eth0 -nn port 8080

# 출력 예시:
# 10.0.1.50.54321 > 10.244.1.50.8080: Flags [P.], seq 1:100, ack 1, win 502
# GET /api/users HTTP/1.1

kube-proxy iptables 규칙 추적

# Service → Endpoint 맀핑 확읞
kubectl get svc webapp-service -o yaml
# clusterIP: 10.96.10.20
# ports:
# - port: 80
#   targetPort: 8080
#   nodePort: 30080

# iptables NAT 첎읞 확읞
sudo iptables -t nat -L KUBE-SERVICES -n | grep 10.96.10.20
# KUBE-SVC-ABC123 tcp -- 0.0.0.0/0 10.96.10.20 tcp dpt:80

sudo iptables -t nat -L KUBE-SVC-ABC123 -n
# KUBE-SEP-POD1 all -- 0.0.0.0/0 0.0.0.0/0 statistic mode random probability 0.33
# KUBE-SEP-POD2 all -- 0.0.0.0/0 0.0.0.0/0 statistic mode random probability 0.50
# KUBE-SEP-POD3 all -- 0.0.0.0/0 0.0.0.0/0

sudo iptables -t nat -L KUBE-SEP-POD1 -n
# DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp to:10.244.1.50:8080

CNI 플러귞읞별 팚킷 겜로

# AWS VPC CNI: Secondary IP 방식
ip addr show eth0
# eth0: <BROADCAST,MULTICAST,UP>
#     inet 10.0.3.100/24 (Primary)
#     inet 10.244.1.50/32 (Pod IP - Secondary)

ip route show
# 10.244.1.50 dev eth0 scope link

# Calico: IP-in-IP 터널링
ip route show
# 10.244.2.0/24 via 10.0.3.101 dev tunl0 proto bird onlink

# Cilium: eBPF êž°ë°˜ (iptables 우회)
cilium bpf lb list
# 10.96.10.20:80 => 
#   10.244.1.50:8080 (1/3)
#   10.244.2.30:8080 (1/3)
#   10.244.3.10:8080 (1/3)

5. 성능 및 볎안 고렀사항

음반 읞슀턎슀 장점

  • 넀튞워크 홉 수 적음 (낮은 레읎턎시)
  • NAT/DNAT 였버헀드 없음
  • 닚순한 디버깅 (닚음 넀튞워크 넀임슀페읎슀)

Kubernetes 장점

  • Pod 간 넀튞워크 격늬 (볎안)
  • Service Discovery (DNS 자동화)
  • 동적 로드밞런싱 (Pod Autoscaling)
  • Network Policy로 마읎크로섞귞뚌테읎션

성능 최적화

# externalTrafficPolicy: Local (Source IP 볎졎 + 녾드 간 홉 제거)
apiVersion: v1
kind: Service
metadata:
  name: webapp-service
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local  # ← 팚킷읎 로컬 녾드 Pod로만 전달
  ports:
  - port: 80
    targetPort: 8080

팚킷 겜로 찚읎:

Cluster (Ʞ볞값):
큎띌읎얞튞 → NLB → Node1 → kube-proxy → Node2 Pod (녾드 간 읎동 가능)

Local:
큎띌읎얞튞 → NLB → Node1 → kube-proxy → Node1 Pod (동음 녾드만)
                   → Node2 → kube-proxy → Node2 Pod

디버깅 시나늬였:

# 묞제: Pod로 튞래픜읎 안 듀얎옎

# 1. Service Endpoint 확읞
kubectl get endpoints webapp-service
# NAME              ENDPOINTS
# webapp-service    10.244.1.50:8080,10.244.2.30:8080

# 2. kube-proxy 로귞 확읞
kubectl logs -n kube-system kube-proxy-xxxx
# I0106 sync iptables rules for service webapp-service

# 3. Pod에서 tcpdump (헬퍌 컚테읎너 사용)
kubectl debug webapp-7d8f9c-abcd -it --image=nicolaka/netshoot
# 디버귞 Pod에서:
tcpdump -i eth0 -nn port 8080

# 4. 녞드에서 iptables NAT 추적
sudo iptables -t nat -nvL | grep 10.244.1.50
# 팚킷 칎욎터 확읞 (pkts bytes)

# 5. conntrack 테읎랔 확읞
sudo conntrack -L | grep 10.244.1.50
# tcp 6 117 ESTABLISHED src=10.0.1.50 dst=10.244.1.50

ì°žê³  자료

⚠ **GitHub.com Fallback** ⚠