본문 바로가기
카테고리 없음

백엔드 개발자가 알아야 하는 네트워크

by junho7778 2025. 10. 15.

 

1. OSI 7계층 이론과 실제 서버 통신 구조

 

네트워크 통신은 계층 구조로 나뉘어 있으며, 각 계층은 명확한 책임을 가진다.

서버 개발자는 이 구조를 이해해야 클라이언트-서버 간 트래픽, 패킷, 요청 흐름을 분석할 수 있다.

계층이름대표 프로토콜역할실무 연관

7 응용 (Application) HTTP, HTTPS, SMTP, FTP 사용자 요청을 처리하는 실제 서비스 계층 API, WebSocket, gRPC
6 표현 (Presentation) TLS/SSL, JSON, XML 암호화·인코딩·직렬화 수행 HTTPS 암호화, JWT
5 세션 (Session) SSH, RPC, NetBIOS 세션 생성 및 유지 로그인 세션, TCP 연결 유지
4 전송 (Transport) TCP, UDP 송수신 제어, 순서 보장, 포트 관리 소켓 통신, API 응답 지연 분석
3 네트워크 (Network) IP, ICMP 패킷의 목적지 결정 및 전달 IP 라우팅, CIDR, ping
2 데이터링크 (Data Link) Ethernet, ARP 물리적 주소(MAC) 간 데이터 전송 ARP 캐시, MAC 주소
1 물리 (Physical) 케이블, NIC 전기 신호 단위로 데이터 전송 NIC, 케이블, 하드웨어 장애

백엔드 실무에서 중요한 이유

HTTP 요청이 실제로 TCP/IP를 거쳐 물리적으로 전달되는 과정을 이해해야 네트워크를 튜닝할 수 있다.

  • ARP, IP, TCP의 계층적 흐름을 알아야 **패킷 캡처(Wireshark)**나 서버 지연 분석이 가능하다.

 


2. TCP/IP 4계층 모델

TCP/IP 계층대응 OSI 계층주요 프로토콜실무 연관

Application 5~7계층 HTTP, DNS, SSH 서버·클라이언트 애플리케이션
Transport 4계층 TCP, UDP 소켓 통신, 포트 기반 제어
Internet 3계층 IP, ICMP 라우팅, IP 주소 관리
Network Interface 1~2계층 Ethernet, ARP MAC 주소 기반 전송

핵심

 

  • TCP/IP는 실제 인터넷 구조이며, 백엔드 서버 통신은 모두 이 위에서 동작한다.
  • OSI는 이론적 구조, TCP/IP는 실제 구현 구조이다.

 




 

3. TCP의 핵심 개념 (신뢰성, 순서 보장, 혼잡 제어)

 

TCP는 신뢰성 있는 전송을 위해 여러 메커니즘을 사용한다.

기능설명실무 연관

순서 보장 Sequence Number로 순서 유지 HTTP 요청/응답 순서 보장
재전송 ACK 누락 시 재전송 패킷 손실에도 안정적 전송
흐름 제어 수신 윈도우 기반 속도 조절 서버 과부하 방지
혼잡 제어 네트워크 혼잡 시 전송 속도 감소 트래픽 폭주 시 안정적 운영
3-Way Handshake 연결 수립 클라이언트 ↔ 서버 세션 생성
4-Way Handshake 연결 종료 리소스 반환, TIME_WAIT 관리

백엔드 실무 연결

 

  • TIME_WAIT 누적 → 포트 고갈 → 서버 부하 발생
  • SO_REUSEADDR, SO_REUSEPORT 옵션으로 해결
  • Keep-Alive 옵션으로 불필요한 연결 재생성 방지
  • HTTP/2, gRPC 등은 TCP 연결을 멀티플렉싱하여 성능을 향상시킴

 


 

4. TCP 헤더 구조 이해

필드설명백엔드에서 중요 이유

Source/Destination Port 송신자/수신자 포트 8080, 3306, 6379 등 서비스 포트 관리
Sequence / Ack Number 데이터 순서, 확인 응답 신뢰성 보장 기반
Flags SYN, ACK, FIN, RST 등 제어 비트 연결 상태 분석, 네트워크 디버깅
Window Size 수신 버퍼 크기 성능 튜닝 핵심 (rmem, wmem)
Checksum 오류 검출 패킷 손상 방지
Options 확장 옵션 (MSS, SACK 등) 네트워크 최적화에 활용

 


 

5. TCP 3-Way Handshake (연결 과정)

앞의 그림처럼 클라이언트와 서버가 통신할 때 다음과 같은 세 단계의 과정을 거칩니다.

  • 1 SYN 단계: 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보냅니다. ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시원스 번호를 말하며(예시로 12010을 들었습니다) 이는 장치마다 다를 수 있습니다.
  • 2 SYN + ACK 단계: 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보냅니다.
  • 3 ACK 단계: 클라이언트는 서버의 ISN + 1 한 값인 승인번호를 담아 ACK를 서버에 보냅니다.

 


 

6. TCP 4-Way Handshake (종료 과정)

 

  • 1 번: 먼저 클라이언트가 연결을 닫으려고 할 때 FIN으로 설정된 세그먼트를 보냅니다. 그리고 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다립니다.
  • 2번: 서버는 클라이언트로 ACK라는 승인 세그먼트를 보냅니다. 그리고 CLOSE_WAIT 상태에 들어갑니다. 클라이언트가 세그먼트를 받으면 FIN_WAIT_2 상태에 들어갑니다.
  • 3번: 서버는 ACK를 보내고 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트를 보냅니다.
  • 4번: 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가됩니다. 이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결이 해제됩니다.

이 과정 중 가장 눈여겨봐야 할 것은 TIME_WAIT입니다. 그냥 연결을 닫으면 되지 왜 굳이 일정 시간 뒤에 닫을까요?

  • 첫 번째는 지연 패킷이 발생할 경우를 대비하기 위함입니다. 패킷이 뒤늦게 도달하고 이를 처리하지 못한다면 데이터 무결성 문제가 발생합니다.
  • 두 번째는 두 장치가 연결이 닫혔는지 확인하기 위해서입니다. 만약 LAST_ACK 상태에서 닫히게 되면 다시 새로운 연결을 하려고 할 때 장치는 줄곧 LAST_ACK로 되어 있기때문에 접속 오류가 나타나게 될 것입니다.

 

7. UDP의 특징과 실무 활용

항목설명실무 예시

비연결형 세션 없이 데이터 전송 DNS, DHCP, 게임 서버
신뢰성 없음 손실 가능, 순서 불보장 스트리밍, 음성 통화
오버헤드 적음 TCP보다 빠름 실시간 서비스
재전송 없음 손실시 상위 레벨에서 보완 QUIC, WebRTC

주의

 

  • DNS도 일부 요청(Zone Transfer)은 TCP를 사용한다.
  • HTTP/3는 UDP 기반 QUIC을 사용해 TCP의 Handshake 지연을 제거했다.

 


 

8. 네트워크 튜닝 주요 파라미터

항목설명설정 키

SYN backlog 미완료 연결 큐 크기 net.ipv4.tcp_max_syn_backlog
Keep-Alive 유휴 연결 유지 시간 net.ipv4.tcp_keepalive_time
TIME_WAIT 재사용 포트 고갈 방지 net.ipv4.tcp_tw_reuse
송수신 버퍼 TCP 성능 조절 net.ipv4.tcp_rmem, net.ipv4.tcp_wmem
커넥션 재사용 소켓 재활용 SO_REUSEADDR, SO_REUSEPORT

 


 

9. 이론 + 실무 연결 핵심 요약

구분이론 개념실무 적용

OSI 7계층 통신 흐름의 논리적 구조 요청·응답 지연 구간 분석
TCP/IP 실제 인터넷 프로토콜 구조 서버 네트워크 튜닝 기준
TCP 신뢰성 있는 연결 API 서버, DB 통신
UDP 비연결형 전송 스트리밍, 게임, HTTP/3
Handshake 연결 수립·종료 과정 SYN Flood 방어, 포트 관리
커널 파라미터 연결/버퍼 관리 리눅스 서버 튜닝
QUIC (HTTP/3) UDP 기반 신속 전송 최신 백엔드 프로토콜 이해