Skip to content

태그: network

총 88개의 글이 있습니다.
Noise
tls
Noise 프로토콜은 간단하고 안전한 암호화 통신을 위해 설계된 현대적인 핸드셰이크 프레임워크이다. Noise protocol framework는 핸드셰이크의 모든 협의를 피함으로써 TLS의 런타임 복잡성을 제거한 대안이다. TLS의 복잡한 협상 로직(cipher suite 선택, 프로토콜 버전 협상 등)을 제거하여 구현을 단순화한다. 사전에 정의된 패턴을 사용하므로 프로토콜 흐름이 명확하고 예측 가능하다. 노이즈를 실행하는 클라이언트와 서버는 분기하지 않는 선형 프로토콜을 따른다. TLS는 핸드셰이크 메시지에 포함된 정보에 따라 다양한 경로를 취할 수 있다(조건부 분기). Noise는 미리 정의된 패턴을 따르므로 실행 흐름이 선형적이고 단순하다. 이는 구현의 정확성을 높이고 보안 검증
UPnP
l2-internet-layer
Universal Plug and Play (UPnP)는 네트워크에 연결된 장치들이 자동으로 서로를 발견하고 통신할 수 있도록 지원하는 네트워크 프로토콜이다. 주로 가정용 네트워크 환경에서 사용되며, IP 기반의 네트워크에서 장치 간 편한 통신을 위해 설계되었다. 장치가 UPnP 네트워크에 연결되면, 다른 장치들에게 자신의 존재와 제공 가능한 서비스를 자동으로 알린다. NAT 환경에서 애플리케이션이 필요한 포트를 자동으로 열어, 사용자가 수동으로 설정할 필요를 줄인다. HTTP, XML, SOAP 등의 표준 인터넷 프로토콜을 기반으로 동작한다. 활용 사례 DLNA/UPnP 미디어 서버를 NAS나 공유기에 저장된 사진, 음악, 동영상을 스마트폰, 스마트 TV 등에서 스트리밍하는 용도로 활용할 수 있다.
DERP
network
private 통신을 위해 UDP 포트를 열어놓고 STUN과 ICE를 사용하여 통신하는 경우가 있다. 하지만 이 방법은 필요한 커넥션의 갯수만큼 많은 포트를 열어놓아야 하기 때문에, Tailnet에선 보안적으로 더 우수한 DERP(Designated Encrypted Relay for Packets) 라는 방법을 사용한다. DERP는 각 수신자에게 가장 가까운 DERP를 통해 트래픽을 비대칭적으로 라우팅한다. Tailscale 개인 키는 생성된 노드를 절대 떠나지 않는다. 이는 DERP 서버가 귀하의 트래픽을 해독할 수 있는 방법이 전혀 없다는 것을 의미한다. 단지 이미 암호화된 트래픽을 한 노드에서 다른 노드로 맹목적으로 전달할 뿐이다. 이는 남용을 방지하기
WebRTC
network
WebRTC(Web Real-Time Communication)란 웹 애플리케이션과 사이트가 중간자 없이 브라우저 간에 오디오나 영상 미디어를 스트림 하거나, 데이터를 자유롭게 교환할 수 있도록 하는 기술이다. 한마디로 요약하자면 드라이버나 플러그인 설치 없이 웹 브라우저 간 P2P 연결을 통해 데이터 교환을 가능하게 하는 기술이다. WebRTC는 기존의 웹 2.0에서 한층 더 나아가, 서버와 같은 중간자를 거치지 않고 브라우저 간을 P2P로 연결하는 기술이다. 화상 통화와 실시간 스트리밍, 파일 공유, 스크린 공유 등의 기능을 WebRTC 기반으로 구현할 수 있다. P2P 연결은 중개 서버를 거치지 않기 때문에 빠른 속도가 보장되며, HTTPS가 강제되기 때문에 중간자 공격에 대한 보안이 보장된다.
VPN
vpn
VPN이란 가상사설망이다. TCP/IP 기반의 개방형 네트워크인 인터넷에서 한 네트워크에서 다른 네트워크로 이동하는 모든 데이터 정보를 암호화하여 사설망 기능을 제공하기 위해 도입된 기술이다. 즉, 원격지에서 특정 네트워크(서버)와 마치 유선으로 연결된 것처럼 연결하는 것이다. VPN 터널은 암호화되기 때문에 해킹을 당했을 시에도 통신 데이터를 보호할 수 있다. VPN의 종류는 대표적으로 IPsec VPN, SSL VPN이 있다. IPsec VPN IPsec VPN은 VPN 게이트웨이(서버) 장비 2개를 서로 연결함으로써 네트워크와 네트워크를 연결하는 VPN이다. 기업의 본사 네트워크와 지사 네트워크를 연결하는 용도로 주로 사용된다. IPSec VPN을 IPSec VPN이라 부르는 이유는 VP
ServiceDNS
dns
생성된 서비스의 IP는 어떻게 알 수 있을까? 서비스가 생성된 후 kubectl get svc를 이용하면 생성된 서비스와 IP를 받아올 수 있지만, 이는 서비스가 생성된 후이고, 계속해서 변경되는 임시 IP이다. DNS를 이용하는 방법 가장 쉬운 방법으로는 DNS 이름을 사용하는 방법이 있다. 서비스는 생성되면 `[서비스 명].[네임스페이스명].svc.cluster.local` 이라는 DNS 명으로 쿠버네티스 내부 DNS에 등록이 된다. 쿠버네티스 클러스터 내부에서는 이 DNS 명으로 서비스에 접근이 가능한데, 이때 DNS에서 리턴해주는 IP는 외부 IP (External IP)가 아니라 Cluster IP (내부 IP)이다. 간단한 테스트를 해보자. hello-node-svc 가 생성이 되었는데,
eBPF
network
eBPF는 커널에서 샌드박스된 특별한 프로그램을 실행할 수 있게 해주는 프로그래밍 시스템이다. Netfilter나 iptables처럼 커널과 유저 공간을 오가지 않고 커널 내에서 직접 동작한다. eBPF 이전에는 BPF(Berkeley Packet Filter)가 있었다. BPF는 커널에서 네트워크 트래픽을 분석하는 데 사용되는 기술이다. BPF는 패킷 필터링을 지원하는데, 유저 공간 프로세스가 어떤 패킷을 검사할지 지정하는 필터를 제공할 수 있다. BPF의 대표적인 사용 사례가 `tcpdump`다. tcpdump는 필터를 BPF 프로그램으로 컴파일해서 BPF에 전달한다. BPF의 기법은 이후 다른 프로세스와 커널 작업으로 확장되었다. tcpdump 예제 bash $ sudo tcp
bandwidth
network
대역폭(Bandwidth)이란, 지정된 시간 내에 전송할 수 있는 데이터의 양이다. 대역폭은 네트워크가 얼마나 많은 정보를 전송할 수 있는지를 나타내는 척도이다. 데이터가 수도관 속의 물처럼 흘러간다고 보면, 대역폭은 그 관의 굵기에 해당한다. 대역폭이 클수록 한 번에 더 많은 데이터를 보낼 수 있다. ISP(인터넷 서비스 제공업체)는 보통 대역폭을 Mbps(초당 수백만 비트)나 Gbps(초당 수십억 비트) 단위로 표시한다. 대역폭 측정 어떤 장치든 현재 대역폭을 측정할 수 있다. 전용 웹사이트나 ISP가 연결을 통해 파일을 보내고 돌아오는 시간을 측정하는 방식이다. 대역폭 요구사항 필요한 대역폭은 용도에 따라 크게 달라진다. 인스턴트 메시징: 약 1Kbps VoIP 통화: 1~3
CRC
l1-network-access-layer
CRC는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식을 말한다. 송신측에서는 CRC값을 데이터에 붙인 코드워드를 전송하며, 수신측에서는 수신된 코드워드에서 CRC값을 이용하여 에러를 발견한다. 오류 제어를 위한 후진 오류 수정(BEC, Backward Error Correction) 방식 중 오류 검출 방식이다. CRC는 이진법 기반의 하드웨어에서 구현하기 쉽고, 데이터 전송 과정에서 발생하는 오류들을 검출하는 데 탁월하다. 하지만 CRC의 구조 때문에 의도적으로 주어진 CRC 값을 갖는 다른 데이터를 만들기가 쉽고, 따라서 데이터 무결성을 검사하는 데는 사용될 수 없다. 이런 용도로는 MD5 등의 함수들이 사용된다. 코드워드 계산 과정
Ethernet과 TokenRing
l1-network-access-layer
📡 Ethernet 이더넷(Ethernet)이란 CSMA/CD라는 프로토콜을 사용해 네트워크에 연결된 각 기기들이 하나의 전송 매체를 통해 인터넷 망에 접속해 통신할 수 있도록 하는 네트워크 방식이다. CSMA/CD란 Carrier Sense Multiple Access / Collision Detection의 약자로, 다중 접속(콜리전)이 생겼을때 그것을 감지해 대기 후 재전송하는 것을 뜻한다. 즉, 네트워크 상의 데이터 신호들을 감지하다 두 개 이상의 PC가 서로 데이터를 보내다가 충돌이 발생하면 임의의 시간동안 기다린 후 다시 데이터를 보낸다. 따라서 CSMA/CD라는 프로토콜을 사용하는 이더넷이라는 네트워킹 방식은 네트워크상에 하나의 데이터만 오고 갈 수 있다는 특징이 있다. 과거에 쓰이던 Tok
L2 스위치와 STP
l1-network-access-layer
--- 개요 스위치: 같은 네트워크 내에서 통신을 중재하는 L2 장비 이더넷을 구성하기 위해 사용되는 경우 이더넷 스위치라고도 불린다 패킷 경합을 없애서 여러 단말이 동시에 효율적으로 통신할 수 있게 함 구조가 간단하고 가격이 저렴함. 신뢰성과 성능이 높음. MAC 주소 테이블 --- 여러 NIC와 포트로 연결됨 각 NIC의 MAC을 기억해놓고, 어느 호스트가 특정 MAC 주소와 연결하고 싶다 요청하면 연결해줌 허브는 한 포트로 신호가 들어오면 같은 신호를 다른 모든 포트로 전달함 반면 스위치는 플러딩할 때만 모든 포트로 전달하고, 나머지의 경우에는 정보를 MAC 주소 Table에 저장해서 필요한 포트에만 전달하기 때문에 속도가 더 빠름 동작 과정 -
MTU
l1-network-access-layer
데이터링크에서 하나의 프레임 또는 패킷에 담아 운반 가능한 최대 크기 MTU란 TCP/IP 네트워크 등과 같은 패킷 또는 프레임 기반의 네트워크에서 전송될 수 있는 최대 크기의 패킷 또는 프레임을 말한다. 한 번에 전송할 수 있는 최대 전송량(Byte)인 MTU 값은 매체에 따라 달라진다. Ethernet 환경이라면 MTU 기본값은 1500, FDDI 인 경우 4000, X.25는 576, Gigabit MTU는 9000 정도 등 매체 특성에 따라 한 번에 전송량이 결정된다. 상위 계층(즉, 물리적, 데이터링크, 네트워크, 인터넷, 애플리케이션 중 네트워크 계층 이상 계층을 말함)의 데이터(헤더 포함된 전체 사이즈)의 수용 가능한 최대 크기로도 생각할 수 있다. 따라서, 상위 계층 프로토콜(네트워크 계층 이
NIC
l1-network-access-layer
NIC(Network Interface Card, Controller)는 컴퓨터를 네트워크에 연결하기 위한 하드웨어 장치이다. NIC는 이더넷 또는 Wi-Fi와 같은 특정 물리 계층 및 데이터 링크 계층 표준을 사용하여 통신하는데 필요한 전자 회로를 구현한다. 동일한 LAN(local area network) 상의 컴퓨터 간의 통신 및 IP(Internet Protocol)와 같은 라우팅 가능한 프로토콜을 통한 대규모 네트워크 통신을 가능하게 한다. 또, 케이블을 사용하거나 무선으로 컴퓨터 네트워크를 통해 컴퓨터가 통신할 수 있게 해준다. L2 장비로서 네트워킹 매체에 대한 물리적 액세스를 제공하고, 고유하게 할당된 MAC 주소를 사용하여 하위 수준의 주소 지정 시스템을 제공한다. 역할
데이터링크 제어(DLC)
l1-network-access-layer
데이터 링크 제어(DLC, DataLink Control)는 두 인접한 노드간의 통신의 프레임 짜기, 오류검출 작업 절차를 포함하는 데이터링크층의 부계층이다. 프레임 짜기 데이터 링크 층은 비트들을 프레임으로 만들어서 각 프레임이 다른 프레임과 구분되도록 해야한다. 데이터링크층의 프레임 짜기(framing)는 송신자와 수진자의 주소를 추가하여 한 방신지에서 한 목적지로 가는 메시지를 구분한다. 목적지 주소를 패킷이 가야 할 곳을 규정한다. 송신자 주소는 수신자가 수신에 대해 확인응답하는 데 필요하다. 프레임 크기 프레임은 고정 길이나 가변 길이가 될 수 있다. 고정 길이 프레임 짜기(fixed-size-framing), 그렇지 않고 크기가 때에따라 바뀌는 방식을 가변 길이 프레임 짜기(variab
매체 접근 제어(MAC)
l1-network-access-layer
공유 링크를 사용할 떄 링크에 접근하는 것을 조율하기 위한 데이터링크 계층의 다중 접근 프로토콜 동시에 각 노드가 링크에 대한 접근을 확보했다는 것을 확정하고, 충돌을 방지한다 크게 임의접근 방식, 제어 접근 방식, 채널화 방식으로 총 세가지가 있다. 임의 접근 방식 다수 노드가 공유 매체에서 프레임을 전송하기 위해 스케줄링 및 전송 순서 없이 충돌 감지 및 회피, 충돌 발생 시 재전송 하는 방식이다. (일단 보내고 생각) 각 노드는 다른 노드의 간섭을 받지 않고 공유 매체에 접근할 권한을 보유한다. ALOHA 타 노드와 무관하게 프레임 전송, 충돌 허용 프레임 충돌 시 전송 실패 프레임 재전송 취약시간: 충돌이 발생할 수 있는 시간
CIDR
l2-internet-layer
인터넷에 연결되는 모든 컴퓨터, 서버 및 최종 사용자 디바이스에는 IP 주소라는 고유한 번호가 연결되어 있으며, 디바이스는 이러한 IP 주소를 사용하여 서로 찾고 통신한다. 1990년대 초반까지 IP 주소는 클래스 기반 주소 지정 시스템을 사용하여 할당되었다. 주소의 전체 길이는 고정되었으며 네트워크 및 호스트 부분에 할당되는 비트 수도 고정되었다. 즉, A, B, C, D, E 등으로 나뉘던 Class는 CIDR가 나오기 전 사용했던 네트워크 구분 체계이다. CIDR가 나오면서 Class 체계보다 더 유연하게 IP주소를 여러 네트워크 영역으로 나눌 수 있게 되었다. 클래스 없는 주소 또는 Classless Inter-Domain Routing(CIDR) 주소는 가변 길이 서브넷 마스킹(V
IP
l2-internet-layer
IP는 송신 호스트와 수신 호스트가 네트워크에서 정보(패킷)를 주고받는 데 사용하는 정보 위주의 규약이다. OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다. IP에서는 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해 IP주소를 배정한 후, 그 주소를 사용해 데이터를 전송할 대상을 특정한다. IP의 특징 비연결성 패킷을 받을 대상과 연결을 확립하여 데이터를 전송하지 않는다. 패킷을 받을 대상이 없거나, 서비스 불능 상태여도 패킷 전송 비신뢰성(unreliability) IP는 전송 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 않는다. 전송 과정에서 패킷이 손상되거나 패킷의 순서가 바뀐 경우, 또는 패킷이 사라진 경우에도
IP 데이터그램과 단편화
l2-internet-layer
IP 데이터그램은 아래와 같은 형태로 구성되어있다. `VERS` 4비트로 데이터그램의 IP 프로토콜 버전을 명시한다. 다른 버전의 IP는 다른 데이터그램 형식을 사용하기 때문에 라우터는 버전 번호를 확인하여 데이터그램의 나머지 부분을 어떻게 해석하는지 결정한다. `HLEN` IPv4 데이터그램은 헤더에 가변 길이의 옵션을 포함하기 때문에 4비트의 헤더 길이를 통해 IP 데이터그램에서 실제 페이로드가 시작하는 곳을 명시해준다. 대부분 IPv4 데이터그램은 옵션을 포함하지 않아서 데이터그램의 헤더는 20바이트가 통상적이다. `SERVICE TYPE` 서비스 타입 비트는 서로 다른 유형의 IP 데이터그램을 구별한다. `TOTAL LENGTH` 바이트로 계산한 IP 데이터그램(헤더와 데이터
IPSec
l2-internet-layer
IPSec IP계층(네트워크 계층)을 안전하게 보호하기 위한 기법이다. 대부분의 네트워크 응용프로그램은 IP 계층을 사용하기 때문에 IP계층에서 동작하는 보안, 즉, 패킷에 대한 보안을 제공하는 IP Security(IPSec)가 필요하다. 모드 IPSec에는 두 가지 모드가 있는데, IP의 내용(payload)만을 보호하느냐, 아니면 헤더까지 모두 보호하느냐에 따라서 전송 모드(Transport Mode), 후자는 터널 모드(Tunnel Model)로 나뉜다. 전송 모드(Transport Mode) 전송모드는 전송 계층와 네트워크 계층 사이에 전달되는 payload를 보호한다. 중간에 IPSec 계층이 있기 때문에 IPSec 헤더가 붙고, 이후에 네트워크 계층에서는 이것이 모두 상위층에서 보낸
NAT
l2-internet-layer
2011년 2월, 인터넷 주소 관리기구인 IANA는 더 이상의 IPv4 할당이 없을 것이라고 선언했다. IPv4는 약 43억 개의 한정된 주소를 사용할 수 있는데 반해 인터넷의 수요가 빠르게 증가하여 각 대륙에 할당한 IPv4가 동이 나버려 더 이상 할당할 수 없게 된 것이다. IPv6가 조금씩 상용화 되고 있긴 하지만, 이상하게도 우린 아직도 IPv4를 원활하게 사용하고 있다. 많지 않은 수의 IPv4로 현재까지 별 탈 없이 인터넷을 사용할 수 있게 된 것은 Private Network(이하 사설망) 덕분이라고 볼 수 있다. Private Network(사설망)의 탄생 사설망 또는 프라이빗 네트워크(private network)는 인터넷 어드레싱 아키텍처에서 사설 IP 주소 공간을 이용하는 네트워크
라우터
라우터
라우터는 경로를 지정해주는 장비이다. 들어오는 패킷의 목적지 IP 주소를 확인하고 자신이 가진 경로(Route) 정보를 이용해 패킷을 최적의 경로로 포워딩한다. Hop-by-Hop 라우팅: 라우터는 인접한 라우터까지만 경로를 지정하면 인접 라우터(Next-hop)에서 최적의 경로를 다시 파악한 후 라우터로 패킷을 포워딩한다. Next-hop을 지정할 때는 세 가지의 방법을 사용할 수 있다. 다음 라우터의 IP을 지정 라우터의 나가는 인터페이스를 지정 : 상대방 넥스트 홉 라우터의 IP주소를 몰라도 MAC주소 정보를 알아낼 수 있을 때만 사용. 라우터의 나가는 인터페이스와 다음 라우터의 IP를 동시에 지정 : 이 경우 VLAN 인터페이스와 같은 논리적인 인터페이스를 사용
멀티캐스트 라우팅
라우터
유니캐스팅: 하나의 발신지와 목적지(1:1) 멀티캐스팅: 하나의 발신지와 목적지 그롬(1:n) DVMRP(Distance Vector Multicast Routing Protocol) 거리-벡터 멀티캐스트 라우팅 프로토콜 유니캐스트 라우팅에 사용되는 RIP를 기반으로 멀티캐스팅이 가능하도록 확장한 것이다. DVMRP는 발신지 기반 트리 기법을 사용한다. 멀티캐스트 패킷을 수신할 각 라우터는 먼저 다음과 같은 세 가지 단계를 거쳐 발신지 기반 멀티캐스트 트리를 생성해야 한다. --- 1. 라우터는 RPF(Reverse Path Forwarding)로 발신지와 자신 사이의 최적 트리를 생성하는 시뮬레이션을 한다. Multicast에서 모든 노드에 대한 최적 트리를 찾기는 복잡하다. 대신,
서브넷
l2-internet-layer
흔히 사용되는 IPv4 주소 체계는 클래스를 나누어 IP를 할당한다. 하지만 이 방식은 매우 비효율적이다. 예를 들어 어떤 기관에 A 클래스를 할당한다고 하면 16,777,214개의 호스트를 할당할 수 있게 되는데, 이 기관이 100개의 호스트를 할당할 때 16,777,114개의 호스트는 그대로 낭비된다. 이러한 비효율성을 해결하기 위해 네트워크 장치들의 수에 따라 효율적으로 사용할 수 있는 서브넷(subnet)이 등장하게 되었다. 서브넷은 IP 주소에서 네트워크 영역을 부분적으로 나눈 부분 네트워크를 뜻한다. 이러한 서브넷을 만들 때 사용되는 것이 바로 서브넷 마스크이다. 즉, 서브넷 마스크는 IP 주소 체계의 Network ID와 Host ID를 분리하는 역할을 한다. 서브넷 마스크(su
Sticky Session과 Session Clustering
l3-transport-layer
Load balancing이란 대용량 트래픽을 장애 없이 처리하기 위해 여러 대의 서버에 적절히 트래픽을 분배하는 것이다. 이러한 서비스에서는 세션 관리에 문제가 생길 수 있다. 예를 들어, 로그인 정보를 한 서버의 세션에 저장했는데 다음 요청을 다른 서버에 보내는 경우에 로그인 정보가 사라지는 문제가 생긴다. 이러한 문제를 해결하기 위해 특정 클라이언트의 요청을 처음 처리한 서버로만 보내는 것을 Sticky Session이라 말한다. 일반적으로 특정 서버로 요청 처리를 고정시키는 방법은 Cookie를 사용하거나 클라이언트의 IP tracking 하는 방식이 있다. AWS ELB는 cookie를 사용하여 Http Response에 cookie를 이용해서 해당 클라이언트가 가야하는 EC2 insta
TCP와 UDP
l3-transport-layer
TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결지향적 프로토콜이다. TCP는 흐름제어, 혼잡제어 등을 통해 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(데이터, 메세지, 세그먼트라는 블록 단위)을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다. TCP의 특징 연결지향 TCP는 통신 과정에서 클라이언트와 서버간에 3-way handshaking으르 통해 연결을 확립한 후에 전송을 시작하기 때문에 두 호스트가 논리적으로 연결되어있음을 보장할 수 있다. 흐름제어(Flow control) 흐름제어는 송신측과 수신측의 데이터 처리 속도 차이를 해결하기
CDN
l4-appplication-layer
CDN은 지리적으로 분산된 여러 개의 서버이다. 네트워크 설계로 인해 발생하는 통신 대기, 지연시간을 줄이는 것을 목적으로 한다. CDN은 사용자가 전세계에 있더라도 가까운 CDN 서버에 요청을 보내 빠르게 응답을 받을 수 있고, 한 서버에 장애가 생겼을떄 다른 서버를 사용하여 서비스를 그대로 응답받을 수도록 한다. 또한, 클라이언트와 웹 사이트 서버 간에 중간 서버를 두어 효율성을 높이고, 클라이언트-서버 통신의 일부를 관리한다. 웹 서버에 대한 웹 트래픽을 줄이고, 대역폭 소비를 줄이며, 애플리케이션의 사용자 환경을 개선한다. 장점 페이지 로드 시간 단축 페이지 로드 시간이 너무 느리면 웹 사이트 트래픽이 감소할 수 있다. CDN은 반송률을 줄이고 사용자가 사이트에서 보내는 시간을
DNS 레코드유형
l4-appplication-layer
|레코드|설명| |-|-| |A(Host)주소/호스트 레코드|정규화된 도메인 이름/호스트명(FQDN)을 IPv4에 연결한다.| |AAAA주소 레코드|호스트를 IPv6에 연결한다.| |CNAME(Canonical NAME)별칭 레코드|실제 호스트명(A레코드)과 연결되는 별칭,별명을 정의 한다.| |MX(Mail Exchange)메일 교환 레코드|메일 서버에 도달할 수 있는 라우팅정보(메일서버)를 제공한다.| |SRV(SeRVice)서비스 위치 레코드|비슷한 TCP/IP 서비스를 제공하는 다수의 서버 위치 정보를 제공한다.| |PTR(PoinTeR)포인터 리소스 레코드|다른 DNS 레코드를 가리킴, 역방향 조회에서 A레코드를 가리킬때 사용한다.| |SOA(Start Of Authority)권한시작 레코드|존(Z
FTP Active, Passive mode
l4-appplication-layer
FTP는 파일을 전송하기 위해 두 개의 세션을 사용한다. 컨트롤 프로토콜과 데이터 프로토콜이 완전히 분리되어있고, 통신 방법이 다른 두가지 모드를 가지고 있다. Active 모드 FTP의 기본적인 구동 방식은 Active 모드이다. 컨트롤 프로토콜을 클라이언트에서 서버로 통신을 시작하고, 데이터 프로토콜은 서버에서 클라이언트 쪽으로 데이터를 푸시하는 방식이다. Active 모드의 작동 흐름은 다음과 같다. 1. 클라이언트가 FTP 서버에 접속. 클라이언트는 1023번 이상의 TCP 포트를, 서버는 21번 포트 사용 2. 클라이언트가 1025번 포트로 데이터를 수신하겠다 알림 3. 서버는 송신하겠다고 응답 4. 서버에서 데이터를 보냄 Active 모드를 사용할 때 중간에 방화벽이나 세션 장비
HTTP
http
HTTP는 웹 상에서 하이퍼텍스트 등의 정보를 주고받는 데 쓰이는 프로토콜로, 서버와 클라이언트의 사이에서 어떻게 메시지를 교환할지를 정해 놓은 규칙이다. HTTP는 요청(Request)와 응답(Response)로 구성되어 있고, 클라이언트가 요청을 하면 서버가 응답을 하는 구조로 되어 있다. HTTP 메서드 GET 리소스를 조회하는 메서드이다. 서버에 전달하고 싶은 데이터는 query(쿼리스트링)를 통해 전달할 수 있다. 캐싱이 가능하다. POST 요청한 데이터를 처리하는 메서드이다. 메시지 바디를 통해 서버로 요청 데이터 전달한다. (들어온 데이터를 처리하는 모든 기능을 수행할 수 있다.) 대상 리소스가 가지는 의미에 따라 요청에 포함된 표현을 자유
SMTP의 보안 시스템
l4-appplication-layer
SMTP는 MARC, DKIM, SPF 등 세 가지 방법으로 이메일에 대한 보안을 지킨다. 함께 사용하면 스팸 발송자, 피싱 공격자 등 권한이 없는 당사자가 소유하지 않은 도메인을 대신하여 이메일을 보내는 것을 막을 수 있다. SPF, DKIM, DMARC를 올바르게 설정하지 않은 도메인에서는 이메일이 스팸으로 격리되거나 수신자에게 전달되지 않을 수 있다. 또한 스팸 발송자가 자신을 사칭할 위험도 있다. DKIM, SPF, DMARC 레코드는 모두 DNS TXT 레코드로 저장된다. 1. SPF (Sender Policy Framework) SPF는 누군가(google.com)로부터 메일이 발송되었을 때, 이 메일의 발송지(111.111.111.111)가 진짜 해당 도메인인 google.com으로부터
OSI 7Layer
network
OSI 모형은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 일반적으로 OSI 7 계층(OSI 7 Layer)이라고 한다. 분산된 이기종 시스템간의 네트워크 상호호환을 위한 표준 아키텍처를 정의하여, 통신을 하기 위한 업무를 계층별로 분할하고 분업할 수 있다는 점에서 의의를 가진다. 계층 기능 1. 물리 계층(Physical Layer) 네트워크 데이터가 전송되기 위한 기본적인 하드웨어 기술을 담당한다. 다양한 특징의 하드웨어 기술이 접목되어 있기에 OSI 아키텍처에서 가장 복잡한 계층으로 간주된다. 리피터, 네트워크 허브, 모뎀 등의 장비가 물리계층에 속하며 비트단위의 데이터를 다룬다. 2. 데이터 링크 계층(Date
Switch
network
네트워크 스위치는 받은 패킷을 어느쪽으로 보낼지 결정하는 역할을 하는 하드웨어이다. 스위치는 어떤 정보를 기준으로 스위칭을 하느냐에 따라 L1, L2, L3, L4, L7 스위치 등 다양한 종류가 있다. L1 허브를 L1 스위치라고 부르기도 한다. L2 L2 스위치는 스위치 패킷이 왔을 때, 그 패킷의 목적지가 어디인지를 본 후에 해당 목적지로 보내주는 역할을 수행한다. 2계층 주소인 MAC 주소를 기반으로 스위칭한다. 허브가 한 포트로 신호가 들어오면 같은 신호를 다른 모든 포트로 전달하는 것에 비해서, 스위치는 신호를 필요로 하는 포트에만 신호를 전달하기 때문에 속도가 빠르다. 스위치가 이 기능을 수행하기 위해서는 지나가는 트래픽의 목적지를 정확히 알아야 하니, 자신과 연결된 장비들의 맥
가상화 기술
개념
가상화는 컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 광범위한 용어이다. "물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있다. 이것은 다중 논리 리소스로서의 기능을 하는 것처럼 보이는 서버, 운영 체제, 응용 프로그램, 또는 저장 장치와 같은 하나의 단일 물리 리소스를 만들어 낸다. 아니면 단일 논리 리소스처럼 보이는 저장 장치나 서버와 같은 여러 개의 물리적 리소스를 만들어 낼 수 있다. 출처: 위키백과 네트워크에서는 다양한 가상화 기술이 사용되고 있다. 가상화 기술을 이용하면 리소스를 더 효율적으로 사용할 수 있고 운영 비용이나 도입 비용을 줄일 수 있다. 기존 레거시 환경의 문제점을 해결할 수도 있다. 그러
네트워크 보안
개념
정보 보안 IT에서 다루는 정보 보안은 "다양한 위협으로부터 보안을 보호하는 것"을 뜻한다. 3대 보안 정의는 다음과 같다. 기밀성(Confidentiality) 인가되지 않은 사용자가 정보를 보지 못하게 하는 작업이다. 대표적인 기밀성은 암호화 작업이다. 무결성(Integriality) 정확하고 완전한 정보 유지에 필요한 모든 작업을 말한다. 누군가가 정보를 고의로 훼손하거나 중간에 특정 이유로 변경이 가해졌을 때, 그것을 파악해 잘못된 정보가 전달되거나 유지되지 못하게 하는 것이 무결성이다. IT의 대표적인 무결성 기술은 MD5, SHA와 같은 Hash 함수를 이용해 변경 여부를 파악하는 것이다. 가용성(Availability) 정보가 필요할 때, 접근을 허락하는 일련의 작업이다
네트워크 침해
개념
스니핑 한 서브 네트워크 내에서 전송되는 패킷의 내용을 임의로 확인하는 공격 중요한 데이터는 SSL와 같은 암호화 통신 방식을 사용함으로써 대응한다. 스푸핑 네트워크 서비스 혹은 패킷 정보를 임의로 변경하여 공격에 사용하는 기법 IP 주소, DNS 주소, MAC 주소 등의 정보를 변조하여 공격의 탐지 및 역추적이 어렵다. IP 스푸핑 TCP/IP 구조의 취약점을 악용, 공격자가 자신의 IP를 변조해 IP 기반 인증 등의 서비스를 무력화한다. IP 기반 인증을 최소화하고 TCP 시퀀스 번호를 랜덤으로 지정해 대응한다. ARP 스푸핑 ARP 프로토콜의 취약점을 이용, IP-MAC 매핑 정보를 브로드캐스트해 ARP 테이블의 정보를 변조한다. `
이중화
개념
이중화의 목적 장애가 발생하더라도, 이중화 된 다른 인프라를 통해서 서비스가 지속되도록 해준다. (SPoF 방지) 액티브-스탠바이가 아닌, 액티브-액티브로 구성할 때는, 이중화 된 인프라에서 서비스 요청을 동시에 처리할 수 있기에, 처리 가능 용량이 늘어난다. 다만, 이렇게 증가된 인프라를 기준으로 서비스를 운영하다보면, 특정 지점에 장애가 발생했을 때 인프라 용량이 절반으로 떨어져 정상적인 서비스 운영이 어렵다. 따라서 인프라 이중화를 구성할 때는, 이중화 된 인프라 중 일부에서 장애가 발생하더라도 정상적인 서비스에 문제가 없도록 용량을 산정해 설계해야 한다. LACP 두 개의 물리 인터페이스가 논리 인터페이스를 구성하는 프로토콜 1990 년대 중반까지는 각 벤더별로 장비 간 대역폭을 늘리기 위
로드밸런서
network
부하 분산 서비스 규모가 커질 때, 물리, 가상 서버 한 대로는 모든 서비스를 수용할 수 없게 된다. 서비스 가용성을 높이기 위해서 보통 하나의 서비스를 두 대 이상의 서버로 구성하는데, 각 서버 IP 주소가 다르기 때문에 사용자가 서비스를 호출할 때는 어떤 IP 로 서비스를 요청할 지 결정해야 한다. 이런 문제점 해결을 위해서, L4, L7 로드밸런서를 사용한다. 로드 밸런서는 부하를 다수의 장비에 분산시키기 위해 가상 IP 주소를 갖게 된다. 사용자가 VIP 로 서비스를 요청하게 되면, 해당 VIP에 연결된 실제 서버의 IP로 해당 요청을 전달한다. 헬스 체크 로드 밸런서에서는 주기적으로 부하 분산을 하는 각 서버의 서비스를 주기적으로 헬스 체크해 정상적인 서비스로만 트래픽이 갈 수
iptables
network
Iptables 방화벽은 규칙을 관리하기 위해 테이블을 사용한다. 이 테이블은 사용자가 익숙한 형태에 따라 규칙을 구분한다. 예를 들어 만약 하나의 규칙이 network 주소 변환을 다룬다면 그것은 nat 테이블로 놓여질 것이다. 만약 그 규칙이 패킷을 목적지로 허용하는데 사용된다면 그것은 filter 테이블에 추가 될 것이다. 이러한 각각의 iptables 테이블 내에서 규칙들은 분리된 체인안에서 더 조직화(organize)된다. 테이블들이 일반적인 규칙의 목적에 의해 정의되는 동안 빌트인 체인들은 그것들을 트리거 하는 netfilter hook들을 표현한다. 체인들은 기본적으로 언제 규칙이 평가될지를 결정한다. 아래는 빌트인 체인들의 이름인데 이것들은 netfilter 이
namespace와 cgroup
network
namespace VM에서는 각 게스트 머신별로 독립적인 공간을 제공하고 서로가 충돌하지 않도록 하는 기능을 갖고 있다. 리눅스에서는 이와 동일한 역할을 하는 namespaces 기능을 커널에 내장하고 있다. 리눅스 커널에서는 다음 6가지 namespace를 지원하고 있다. |namespace|description| |-|-| |mnt(파일시스템 마운트)|호스트 파일시스템에 구애받지 않고 독립적으로 파일시스템을 마운트, 언마운트 가능| |pid(프로세스)|독립적인 프로세스 공간을 할당| |net(네트워크)|namespace간에 network 충돌 방지 (중복 포트 바인딩 등)| |ipc(SystemV IPC)|프로세스간의 독립적인 통신통로 할당| |uts(hostname)|독립적인 hostname 할
network namespaces
network
컨테이너는 namespace를 사용하여 같은 host 안에서 자원을 격리한다. network namespace는 도커와 같은 컨테이너에서 네트워크 격리를 구현하기 위해 쓰인다. 기본적으로 호스트는 외부 네트워크와 연결하기 위한 인터페이스와 Routing Table, ARP Table을 가지고 있는데, 컨테이너를 만들면 그 컨테이너에 대한 network namespace가 생성되어서 호스트의 네트워크 인터페이스와 완전히 분리된다. 대신에, 추가적으로 컨테이너 각각에 가상의 인터페이스와 Routing Table, ARP Table을 설정하면 설정대로 통신을 할 수 있게 된다. 호스트에서는 각 네트워크 인터페이스의 네트워크 요소를 확인할 수 없으며, 각 네임
Virtual Networking Interface
network
리눅스는 컨테이너 기술의 기반이 되는 virtual networking 관련 기능들을 제공한다. virtual networking에 자주 사용되는 대표적인 네트워크 인터페이스를 알아보자. Bridge Linux Bridge는 일반적인 네트워크 스위치와 유사하게 동작한다. Bridge는 주로 라우터, 게이트웨이, VM 등에서 패킷을 목적지로 전달(forwarding)하는 역할을 수행한다. Bridge는 STP, VLAN filter, multicast snooping등의 기능도 추가적으로 지원한다. 아래의 소스코드는 리눅스에서 Bridge를 생성하고, 서로 다른 네트워크 인터페이스와 연결하는 과정을 코드로 작성한 예시이다. 이 과정을 거치면, 브릿지를 통해 VM 1, VM 2과 network nae
ifconfig
주요명령어
ifconfig는 시스템에 설치된 네트워크 인터페이스 정보를 확인하거나 수정하는 명령어이다. `ifconfig [인터페이스][옵션]` 형식으로 입력하며, 아무 옵션 없이 `ifconfig`를 입력하면 현재 설정된 네트워크 인터페이스 상태를 보여준다. `lo`는 루프백 인터페이스로 자기 자신과 통신하는 데 사용하는 가상 장치이며, 흔히 랜카드라고 불리는 유선 네트워크 인터페이스는 `eth0`, 무선 네트워크 인터페이스는 `wlan0`라고 명명한다. IP 주소는 호스트에 하나씩 부여되는 것이 아니라 네트워크 인터페이스에 할당되기 때문에 각 네트워크 인터페이스마다 다른 IP 주소를 할당할 수 있다. 내가 테스트해본 서버에서는 embedded NIC인 `eno1`와 가상 이더넷 인터페이스인 `veth`, 그리