[공부] 네트워크 주요 개념 정리

2026. 4. 4. 23:47·개발
반응형

지난번 운영체제에 이어, 오늘은 시스템 아키텍트에 필수적인 네트워크(Network) 지식을 정리해 보겠다.

실시간 메신저 기반의 서비스나 대규모 트래픽을 다루는 환경에서는 네트워크 프로토콜에 대한 깊은 이해가 곧 서비스의 성능과 직결된다.

클라이언트와 서버가 어떻게 데이터를 빠르고 안전하게 주고받는지, 그 핵심 개념들을 살펴보자.

 

1. TCP/UDP와 Handshake 과정

네트워크 전송 계층의 핵심인 TCP와 UDP는 데이터 전송의 철학이 완전히 다르다.

TCP는 신뢰성과 연결성을 최우선으로 한다. 데이터가 유실되지 않고 순서대로 도착하는 것을 보장하기 때문에 웹 통신(HTTP), 이메일, 파일 전송에 주로 쓰인다.

 

반면 UDP는 연결 절차 없이 데이터를 일단 쏘고 보는 방식이다.

신뢰성보다는 속도가 중요할 때, 즉 실시간 스트리밍이나 온라인 게임에서 활약한다.

 

TCP가 신뢰성을 확보하기 위해 사용하는 대표적인 방법이 바로 핸드셰이크(Handshake)다.

  • 3-way Handshake (연결 수립): 통신을 시작하기 전, 서로 데이터를 주고받을 준비가 되었는지 3단계로 확인하는 과정이다. (클라이언트: 접속 요청 SYN ➔ 서버: 수락 및 접속 요청 SYN+ACK ➔ 클라이언트: 수락 ACK)
  • 4-way Handshake (연결 해제): 통신을 마칠 때, 혹시라도 아직 도착하지 않은 데이터가 있는지 확인하며 안전하게 연결을 끊는 4단계 과정이다.

2. HTTP의 진화와 HTTPS의 암호화 방식

웹의 기반이 되는 HTTP는 성능의 한계를 극복하며 꾸준히 진화해 왔다.

  • HTTP 1.1: 지속 연결(Keep-Alive)을 지원하기 시작했지만, 앞선 요청이 처리될 때까지 뒤의 요청들이 기다려야 하는 병목 현상(HOL Blocking)이라는 치명적인 단점이 있었다.
  • HTTP 2.0: 멀티플렉싱(Multiplexing) 기술을 도입해 하나의 연결에서 여러 개의 메시지를 동시에 주고받을 수 있게 만들어 속도를 획기적으로 개선했다.
  • HTTP 3.0: 더 나아가 아예 TCP를 버리고 UDP 기반의 QUIC 프로토콜을 채택했다. TCP 특유의 무거운 연결 수립 과정을 생략해 초기 연결 속도를 극단적으로 끌어올렸다.

여기에 보안을 더한 것이 HTTPS다. HTTPS는 탈취당해도 복호화할 수 없도록 데이터를 암호화하는데, 이때 대칭키와 공개키(비대칭키) 방식을 아주 똑똑하게 혼합해서 사용한다.

 

처음 통신 채널을 설정하고 서로의 신원을 확인할 때는 보안성이 높은 공개키 방식을 사용해 '비밀 번호(대칭키)'를 안전하게 교환한다. 그리고 이후 실제 데이터를 대량으로 주고받을 때는 암호화/복호화 속도가 빠른 대칭키 방식을 사용하여 성능과 보안을 모두 잡는다.


3. OSI 7계층과 데이터의 여정

네트워크 통신의 과정을 7개의 단계로 나눈 표준 모델이다. 물리적인 랜선부터 우리가 보는 웹 브라우저까지의 과정을 구조화한 것이다.

클라이언트에서 서버로 데이터를 보낼 때, 데이터는 7계층(응용 계층)에서 출발해 1계층(물리 계층)으로 내려간다.

각 계층을 지날 때마다 해당 계층의 역할에 맞는 정보(헤더)가 데이터에 덧붙여지는데, 이를 캡슐화(Encapsulation)라고 한다.

 

이렇게 포장된 데이터 패킷이 네트워크 망을 타고 서버에 도착하면

반대로 1계층에서 7계층으로 올라가면서 헤더를 하나씩 벗겨내어(Decapsulation) 최종적으로 원래의 데이터를 확인하게 된다.

각 계층이 독립적으로 역할을 수행하기 때문에, 특정 구간에 문제가 생겨도 전체 시스템을 뜯어고칠 필요 없이 해당 계층만 수정하면 된다는 것이 이 모델의 핵심이다.


4. 실시간 통신의 핵심, Websocket

일반적인 HTTP 통신은 클라이언트가 요청을 보내면 서버가 응답을 주고 연결을 끊어버리는 단방향 구조다.

그렇다면 실시간 채팅은 어떻게 구현할까?

 

과거에는 클라이언트가 서버에게 주기적으로 "새로운 메시지 온 거 있어?"라고 계속 물어보는 HTTP Polling 방식을 썼다. 하지만 이 방식은 요청이 없을 때도 불필요한 트래픽을 발생시켜 서버에 큰 부담을 준다.

 

이를 해결하기 위해 등장한 것이 웹소켓(Websocket)이다.

웹소켓은 한 번 연결을 맺어두면 클라이언트와 서버가 파이프가 연결된 것처럼 양방향으로 자유롭게 데이터를 주고받을 수 있다.

서버에 변화가 생기면 클라이언트가 묻지 않아도 서버가 먼저 데이터를 밀어 넣어줄 수 있기 때문에, 실시간 메신저 서비스에서는 없어서는 안 될 필수 기술이다.


네트워크는 눈에 보이지 않는 데이터의 흐름을 이해하는 과정이다. 이 흐름과 병목을 통제할 줄 알아야 진짜 트래픽을 감당할 수 있는 서버를 설계할 수 있다.

반응형

'개발' 카테고리의 다른 글

[공부] OS 관련 핵심 개념  (0) 2026.04.04
'개발' 카테고리의 다른 글
  • [공부] OS 관련 핵심 개념
danieLee
danieLee
개발일지
  • danieLee
    Code log
    danieLee
  • 전체
    오늘
    어제
    • 분류 전체보기 (77)
      • 개발 (76)
        • C++ (3)
        • java (6)
        • JavaScript (9)
        • python (0)
        • AWS (2)
        • Docker (6)
        • git (0)
        • 백엔드 (4)
        • Spring (7)
        • Django (2)
        • AI (3)
        • 코테 준비 (13)
        • 알고리즘 (6)
        • SKALA 4기 (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    API
    4기
    skala
    Ai
    개발자
    코테
    JavaScript
    js
    프론트
    java
    백엔드
    파이썬
    spring
    개념
    vue.js
    대학생
    알고리즘
    프로그래머스
    서버
    개발
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.1
danieLee
[공부] 네트워크 주요 개념 정리
상단으로

티스토리툴바