bregman-arie/devops-exercises
요약
이 문서는 DevOps 엔지니어링 학습 자료를 제공하는 저장소(repo)의 개요와 네트워크 기본 개념을 설명합니다. 주요 내용은 TCP/IP, Ethernet, MAC 주소, IP 주소 등 통신에 필요한 핵심 프로토콜과 주소 체계에 대한 정의입니다. 특히 사설 IP 주소와 공인 IP 주소의 차이점, 그리고 이들을 활용한 시스템 설계 시나리오를 상세히 다루고 있습니다.
핵심 포인트
- DevOps 엔지니어링 학습을 위한 방대한 연습 문제 및 질문 자료가 제공됩니다.
- TCP/IP는 장치 간 통신을 정의하는 프로토콜 세트이며, Ethernet은 LAN에 사용되는 일반적인 근거리 통신망입니다.
- MAC 주소는 네트워크상의 개별 장치를 식별하는 고유 하드웨어 주소이며, IP 주소는 위치 지정 및 호스트 식별 기능을 수행합니다.
- 사설 IP 주소는 동일한 로컬 네트워크 내에서만 사용 가능하며 외부 접근이 차단됩니다. 반면 공인 IP 주소는 외부로 노출되어 통신에 필수적입니다.
- OSI 모델은 응용, 표현, 세션, 전송 등 여러 계층으로 구성되어 있으며, 각 계층은 특정 통신 기능을 담당합니다.
ℹ️ 이 저장소(repo)는 다양한 기술적 주제에 관한 질문과 연습 문제를 포함하고 있으며, 때로는 DevOps 및 SRE와 관련이 있습니다.
📊 현재 2624개의 연습 문제와 질문이 있습니다.
🛑 만약 DevOps 엔지니어로서의 커리어를 추구하는 데 관심이 있다면, 여기에 언급된 개념 중 일부를 배우는 것이 유용하겠지만, 이 저장소에 언급된 모든 주제와 기술을 배우는 것이 목표는 아니라는 점을 알아두어야 합니다.
📝 Pull Request (PR)를 제출하여 더 많은 연습 문제를 추가할 수 있습니다 :) 기여 가이드라인(contribution guidelines)에 대해서는 여기에서 읽어보세요.
KubePrep |
Linux Master |
System Design Hero |
일반적으로, 소통하기 위해서는 무엇이 필요한가요?
- 공통 언어 (양 끝단이 서로 이해하기 위해)
- 소통하고자 하는 대상을 지정하는 방법
- 연결 (Connection) (소통 내용이 수신자에게 도달할 수 있도록)
TCP/IP란 무엇인가요?
둘 이상의 장치가 서로 어떻게 통신할 수 있는지를 정의하는 프로토콜(protocol) 세트입니다.
TCP/IP에 대해 더 자세히 알아보려면 여기를 읽어보세요.
Ethernet이란 무엇인가요?
Ethernet은 단순히 오늘날 사용되는 가장 일반적인 유형의 근거리 통신망 (LAN, Local Area Network)을 지칭합니다. 더 넓은 지리적 영역에 걸쳐 있는 WAN (Wide Area Network)과 대조적으로, LAN은 사무실, 대학 캠퍼스, 또는 가정과 같이 좁은 지역 내에 연결된 컴퓨터 네트워크입니다.
MAC 주소란 무엇인가요? 어디에 사용되나요?
MAC 주소는 네트워크상의 개별 장치를 식별하는 데 사용되는 고유 식별 번호 또는 코드입니다.
Ethernet 상에서 전송되는 패킷(Packet)은 항상 특정 MAC 주소로부터 오며 특정 MAC 주소로 전송됩니다. 네트워크 어댑터(network adapter)가 패킷을 수신할 때, 패킷의 목적지 MAC 주소를 어댑터 자신의 MAC 주소와 비교합니다.
이 MAC 주소는 언제 사용되나요?: ff:ff:ff:ff:ff:ff
**장치가 브로드캐스트(broadcast) MAC 주소 (FF:FF:FF:FF:FF:FF)로 패킷을 보낼 때, 해당 패킷은 로컬 네트워크의 모든 스테이션(station)에 전달됩니다. Ethernet 브로드캐스트는 데이터 링크 계층(data link layer)에서 IP 주소를 MAC 주소로 변환하기 위해 (ARP를 통해) 사용됩니다.
**
IP 주소란 무엇인가요?
**인터넷 프로토콜 주소 (IP address)는 통신을 위해 인터넷 프로토콜 (Internet Protocol)을 사용하는 컴퓨터 네트워크에 연결된 각 장치에 할당되는 숫자 레이블입니다. IP 주소는 호스트 또는 네트워크 인터페이스 식별(identification)과 위치 주소 지정(location addressing)이라는 두 가지 주요 기능을 수행합니다.
**
서브넷 마스크 (Subnet mask)를 설명하고 예시를 들어보세요
서브넷 마스크 (Subnet mask)는 IP 주소를 마스킹하여 IP 주소를 네트워크 주소와 호스트 주소로 나누는 32비트 숫자입니다. 서브넷 마스크는 네트워크 비트를 모두 "1"로 설정하고 호스트 비트를 모두 "0"으로 설정하여 만들어집니다. 주어진 네트워크 내에서, 사용 가능한 전체 호스트 주소 중 두 개는 항상 특정 목적을 위해 예약되어 있으며 어떤 호스트에도 할당될 수 없습니다. 이들은 네트워크 주소 (network address, 일명 network ID)로 예약된 첫 번째 주소와 네트워크 브로드캐스트 (network broadcast)에 사용되는 마지막 주소입니다.
사설 IP 주소 (private IP address)란 무엇인가요? 어떤 시나리오/시스템 설계에서 이를 사용해야 하나요?
사설 IP 주소 (Private IP addresses)는 동일한 네트워크 내의 호스트들이 서로 통신할 수 있도록 할당됩니다. "사설 (private)"이라는 이름이 암시하듯, 사설 IP 주소가 할당된 장치들은 외부 네트워크의 장치들에 의해 접근될 수 없습니다. 예를 들어, 제가 호스텔에 살고 있고 호스텔 친구들이 제가 호스팅한 게임 서버에 참여하기를 원한다면, 네트워크가 호스텔 로컬이기 때문에 제 서버의 사설 IP 주소를 통해 접속하도록 요청할 것입니다.
공인 IP 주소 (public IP address)란 무엇인가요? 어떤 시나리오/시스템 설계에서 이를 사용해야 하나요?
공인 IP 주소 (public IP address)는 외부로 노출되는 IP 주소입니다. 만약 친구들이 참여하기를 원하는 게임 서버를 호스팅하고 있다면, 연결이 이루어질 수 있도록 친구들의 컴퓨터가 귀하의 네트워크와 서버를 식별하고 위치를 찾을 수 있게끔 귀하의 공인 IP 주소를 친구들에게 알려주어야 합니다. 공인 IP 주소를 사용할 필요가 없는 한 가지 경우는 귀하와 동일한 네트워크에 연결된 친구들과 함께 게임을 하는 경우이며, 이럴 때는 사설 IP 주소 (private IP address)를 사용하게 됩니다. 내부적으로 위치한 귀하의 서버에 누군가가 연결할 수 있도록 하려면, 라우터 (router)가 공인 도메인으로부터 귀하의 네트워크로 들어오는 트래픽을 허용하고 그 반대의 경우도 허용하도록 포트 포워딩 (port forward)을 설정해야 합니다.
OSI 모델에 대해 설명하세요. 어떤 계층들이 있나요? 각 계층은 무엇을 담당하나요?
- Application (응용 계층): 사용자 엔드 (HTTP가 여기에 해당)
- Presentation (표현 계층): 응용 계층 엔티티 간의 컨텍스트를 설정 (암호화 (Encryption)가 여기에 해당)
- Session (세션 계층): 연결을 설정, 관리 및 종료
- Transport (전송 계층): 소스에서 목적지 호스트로 가변 길이 데이터 시퀀스를 전송 (TCP 및 UDP가 여기에 해당)
- Network (네트워크 계층): 한 네트워크에서 다른 네트워크로 데이터그램 (datagrams)을 전송 (IP가 여기에 해당)
- Data link (데이터 링크 계층): 직접 연결된 두 노드 간의 링크를 제공 (MAC이 여기에 해당)
- Physical (물리 계층): 데이터 연결의 전기적 및 물리적 사양 (비트 (Bits)가 여기에 해당)
OSI 모델에 대해 더 자세히 알고 싶다면 penguintutor.com에서 읽어보실 수 있습니다.
다음 각각이 어떤 OSI 계층에 속하는지 결정하세요:
- Error correction (오류 교정)
- Packets routing (패킷 라우팅)
- Cables and electrical signals (케이블 및 전기 신호)
- MAC address (MAC 주소)
- IP address (IP 주소)
- Terminate connections (연결 종료)
- 3 way handshake (3-way 핸드셰이크)
Error correction - Data link
Packets routing - Network
Cables and electrical signals - Physical
MAC address - Data link
IP address - Network
Terminate connections - Session
3-way handshake - Transport
귀하가 알고 있는 전달 방식 (delivery schemes)은 무엇인가요?
Unicast (유니캐스트): 한 명의 송신자와 한 명의 수신자가 있는 일대일 통신.
Broadcast (브로드캐스트): 네트워크 내의 모든 사람에게 메시지를 전송합니다. 브로드캐스트를 위해 ff:ff:ff:ff:ff:ff 주소가 사용됩니다. 브로드캐스트를 사용하는 두 가지 일반적인 프로토콜은 ARP와 DHCP입니다.
**
CSMA/CD란 무엇인가요? 현대의 Ethernet 네트워크에서 사용되나요?
CSMA/CD는 Carrier Sense Multiple Access / Collision Detection (반송파 감지 다중 접속 / 충돌 검출)의 약자입니다. 이 방식의 주요 목적은 특정 시점에 오직 하나의 호스트만 전송할 수 있는 공유 매체/버스 (shared medium/bus)에 대한 액세스 (access)를 관리하는 것입니다.
CSMA/CD 알고리즘:
- 프레임 (frame)을 보내기 전에, 다른 호스트가 이미 프레임을 전송하고 있는지 확인합니다.
- 아무도 전송하고 있지 않다면, 프레임 전송을 시작합니다.
- 두 호스트가 동시에 전송하면 충돌 (collision)이 발생합니다.
- 두 호스트 모두 프레임 전송을 중단하고, 충돌이 발생했음을 모두에게 알리는 '잼 신호 (jam signal)'를 보냅니다.
- 그들은 다시 전송하기 전에 무작위 시간 (random time) 동안 대기합니다.
각 호스트가 무작위 시간 동안 대기한 후, 프레임을 다시 보내려고 시도하며 이 사이클이 다시 시작됩니다
다음 네트워크 장치들을 설명하고 그 차이점을 기술하세요:
- router (라우터)
- switch (스위치)
- hub (허브)
라우터, 스위치, 허브는 모두 로컬 영역 네트워크 (LAN) 내의 장치들을 연결하는 데 사용되는 네트워크 장치입니다. 하지만 각 장치는 다르게 작동하며 고유한 사용 사례를 가지고 있습니다. 각 장치에 대한 간략한 설명과 차이점은 다음과 같습니다:
- 라우터 (Router): 여러 네트워크 세그먼트를 연결하는 네트워크 장치입니다. OSI 모델의 네트워크 계층(Layer 3)에서 작동하며, 라우팅 프로토콜을 사용하여 네트워크 간에 데이터를 전송합니다. 라우터는 IP 주소를 사용하여 장치를 식별하고 데이터 패킷을 올바른 목적지로 경로 지정합니다.
- 스위치 (Switch): LAN상의 여러 장치를 연결하는 네트워크 장치입니다. OSI 모델의 데이터 링크 계층(Layer 2)에서 작동하며, MAC 주소를 사용하여 장치를 식별하고 데이터 패킷을 올바른 목적지로 전송합니다. 스위치는 동일한 네트워크에 있는 장치들이 서로 더 효율적으로 통신하도록 하며, 여러 장치가 동시에 데이터를 전송할 때 발생할 수 있는 데이터 충돌(data collision)을 방지할 수 있습니다.
허브 (Hub): 단일 케이블을 통해 여러 장치를 연결하는 네트워크 장치이며, 네트워크를 분할하지 않고 여러 장치를 연결하는 데 사용됩니다. 하지만 스위치와 달리 OSI 모델의 물리 계층(Layer 1)에서 작동하며, 해당 장치가 의도된 수신자인지 여부와 관계없이 연결된 모든 장치에 데이터 패킷을 단순히 브로드캐스트합니다. 이는 데이터 충돌이 발생할 수 있음을 의미하며, 결과적으로 네트워크 효율성이 저하될 수 있습니다. 허브는 스위치가 더 효율적이고 더 나은 네트워크 성능을 제공하기 때문에 일반적으로 현대적인 네트워크 구성에서는 사용되지 않습니다.
브로드캐스트 도메인 (Broadcast domain)은 모든 장치가 브로드캐스트 메시지 (broadcast messages)를 전송함으로써 서로 통신할 수 있는 네트워크 세그먼트 (network segment)입니다. 브로드캐스트 메시지는 특정 장치가 아닌 네트워크 내의 모든 장치로 전송되는 메시지입니다. 브로드캐스트 도메인 내에서는 메시지가 해당 장치를 대상으로 의도되었는지 여부와 관계없이 모든 장치가 브로드캐스트 메시지를 수신하고 처리할 수 있습니다.
스위치에 연결된 세 대의 컴퓨터. 충돌 도메인 (collision domains)은 몇 개인가요? 브로드캐스트 도메인 (broadcast domains)은 몇 개인가요?
**세 개의 충돌 도메인과 한 개의 브로드캐스트 도메인
**
라우터 (router)는 어떻게 작동하나요?
라우터는 둘 이상의 패킷 교환 (packet-switched) 컴퓨터 네트워크 간에 정보를 전달하는 물리적 또는 가상 어플라이언스 (appliance)입니다. 라우터는 주어진 데이터 패킷의 목적지 인터넷 프로토콜 주소 (Internet Protocol address, IP address)를 검사하고, 목적지에 도달하기 위한 최적의 경로를 계산한 다음 그에 따라 패킷을 전달합니다.
NAT란 무엇인가요?
네트워크 주소 변환 (Network Address Translation, NAT)은 로컬 호스트 (local hosts)에 인터넷 접속을 제공하기 위해 하나 이상의 로컬 IP 주소를 하나 이상의 글로벌 IP 주소로 변환하거나 그 반대로 변환하는 프로세스입니다.
프록시 (proxy)란 무엇인가요? 어떻게 작동하나요? 왜 필요한가요?
프록시 서버 (proxy server)는 사용자와 인터넷 사이에서 게이트웨이 (gateway) 역할을 합니다. 이는 최종 사용자 (end users)와 사용자가 탐색하는 웹사이트를 분리하는 중간 서버 (intermediary server)입니다.
프록시 서버를 사용하면 인터넷 트래픽이 요청한 주소로 가는 도중에 프록시 서버를 거쳐 흐르게 됩니다. 그런 다음 요청이 동일한 프록시 서버를 통해 다시 돌아오며 (이 규칙에는 예외가 있습니다), 프록시 서버는 웹사이트로부터 받은 데이터를 사용자에게 전달합니다.
**프록시 서버는 사용 사례, 필요 사항 또는 회사 정책에 따라 다양한 수준의 기능, 보안 및 개인정보 보호를 제공합니다.
**
TCP란 무엇인가요? 어떻게 작동하나요? 3-way handshake란 무엇인가요?
TCP 3-way handshake 또는 three-way handshake는 TCP/IP 네트워크에서 서버와 클라이언트 (client) 간의 연결을 설정하기 위해 사용되는 프로세스입니다.
three-way handshake는 주로 TCP 소켓 연결 (socket connection)을 생성하는 데 사용됩니다. 다음과 같은 상황에서 작동합니다:
- 클라이언트 노드 (client node)가 IP 네트워크를 통해 동일한 네트워크 또는 외부 네트워크에 있는 서버로 SYN 데이터 패킷을 보냅니다. 이 패킷의 목적은 서버가 새로운 연결을 수락할 수 있는지 묻거나 추론하는 것입니다.
- 대상 서버는 새로운 연결을 수락하고 시작할 수 있는 열린 포트 (open ports)를 가지고 있어야 합니다. 서버가 클라이언트 노드로부터 SYN 패킷을 받으면, 응답하며 확인 영수증인 ACK 패킷 또는 SYN/ACK 패킷을 반환합니다.
클라이언트 노드는 서버로부터 SYN/ACK를 받고 ACK 패킷으로 응답합니다.
round-trip delay 또는 round-trip time이란 무엇인가요?
Wikipedia에 따르면: "신호가 전송되는 데 걸리는 시간과 해당 신호에 대한 확인 (acknowledgment)을 받는 데 걸리는 시간의 합"입니다.
**보너스 질문: LAN의 RTT는 얼마인가요?
**
SSL handshake는 어떻게 작동하나요?
SSL handshake는 클라이언트와 서버 간에 보안 연결 (secure connection)을 설정하는 프로세스입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기