[네트워크] 네트워크 기초
본 게시글은 [면접을 위한 CS 전공지식 노트]를 기반으로 개인 학습 내용을 정리한 글입니다.
네트워크 기초
네트워크란
노드(node)와 링크(link)가 서로 연결되어 있으며, 리소스를 공유하는 집합
여러 개의 장치가 서로 연결되어 데이터를 주고 받을 수 있도록 구성된 시스템
노드 : 서버, 라우터, 스위치 등 네트워크 장치
링크 : 유선 또는 무선
처리량과 지연시간
좋은 네트워크란, 많은 처리량 처리 & 짧은 지연시간 & 적은 장애 빈도 & 좋은 보안을 갖춘 네트워크
처리량 (Throughput) : 링크 내에서 일정 시간 동안 성공적으로 전달된/전달가능한 데이터의 양, 얼만큼의 트래픽을 처리했는지
- ‘많은 트래픽을 처리한다’ = ‘많은 처리량을 가진다’
- 단위 : bps(bits per second), MB/s(Megabytes per second) 등
- 특징
- 실측값: 네트워크 속도 측정 프로그램/성능테스트로 확인 가능
- 환경에 따라 달라짐 : 장비 성능, 네트워크 혼잡 오류율, 프로토콜 오버헤드 등에 영향을 받음
- 대역폭 $\geq$ 처리량: 실제 처리량은 항상 최대 대역폭 이하
지원 시간(Latency) : 요청이 처리되는 시간, 어떤 메시지가 두 장치 사이를 왕복하는데 걸린 시간
- 단위 : 밀리초(ms), 마이크로초( $\mu$ s )
- 특징
- 지연시간이 짧을수록 시스템 반응이 빠르다고 느껴짐
- 매체 타입(유선/무선), 패킷 크기, 라우터의 패킷 처리 시간에 영향을 받음
용어
패킷 : 네트워크에서 데이터를 잘게 나눈 작은 조각- 각 패킷에 번호가 있어서, 받는 쪽에서 순서대로 다시 조립
- 각 패킷은 헤더(출발지/목적지 주소, 순서정보, 오류검출 정보 등)와 데이터(실제 보내고 싶은 내용의 일부)로 구성
주요 역할
- 패킷 수신 : 다른 라우터/컴퓨터/서버등에서 패킷 받음
- 경로 결정 : 목적지 주소(IP 주소)를 보고 어디로 보낼지 판단
- 패킷 전달 : 다음 라우터나 목적지로 전송
네트워크 토폴로지와 병목현상
네트워크 토폴로지(Network Topology)란
네트워크에서 컴퓨터, 서버, 라우터 같은 장치들이 어떻게 연결되어 있는지 나타낸 구조
노드와 링크가 어떻게 배치되어 있는지에 대한 방식/연결 형태
| 형태 | 설명 | 장점 | 단점 |
|---|---|---|---|
| 버스형(Bus) | 모든 장치가 하나의 메인 케이블에 연결 | 설치 비용 저렴, 구조 단순, 노드 추가/삭제 쉬움 | 한 장치 문제 시 전체 영향, 대역폭 공유, 트래픽 증가 시 속도 저하, 스푸핑 가능 |
| 스타형(Star) | 중앙 허브/스위치에 각 장치가 개별 연결 | 문제 격리 쉬움, 성능 안정적 | 허브/스위치(중앙) 장애 시 전체 다운, 케이블 많이 필요, 설치비용 고가 |
| 링형(Ring) | 장치들이 원형으로 연결 | 네트워크상의 손실 적음, 충돌 적음, 노드 고장 쉽게 발견 | 한 지점 장애 시 전체 영향, 네트워크 구성 변경 어려움 |
| 메시형(Mesh) | 모든 장치가 서로 연결 (Full/Partial) | 안정성 높음, 경로 다양 | 설치·유지 비용 높음, 노드 추가 어려움 |
| 트리형(Tree) | 스타형 + 버스형 결합 | 확장성 좋음 | 중심선 장애 시 영향 큼 |
| 하이브리드형(Hybrid) | 여러 구조 혼합 | 장점 조합 가능 | 설계 복잡 |
버스형 토폴로지 하나의 메인 케이블(백본 케이블)을 중심으로 모든 장치가 직접 연결되는 구조
- 한 버스 노선에 여러 정류장이 있는 모습 → 노선 끊기면 전체 마비
- 긴 중앙 케이블(버스)이 네트워크의 주축 역할
- 모든 노드(장치)는 T-커넥터 등을 사용해 버스에 연결 예) 근거리 통신망(LAN)에서 사용
스푸핑
네트워크에서 자신을 다른 사람(장치)로 위장해 속이는 행위LAN상에서 송신부의 패킷을 송신과 관련없는 다른 호스트에 가지 않도록 스위치 기능을 마비/속여서 특정 노드에 해당 패킷이 오도록 처리
| 스푸핑 종류 | 설명 | 예시 |
|---|---|---|
| IP 스푸핑 | 패킷의 출발지 IP 주소를 위조 | 공격자가 은행 서버 IP인 척 하여 접근 시도 |
| MAC 스푸핑 | 네트워크 카드의 MAC 주소를 위조 | 네트워크 접근 제한을 무력화 |
| DNS 스푸핑 | DNS 응답을 조작해 가짜 IP 제공 | 사용자를 피싱 사이트로 유도 |
| 이메일 스푸핑 | 발신자 주소를 위조 | 유명 회사 메일인 척 하여 악성 링크 발송 |
| ARP 스푸핑 | 로컬 네트워크에서 ARP 응답을 조작 | 데이터 중간 탈취(Man-in-the-Middle) |
스타형 토폴로지
중앙에 있는 노드에 모두 연결된 네트워크 구성
모든 장치가 중앙 장치(허브/스위치/라우터)에 개별적으로 연결되는 네트워크 구조
- 장치 간 데이터 통신은 반드시 중앙 장치를 거쳐 전달
- 중앙 장치(Central Device)가 네트워크의 허브 역할.
링형 토폴로지
모든 장치가 고리(원) 형태로 연결된 네트워크 구조
- 각 장치는 양 옆의 장치와만 연결 (앞뒤 두개의 연결 포트)
- 한 방향/양방향으로 순차적으로 전달
- 마지막 장치는 첫 번째 장치와 연결되어 폐쇄 회로(고리)가 됨
메시 토폴로지
= 망형 토폴로지
네트워크의 모든 장치가 서로 직접 연결되는 구조
그물망처럼 연결되어 있는 구조
- 하나의 경로가 끊겨도 다른 경로를 통해 통신이 가능해 신뢰성과 안정성이 매우 높은 구조 종류
- 풀메시 : 모든 장치가 모든 다른장치와 직접 연결됨
- 부분 메시 : 일부 장치가 서로 직접 연결, 나머지는 간접 연결
트리 토폴로지
=계층형 토폴로지
트리 형태로 네트워크 구성
- 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있음
네트워크 구조가 왜 중요한가?
=> 병목현상을 찾을때 중요한 기준!
병목현상이란?
전체 시스템의 성능/용량이 하나의 구성요소로 인해 제한 받는 현상
- 서비스에서 이벤트를 열었을때, 트래픽이 많이 생기고, 그 트래픽을 잘 관리하지 못하면 병목현상이 생겨, 사용자는 웹 사이트로 들어가지 못함
네트워크 분류
LAN(Local Area Network)
= 근거리 통신망
같은 건물/캠퍼스/가정/사무실과 같은 좁은 공간에서 운영
- 전송속도 빠르고 혼잡하지 않음
- 보안 통제 비교적 쉬움
MAN(Metropolitan Area Network) = 대도시 지역 네트워크
한 도시/캠퍼스 단위의 넓은 지역(수 km~ 수십 km)
- 주로 여러 LAN을 연결해 도시 단위로 네트워크 구성
WAN(Wide Area Network)
=광역 네트워크
국가/대륙/전세계 단위
- 전송속도 낮음
- 설치 및 유지비용 높음
- 인터넷이 대표적인 예
네트워크 성능 분석 명령어
코드 상 문제 없을때, 사용자가 서비스로부터 데이터를 가져오지 못하는 상황에 네트워크 병목 현상일 수 있음
병목현상의 주된 원인
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
=> 네트워크 관련 테스트&네트워크 무관한 테스트를 통해 ‘네트워크로부터 발생한 문제점인 것을 확인 후 네트워크 성능 분석
ping
=Packet INternet Groper
네트워크 상태를 확인하려는 대상노드를 향해 일정크기의 패킷을 전송하는 명령어
-> 패킷 수신상태/도달 시간 등을 알 수 있음
- TCP/IP 프로토콜 중에 ICMP 프로토콜을 통해 동작
- ICMP 프로토콜을 지원하지 않는 기기를 대상으로 실행 불가능
- 네트워크 정책상 ICMP/traceroute를 차단하는 대상의 경우 ping 테스팅 불가능
netstat
접속되어 있는 서비스들의 네트워크 상태 표시
네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트로 보여줌
- 주로 포트가 열려있는지 확인할때 사용
nslookup
DNS와 관련된 내용을 확인하기 위해 사용
특정 도메인에 매핑된 IP를 확인하기 위해 사용
tracert
(리눅스 : traceroute)
목적지 노드까지 네트워크 경로를 확인할때 사용
- 목적지 노드까지의 구간들 중 어느 구간에서 응답시간이 느려지는지 등을 확인할 수 있음
네트워크 프로토콜 표준화
네트워크 프로토콜이란
다른 장치들끼 데이터를 주고받기 위해 설정된 공통된 인터페이스(규칙/약속)
- IEEE/IETF라는 표준화 단체가 설정함
TCP/IP 4계층 모델
네트워크에서 사용되는 통신 프로토콜의 집합, 계층들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 계층으로 구성됨
인터넷 프로토콜 스위트(internet protocol suite)이란
인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜의 집합
계층구조
OSI 7계층
| 계층 | 이름 | 주요 역할 | 예시 프로토콜 / 기술 |
|---|---|---|---|
| 7계층 | 응용 계층 (Application) | 사용자와 직접 상호작용, 애플리케이션 서비스 제공 | HTTP, FTP, SMTP, DNS, SSH |
| 6계층 | 표현 계층 (Presentation) | 데이터 형식 변환, 암호화/복호화, 압축 | JPEG, MP3, MPEG, SSL/TLS |
| 5계층 | 세션 계층 (Session) | 통신 세션 관리, 연결 설정/유지/종료 | NetBIOS, PPTP, RPC |
| 4계층 | 전송 계층 (Transport) | 데이터 전송 제어, 오류 검출, 흐름 제어 | TCP, UDP, QUIC |
| 3계층 | 네트워크 계층 (Network) | 경로 선택, 주소 지정(IP) | IP, ICMP, ARP, RIP, OSPF |
| 2계층 | 데이터 링크 계층 (Data Link) | 인접 장치 간 프레임 전송, 오류 감지 | Ethernet, PPP, Switch, MAC |
| 1계층 | 물리 계층 (Physical) | 비트 전송, 물리 매체 정의 | 케이블, 광섬유, 무선, 허브 |
| TCP/IP 4계층 | 주요 프로토콜 예시 |
|---|---|
| 애플리케이션 계층 | FTP, HTTP, SSH, SMTP, DNS |
| 전송 계층 | TCP, UDP, QUIC |
| 인터넷 계층 | IP, ARP, ICMP |
| 링크 계층 | 이더넷(Ethernet) |
애플리케이션 계층
FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층
웹서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층
용어
- FTP : 장치와 장치 간의 파일을 전송하는데 사용되는 표준 통신 프로토콜
- SSH : 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
- HTTP : World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는데 쓰는 프로토콜
- SMTP : 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
- DNS: 도메인 이름과 IP 주소를 매핑해주는 서버
전송계층
송신자와 수신자를 연결하는 통신 서비스 제공, 연결 지향 데이터 스트림 지원/신뢰성/흐름 제어를 제공, 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할
- TCP
- 연결 지향형 전송 계층 프로토콜
- 데이터를 신뢰성 있게, 순서대로, 오류없이 전달하기 위해 사용
- ‘가상회선 패킷 교환 방식’ 사용
- 데이터 단위 : 바이트 스트림
- UDP
- 비연결형 전송 계층 프로토콜
- 연결 설정 없이 데이터를 빠르게 전송하는데에 초점을 둔 방식
- 신뢰성 $\leq$ 속도 & 효율성
- ‘데이터 패킷 교환 방식’ 사용
- 데이터 단위 : 데이터 그램
패킷 교환 방식
- 가상회선 패킷 교환방식
- 각 패킷에 가상회선 식별자 포함
- 모든 패킷을 전송하면 가상회선이 해제되고 패킷들을 전송된 ‘순서대로’ 도착
- 데이터그램 패킷 교환방식
- 패킷이 독립적으로 이동, 최적의 경로를 선택
- 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있음, 도착한 순서가 다를 수 있음
TCP 연결 성립 과정
= 3-way handshake
- 신뢰성을 확보할 때 3-way handshake 작업 진행
- SYN (연결 요청)
- 클라이언트 -> 서버
- 클라이언트가 SYN 플래그=1로 설정한 TCP 세그먼트 전송(초기 순서번호(ISN, Initial Sequence Number)와 함께)
- SYN + ACK (연결 수락 & 응답)
- 서버 -> 클라이언트
- 서버가 요청 수락하면, SYN 플래그=1, ACK 플래그=1로 설정해 응답(서버의 초기 순서번호(ISN_server)와 함께)
- ACK번호 = 클라이언트 ISN+1
- ACK (연결 확정)
- 클라이언트가 서버의 SYN을 잘 받았다는것을 확인 (ACK)
- ACK번호 = 서버 ISN+1
=> 연결이 정식으로 성립, 데이터 전송 가능
(UDP는 이 과정이 없음)
TCP 연결 해제 과정
= 4-way handshake
- FIN (연결 종료 요청)
- 송신자(A) → 수신자(B)
- 송신자가 더 이상 보낼 데이터가 없음을 알리기 위해 FIN 플래그=1로 설정한 TCP 세그먼트 전송(마지막 순서번호(Seq)와 함께)
- ACK (종료 요청 수락)
- 수신자(B) → 송신자(A)
- FIN을 받았다는 것을 확인하고 ACK 전송
- ACK번호 = 송신자 Seq+1
- 이 시점에서도 B는 자신이 보낼 데이터가 남아 있으면 계속 전송 가능 (Half-Close 상태)
- FIN (상대방 종료 요청)
- 수신자(B) → 송신자(A)
- 자신의 데이터 전송이 끝나면 FIN 플래그=1로 설정해 전송(자신의 마지막 순서번호(Seq)와 함께)
- ACK (종료 확인)
- 송신자(A) → 수신자(B)
- B의 FIN을 잘 받았다는 것을 확인하고 ACK 전송
- ACK번호 = B의 Seq+1
- 송신자는 마지막 ACK를 보낸 후 TIME_WAIT 상태로 일정 시간 대기한 뒤 연결 완전 종료
용어
- SYN : SYNchronization, 연결 요청 플래그
- ACK : ACKnowledgement, 응답 플래그
- ISN : Initial Sequence Numbers, 초기 네트워크 연결을 할때, 할당된 32비트 고유 시퀀스 번호
- TIME_WAIT : 소켓이 바로 소멸되지 않고 일정시간 유지되는 상태, 지연 패킷 등의 문제점 해결
- 데이터 무결성 : 데이터의 정확성과 일관성을 유지하고 보증하는 것
인터넷 계층
= OSI 7계층에서 네트워크 계층
장치로부터 받은 네트워크 패킷을 IP주소로 지정된 목적지로 전송하기 위해 사용되는 계층
- 패킷을 수신해야할 상대의 주소를 지정해 데이터 전달
- 상대방이 제대로 받았는지에 대해 보장하지 않음 = 비연결형적인 특징
[역할]
- 주소 지정(Addressing)
- 각 장치에 고유한 IP 주소를 부여하여 송신자와 수신자를 식별
- 라우팅(Routing)
- 패킷이 출발지에서 목적지까지 도달하는 최적 경로를 결정
- 패킷 전달(Packet Forwarding)
- 데이터를 작은 단위(패킷)로 나누어 전송하고, 중간 라우터를 거쳐 목적지로 전달
- 단편화(Fragmentation) & 재조립(Reassembly)
- 네트워크의 최대 전송 단위(MTU)를 초과하는 데이터를 잘라서 전송하고, 수신 측에서 다시 합침
대표 프로토콜
| 프로토콜 | 설명 |
|---|---|
| IP (IPv4/IPv6) | 장치 간의 주소 지정과 패킷 전달 담당 |
| ICMP | 네트워크 상태 진단 및 오류 보고 (예: ping 명령) |
| ARP | IP 주소를 MAC 주소로 변환 |
| RARP | MAC 주소를 IP 주소로 변환 |
| IGMP | 멀티캐스트 그룹 관리 |
링크 계층
= 네트워크 접근 계층
전선/광섬유/무선 등으로 실질적으로 데이터를 전달, 장치 간에 신호를 주고받는 ‘규칙’을 정하는 계층
[역할]
- 프레임 전송 (Framing)
- 상위 계층(인터넷 계층)에서 내려온 IP 패킷을 프레임(Frame) 단위로 캡슐화하여 전송
- 물리 주소 지정 (MAC Addressing)
- 네트워크 인터페이스 카드(NIC)에 부여된 MAC 주소를 사용해 인접 장치 식별
- 오류 검출(Error Detection)
- 전송 중 발생한 비트 오류를 CRC 등으로 검출 (단, 수정은 보통 상위 계층이 수행)
- 접근 제어(Media Access Control)
- 여러 장치가 하나의 전송 매체를 공유할 때, 누가 언제 전송할지 결정 (CSMA/CD, CSMA/CA 등)
- 물리 매체 제어
- 전송 매체(케이블, 광섬유, 무선 등)를 통해 비트를 전송하는 방식 제어
대표 프로토콜
| 기술/프로토콜 | 설명 |
|---|---|
| Ethernet(IEEE 802.3) | 유선 LAN 표준 |
| Wi-Fi(IEEE 802.11) | 무선 LAN 표준 |
| PPP | 점대점(Point-to-Point) 연결용 프로토콜 |
| HDLC | 시리얼 링크용 데이터 링크 프로토콜 |
| VLAN(IEEE 802.1Q) | 가상 LAN을 위한 태그 기반 프레임 처리 |
- 전이중화 통신
- 양쪽 장치가 동시에 송수신할 수 있는 방식
- 송신로/수신로를 나눠 데이터 교환
- 예시 : 고속 이더넷, 광케이블 통신, 전화 통화
- 반이중화 통신
- 양쪽 장치가 서로 통신할 수 있지만, 동시에는 통신할 수 없는 방식
- 충돌 시 메시지 손실/왜곡 가능성, 충돌 방지 시스템 필요
- 수신하기 시작하면, 응답하기 전에 전송이 완료될때까지 대기
- 예시 : CSMA/CD(충돌 발생 시 일정 시간 이후 재전송), 무전기
계층 간 데이터 송수신 과정
- 캡슐화 과정(Encapsulation)
- 상위 계층에서 내려온 데이터를 하위 계층으로 전달할 때, 각 계층의 제어 정보(헤더·트레일러)를 붙여서 전송 단위(PDU)를 만드는 과정
- 애플리케이션 계층: 원본 데이터 생성
- 전송 계층: TCP/UDP 헤더 추가 → 세그먼트(Segment) 또는 데이터그램(Datagram) 생성
- 인터넷 계층: IP 헤더 추가 → 패킷(Packet) 생성
- 네트워크 액세스 계층: MAC 헤더·트레일러 추가 → 프레임(Frame) 생성
- 물리 계층: 프레임을 **비트(Bit)**로 변환하여 전기/광 신호 또는 전파로 전송
- 상위 계층에서 내려온 데이터를 하위 계층으로 전달할 때, 각 계층의 제어 정보(헤더·트레일러)를 붙여서 전송 단위(PDU)를 만드는 과정
- 비캡슐화 과정(Decapsulation)
- 수신 측에서 하위 계층으로부터 올라온 PDU에서 각 계층의 헤더·트레일러를 제거하며 원본 데이터를 복원하는 과정
- 물리 계층: 비트를 수신하여 프레임 형태로 재구성
- 네트워크 액세스 계층: MAC 헤더·트레일러 제거 → 패킷(Packet) 전달
- 인터넷 계층: IP 헤더 제거 → 세그먼트(Segment) 또는 데이터그램(Datagram) 전달
- 전송 계층: TCP/UDP 헤더 제거 → 데이터(Data) 전달
- 애플리케이션 계층: 최종 데이터를 애플리케이션에 전달 및 처리
- 수신 측에서 하위 계층으로부터 올라온 PDU에서 각 계층의 헤더·트레일러를 제거하며 원본 데이터를 복원하는 과정
PDU (Protocol Data Unit)
네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때, 한 덩어리의 단위
- 각 계층은 상위 계층에서 받은 데이터를 자기 계층의 규칙에 맞게 헤더(필요 시 트레일러)와 함께 포장
- 그 계층에서 다루는 데이터의 단위 = PDU
| OSI 7계층 | TCP/IP 4계층 | PDU 명칭 | 설명 |
|---|---|---|---|
| 7 응용 계층 (Application) | 애플리케이션 계층 | 데이터(Data) | 사용자 응용 프로그램에서 생성된 원본 데이터 |
| 6 표현 계층 (Presentation) | 애플리케이션 계층 | 데이터(Data) | 데이터 형식 변환, 압축, 암호화 |
| 5 세션 계층 (Session) | 애플리케이션 계층 | 데이터(Data) | 연결 설정, 유지, 종료 |
| 4 전송 계층 (Transport) | 전송 계층 | 세그먼트(Segment, TCP) / 데이터그램(Datagram, UDP) | 송수신 간 데이터 전송 제어, 오류 복구, 순서 보장 |
| 3 네트워크 계층 (Network) | 인터넷 계층 | 패킷(Packet) | 목적지 IP 주소 기반으로 경로 설정 및 전달 |
| 2 데이터 링크 계층 (Data Link) | 네트워크 액세스 계층 | 프레임(Frame) | 물리 주소(MAC) 기반 인접 장치 간 전송 |
| 1 물리 계층 (Physical) | 네트워크 액세스 계층 | 비트(Bit) | 0과 1의 전기 신호 또는 무선 신호로 전송 |