Hyun's Wonderwall

[CS 지식의 정석] 3. 네트워크 본문

Study

[CS 지식의 정석] 3. 네트워크

Hyun_! 2025. 10. 24. 14:02

네트워크 기초

네트워크: 노드(서버·라우터·스위치 등)와 링크(유선·무선)가 연결된 구조로 자원 공유를 목표로 함.
트래픽: 특정 시점에 흐르는 데이터 총량 (단위 bps).
처리량: 성공적으로 전송된 데이터량 → 트래픽 처리 성능 지표.
대역폭: 일정 시간 동안 흐를 수 있는 최대 비트 수(=최대 처리용량). 대역폭↑ → 서비스 속도↑.
RTT: 왕복지연시간. 송신~수신확인까지 걸리는 시간.

네트워크 토폴로지

버스형: 하나의 회선에 모든 노드 연결. 설치 간단·저비용 / 회선 장애 시 전체 영향.
스타형: 중앙 노드(허브·스위치) 중심 별모양 연결. 보안관리 용이 / 중앙노드 장애 시 전체 마비.
트리형: 계층 구조. 리프노드 확장 용이 / 루트노드 장애 시 전체 영향.
링형: 노드들이 고리 형태로 연결. 토큰 기반 충돌 無 / 전송 지연·고장 노드 탐지 용이.
메시형: 모든 노드가 서로 직접 연결. 안정성↑ / 비용·설계 복잡도↑.

병목현상과 토폴로지 필요성

병목현상: 특정 구간에 트래픽 집중으로 속도 저하. 원인=대역폭 부족, 서버 처리 한계, 토폴로지 설계 미흡.
토폴로지 분석을 통해 병목 구간 파악→로드밸런싱·서버 분산 등 해결 가능.

데이터 전송 방식

유니캐스트: 1:1 전송 (예: HTTP).
멀티캐스트: 1:N(특정 그룹 대상).
브로드캐스트: 1:N(모든 노드). 대표 예: ARP.

네트워크 분류

LAN: 근거리망(가정·사무실). 속도↑, 안정성↑.
MAN: 대도시망, 여러 LAN 연결.
WAN: 국가 간 통신망, 인터넷.

TCP/IP 4계층과 OSI 7계층

TCP/IP 4계층:
① 애플리케이션(HTTP, FTP, SSH, SMTP)
② 전송(TCP, UDP)
③ 인터넷(IP, ICMP, ARP)
④ 링크(Ethernet 등 물리적 전송).
캡슐화: 상위 데이터에 하위 계층 헤더 추가.
비캡슐화: 수신측이 헤더 역으로 제거.
PDU: 계층별 데이터 단위 (메시지–세그먼트–패킷–프레임–비트).
체크섬: 전송 오류 검증용 값. (IPv4, TCP/UDP=1의보수합, Ethernet=CRC32).


MTU와 단편화

MTU(Maximum Transmission Unit): 한 번에 전송 가능한 최대 프레임 크기(이더넷 기준 1500B). MTU 초과 시 IP 단편화(Fragmentation) 발생 → 성능 저하 위험. TCP는 MSS(Max Segment Size)로 MTU 이하로 조절, UDP는 자체 제어 없음.

TCP와 UDP

TCP(Transmission Control Protocol): 연결형, 신뢰성 보장, 순서 보장, 흐름·혼잡 제어 지원. 3-way handshake(연결)와 4-way handshake(해제) 사용. 전송 단위=세그먼트.
UDP(User Datagram Protocol): 비연결형, 신뢰성·순서 미보장, 빠른 전송(스트리밍, DNS 등). 전송 단위=데이터그램.
TCP 흐름 제어(Sliding Window): 송신측이 수신측 버퍼 크기 고려해 전송량 조절.
혼잡 제어(Congestion Control): 네트워크 혼잡 시 윈도우 크기 줄이는 알고리즘 (Slow Start, Congestion Avoidance 등).

포트와 소켓

포트(Port): 애플리케이션 식별 번호(0~65535). TCP/UDP 각각 독립 관리.
소켓(Socket): IP + Port 결합한 통신 단위. (예: 192.168.0.1:8080).
Ephemeral Port: 임시 세션용 포트(보통 49152~65535).

 라우팅과 NAT

라우팅(Routing): 패킷 전달 경로를 결정하는 과정. 정적 라우팅(관리자 수동 설정), 동적 라우팅(라우터 간 정보 교환: RIP, OSPF, BGP).
NAT(Network Address Translation): 사설 IP ↔ 공인 IP 변환 기술. IPv4 주소 절약, 내부망 보호.
PAT(Port Address Translation): 여러 내부 IP를 하나의 공인 IP로 변환 시 포트번호로 구분.

 IP 주소 체계

IPv4: 32비트(4옥텟), 예: 192.168.0.1. 클래스 A~E(네트워크/호스트 구분). 사설 IP: A(10.0.0.0/8), B(172.16.0.0/12), C(192.168.0.0/16).
IPv6: 128비트, 16진수 표기(예: 2001:db8::1). 주소 부족 해결, 자동 설정, 보안 강화(IPsec 내장).
서브넷 마스크: 네트워크/호스트 영역 구분. (예: 255.255.255.0 → /24).
CIDR(Classless Inter-Domain Routing): 클래스 구분 없이 네트워크 경계 자유 설정.

DNS(Domain Name System)

도메인명 ↔ IP 주소 변환.
계층 구조: Root → TLD(.com/.kr) → 2차 도메인 → 서브도메인.
동작: 클라이언트 → 로컬 DNS → 루트 DNS → 권한 DNS → IP 반환.
레코드 유형: A(IPv4), AAAA(IPv6), MX(메일), CNAME(별칭), TXT(인증).
캐싱으로 성능 향상(TTL 기반).

DHCP(Dynamic Host Configuration Protocol)

IP 자동 할당 프로토콜. Discover → Offer → Request → Acknowledge(DORA 과정).
임대 기간(Lease time) 만료 시 재갱신 요청.
수동 IP 충돌 방지, 대규모 네트워크 자동화.

HTTP 프로토콜

HTTP(HyperText Transfer Protocol): 클라이언트와 서버 간 요청·응답 기반 통신 규약.
Stateless 구조로, 각 요청은 독립적으로 처리.
요청 구성: Method(행위), Header(메타데이터), Body(데이터).
응답 구성: Status Line(코드), Header, Body.
주요 Method: GET(조회), POST(생성), PUT(전체 수정), PATCH(부분 수정), DELETE(삭제).
주요 Status Code: 200 OK, 301 Redirect, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 500 Internal Server Error.
HTTP/1.1: Keep-Alive로 다중 요청 가능, 파이프라이닝 지원.
HTTP/2: 멀티플렉싱, 헤더 압축(HPACK), 서버 푸시.
HTTP/3: QUIC 기반 UDP 프로토콜로 지연 최소화, 연결 복원성 강화.

 HTTPS 프로토콜

HTTP + SSL/TLS 암호화 계층을 더한 보안 통신 프로토콜.
핸드셰이크 과정에서 인증서 기반 공개키 교환 및 세션키 생성.
대칭키로 데이터 암호화, 비대칭키로 키 교환.
SSL 인증서: 인증기관(CA)이 발급, 사이트 신뢰성 검증.
이점: 데이터 암호화, 무결성 보장, 중간자 공격 방지.

쿠키와 세션

쿠키: 브라우저에 저장되는 Key-Value 데이터. 로그인 유지, 사용자 맞춤 기능에 사용. 서버 응답 시 Set-Cookie 헤더로 전달.
세션: 서버 메모리 또는 DB에 사용자 상태를 저장. 클라이언트는 Session ID만 쿠키로 저장.
쿠키는 클라이언트 중심, 세션은 서버 중심 관리.
세션이 보안상 유리하나 서버 부하가 커짐.

브라우저 렌더링 과정

  1. HTML 파싱 → DOM 트리 생성
  2. CSS 파싱 → CSSOM 트리 생성
  3. 두 트리를 결합해 Render Tree 구성
  4. Layout(배치 계산) → Paint(화면 출력)
  5. JavaScript 실행: DOM 조작, 이벤트 처리
    렌더링 차단 요소: <script> 태그의 동기 로드. 해결: async/defer 속성 사용.
    Reflow(Layout 재계산)과 Repaint(화면 갱신)는 성능 저하 요인.

CORS 정책

CORS(Cross-Origin Resource Sharing): 다른 도메인 간 리소스 요청 제한 정책.
브라우저 보안상 SOP(Same-Origin Policy) 기반으로 동작.
Origin: 프로토콜 + 도메인 + 포트가 모두 동일해야 동일 출처로 간주.
Preflight Request: 실제 요청 전 OPTIONS 메서드로 서버 허용 여부 확인.
해결 방법: 서버에서 Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers 지정.

보안 취약점

XSS(Cross-Site Scripting): 악성 스크립트를 삽입해 사용자 브라우저에서 실행. 방지: 입력값 이스케이프, CSP(Content Security Policy) 적용.
CSRF(Cross-Site Request Forgery): 사용자의 인증 정보를 도용해 원치 않는 요청 수행. 방지: CSRF Token 검증, Referer 검증, SameSite 쿠키 설정.
SQL Injection: 쿼리 조작을 통한 DB 침투. 방지: Prepared Statement 사용, 입력값 검증.

네트워크 계층 요약

물리 계층: 전기적 신호 전송.
데이터링크 계층: 프레임 단위 전송, MAC 주소 기반.
네트워크 계층: IP 주소 기반 라우팅.
전송 계층: TCP/UDP 전송 관리.
세션 계층: 연결 관리 및 동기화.
표현 계층: 암호화·압축 처리.
응용 계층: 사용자 서비스 (HTTP, FTP, SMTP 등).

'Study' 카테고리의 다른 글

[GDSC Ewha 5th] 리팩토링 세션  (0) 2024.03.13
[p5.js] 모션그래픽을 위한 p5.js 연습 프로젝트  (0) 2024.03.09