네트워킹은 여러 컴퓨터나 장치들이 서로 연결되어 데이터를 주고받는 것이다. 마치 전화망처럼 컴퓨터들이 서로 대화할 수 있게 해주는 시스템이다.
컴퓨터의 주소와 같습니다
예: 192.168.1.1, 127.0.0.1
인터넷에서 각 장치를 구분하는 고유한 번호
컴퓨터 안의 문과 같습니다
예: 웹서버는 보통 80번 포트, HTTPS는 443번 포트
하나의 컴퓨터에서 여러 서비스를 구분할 때 사용
컴퓨터들이 대화할 때의 규칙
HTTP: 웹페이지를 주고받을 때
TCP: 안전하고 순서대로 데이터 전송
UDP: 빠르지만 데이터 손실 가능성 있음
클라이언트: 요청하는 쪽 (웹브라우저, 앱)
서버: 응답하는 쪽 (웹서버, 데이터베이스)
1) 클라이언트가 서버에 요청
2) 서버가 요청을 처리
3) 서버가 클라이언트에 응답
4) 클라이언트가 응답을 받아서 처리
실생활 비유
- IP 주소: 집 주소
- 포트: 집의 각 방 번호
- 프로토콜: 편지를 보내는 방식 (우편, 택배 등)
- 클라이언트: 편지를 보내는 사람
- 서버: 편지를 받는 사람
스위칭은 네트워크에서 데이터를 전송할 때 올바른 목적지로 데이터를 전달하는 방법이다.
시스템 A에서 시스템 B로 도달하기 위해서, 두 시스템을 스위치에 연결하면 스위치가 두 시스템을 포함하는 네트워크를 생성하여 스위치에 연결한다.
시스템 A ---- 스위치 ---- 시스템 B
| | |
eth0 포트 eth0
eth0이란?
# eth0 상태 확인
ifconfig eth0
# 출력 예시
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
inet 192.168.1.100 # IP 주소
ether aa:bb:cc:dd:ee:ff # MAC 주소
eth0역할
실제 통신 과정
시스템 A: IP 192.168.1.10, MAC aa:bb:cc:dd:ee:01
스위치: 192.168.1.0/24 네트워크 생성
시스템 B: IP 192.168.1.20, MAC aa:bb:cc:dd:ee:02
스위치는 단순히 물리적 연결을 제공하는 것이 아니라, 지능적인 네트워크 장비로서 효율적인 통신을 가능하게 한다.

한 네트워크의 시스템이 다른 네트워크의 시스템에 어떻게 연결할 수 있을까?
라우터는 두 개의 네트워크를 서로 연결하는 데 도움이 된다.
라우팅은 네트워크에서 데이터 패킷이 목적지까지 도달하는 최적 경로를 결정하는 과정이다.
📍 라우팅 vs 스위칭 차이점
실제 통신 과정
[시스템 A] ---- [라우터 1] ---- [라우터 2] ---- [시스템 B]
192.168.1.10 10.0.0.1 10.0.0.2 192.168.2.20

시스템 B가 시스템 C로 패킷을 보내려고 할 때 라우터가 패킷을 전송할 네트워크의 위치를 어떻게 알 수 있을까?
라우터는 네트워크의 또 다른 장치일 뿐이다.
여기에서 게이트웨이 또는 라우터로 시스템 경로를 구성한다.
네트워크가 방이라면 게이트웨이는 외부 세계, 다른 네트워크 또는 인터넷으로 연결되는 문이다.
시스템은 그 문을 통과하기 위해 그 문이 어디에 있는지 알아야 한다.
게이트웨이란 서로 다른 네트워크 간의 연결점 역할을 한다.
[우리집] → [아파트 관리실] → [외부 도로] → [목적지]
| | |
로컬PC 기본게이트웨이(라우터) 인터넷
-> 관리실을 통해야만 외부로 나갈 수 있음!
[PC: 192.168.1.100] ─┐
[스마트폰: 192.168.1.101] ─┤
[노트북: 192.168.1.102] ─┴─ [공유기: 192.168.1.1] ── 인터넷
↑
기본 게이트웨이
통신 흐름
게이트웨이 덕분에 우리는 집안의 여러 장치들이 하나의 인터넷 연결을 통해 전 세계와 통신할 수 있다.
- 게이트웨이는 네트워크의 출입구 역할
- 기본 게이트웨이는 외부 통신의 필수 요소
- 프로토콜 변환 및 보안 기능 제공 가능
- 현대에는 소프트웨어 게이트웨이도 중요


패킷은 한 인터페이스에서 다음 인터페이스로 자동 전달되지 않아, ping 응답을 받지 못한다.

위 경로의 파일 값을 0에서 1로 변경해주면 ping 정상적 응답을 받을 수 있다.
단, 이 값은 재부팅 시 변경사항이 적용되지 않는다.
따라서 /etc/sysctl.conf 에 적용이 필요하다.
ip link
ip addr
ip addr add 192.168.1.10/24 dev eth0
ip route
route
ip route add 192.168.1.10/24 via 192.168.2.1
cat /proc/sys/net/ipv4/ip_forward
단, 재부팅 시 변경사항이 적용될 수 있게 /etc/sysctl.conf 에 적용 필요하다.
# 라우팅 테이블 전체 보기
ip route
# 특정 목적지로의 경로 확인
ip route get 8.8.8.8
# 라우팅 테이블을 자세히 보기
ip route show table all
# 특정 인터페이스의 라우트만 보기
ip route show dev eth0
쿠버네티스 구성 시 아래와 같은 Port가 열려있어야 한다.
공식 문서에서 찾아볼 수 있다.
https://kubernetes.io/docs/reference/networking/ports-and-protocols/


| 구분 | 포트 2379 | 포트 2380 |
|---|---|---|
| 용도 | Client API | Peer Communication |
| 통신 대상 | 클라이언트 ↔ etcd | etcd ↔ etcd (클러스터 내부) |
| 주요 기능 | 데이터 읽기/쓰기 | 클러스터 동기화, 리더 선출 |
| 접근 주체 | kube-apiserver, kubectl 등 | etcd 노드들끼리만 |
ip link 명령어란?시스템의 모든 네트워크 인터페이스와 그 상태 정보를 보여주는 명령어
-> 네트워크 인터페이스 목록을 보여주는 리눅스 명령어
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
3: eth0@if40208: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1410 qdisc noqueue state UP mode DEFAULT group default
4: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1360 qdisc noqueue state UNKNOWN mode DEFAULT group default
5: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1360 qdisc noqueue state UP mode DEFAULT group default qlen 1000
6: veth2ae6b68f@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1360 qdisc noqueue master cni0 state UP mode DEFAULT group default qlen 1000
7: veth18c82c50@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1360 qdisc noqueue master cni0 state UP mode DEFAULT group default qlen 1000
인터넷 ↔ eth0 ↔ flannel.1 ↔ cni0 ↔ veth인터페이스들 ↔ Pod들
CNI bin dir 위치
/opt/cni/bin
쿠버네티스 클러스터에서 사용 중인 CNI 찾기
(CNI configuration file)
ls /etc/cni/net.d