웹 개발 기초 - 프론트/네트워크ㆍ통신

HTTP부터 TCP/IP까지: 웹 통신의 모든 것

5mincut 2025. 1. 8.
반응형

웹 개발자로서 네트워크 통신의 기본을 이해하는 것은 필수적입니다.

 

이 글에서는 웹 브라우저의 요청 흐름부터 HTTP/HTTPS의 차이,

TCP/IP 통신의 핵심 개념까지 웹 통신의 핵심 개념들을 상세히 설명합니다.

 

DNS 조회부터 서버 연결, 데이터 전송 과정까지 모든 것을 단계별로 알아보겠습니다.

1. 웹 브라우저의 요청 처리 과정

웹 브라우저에서 웹 페이지를 로드할 때, 여러분의 요청은 어떤 과정을 거칠까요? 실제 현업에서 발생하는 웹 통신의 전체 흐름을 자세히 살펴보겠습니다.

1.1 DNS 조회와 IP 주소 확인

사용자가 브라우저에 도메인 주소(예: www.google.com)를 입력하면 다음과 같은 과정이 진행됩니다:

  1. 브라우저가 DNS 서버에 도메인의 IP 주소를 자동으로 요청
  2. DNS 서버가 해당 도메인의 실제 IP 주소를 찾아 반환
  3. 브라우저가 이 IP 주소를 이용해 실제 서버와 통신 시작


1.2 서버 연결과 로드 밸런싱

웹 서버와의 연결 과정에서는 트래픽을 효율적으로 분산하기 위한 로드 밸런싱이 이루어집니다:

  1. L4 스위치를 통한 트래픽 분산
    • IP 주소와 포트 번호 기반 라우팅
    • 서버 부하 상태 모니터링
    • 실시간 트래픽 분배
  2. 최적의 서버 선택
    • 현재 부하가 적은 서버로 요청 전달
    • 서버 상태 확인 및 장애 대응
    • 효율적인 자원 활용

2. HTTP와 HTTPS 프로토콜 심화 이해

2.1 HTTP 프로토콜의 기본 구조

HTTP 프로토콜은 웹에서 데이터를 주고받는 기본적인 규약입니다. 주요 특징을 살펴보겠습니다:

포트 번호 시스템

포트 번호는 0부터 65535까지 할당 가능하며, 특히 0~1023 범위의 포트들은 특별한 의미를 갖습니다:

  • 시스템 예약 포트 (0-1023)
    • HTTP: 80
    • HTTPS: 443
    • FTP: 데이터 전송용 20/ 데이터 제어용 21
    • SSH: 22
    • Telnet: 23

기본 URL 구조

  • 프로토콜: HTTP/HTTPS
  • 도메인: 웹사이트 주소 (예: www.google.com)
  • 포트: HTTP는 80, HTTPS는 443 사용
  • URI: 특정 리소스 위치

2.2 HTTPS의 보안 메커니즘

HTTPS는 HTTP에 보안 계층을 추가한 프로토콜입니다:

  1. SSL/TLS 암호화
    • 데이터 전송 시 암호화
    • 중간자 공격 방지
    • 데이터 무결성 보장
  2. 인증서 기반 보안
    • 서버 신원 확인
    • 안전한 키 교환
    • 통신 암호화 및 복호화


3. TCP/IP 프로토콜의 동작 원리

3.1 IP(Internet Protocol)의 특징

IP는 패킷 단위로 데이터를 전달하는 프로토콜입니다. 주요 특징은 다음과 같습니다:

  1. 패킷 기반 통신
    • 데이터를 작은 단위로 분할하여 전송
    • 각 패킷은 독립적으로 라우팅
  2. IP의 한계점
    • 서버 서비스 불능 상태 감지 불가
    • 패킷 손실 가능성 존재
    • 패킷 순서 보장 없음

3.2 TCP(Transmission Control Protocol)의 특징

TCP는 IP의 한계를 보완하는 신뢰성 있는 프로토콜입니다:

  1. TCP 3-way Handshake
  2. 패킷 구조
  3. 신뢰성 보장 메커니즘
    • 패킷 손실 감지 및 재전송
    • 순서 보장을 위한 시퀀스 번호 사용
    • 흐름 제어 및 혼잡 제어 제공

3.3 TCP 세그먼트와 데이터 전송 과정

TCP는 데이터 전송을 위해 세그먼트라는 단위를 사용합니다. 전체 과정은 다음과 같습니다:

  1. 세그먼트 생성과 캡슐화
    • TCP는 데이터를 세그먼트 단위로 분할
    • 각 세그먼트는 IP 패킷 내부에 포함
    • 형태: { IP패킷 [TCP세그먼트 (데이터) ] }
  2. 전송과 재조립
    • TCP 세그먼트가 IP 패킷 내에서 데이터 운반
    • 목적지에서 TCP가 세그먼트들을 재조립
    • 원래 데이터로 완벽하게 복원
  3. 손실 대응 메커니즘
    • Loss 발생 시 해당 세그먼트만 재전송
    • 일정 시간 대기 후 응답이 없으면 재전송
    • 순서가 맞지 않는 패킷은 버퍼에 임시 저장

4. TCP/IP 4 계층 구조

현대 웹 통신에서 사용되는 네트워크 4 계층 구조를 살펴보겠습니다:

4.1 응용 계층 (Application Layer)

  • 웹 브라우저
  • 네트워크 게임
  • 소켓 라이브러리

4.2 전송 계층 (Transport Layer)

  • TCP 프로토콜
  • UDP 프로토콜

4.3 인터넷 계층 (Internet Layer)

  • IP 프로토콜
  • ICMP 프로토콜

4.4 네트워크 인터페이스 계층 (Network Interface Layer)

  • LAN 장비
  • 네트워크 드라이버
  • MAC 주소 기반 통신


5. HTTP 상태 코드 가이드

개발 과정에서 가장 자주 마주치는 HTTP 상태 코드들을 알아보겠습니다:

2XX (성공)

  • 200 OK: 요청이 성공적으로 처리됨 (가장 일반적인 성공 응답)
  • 201 Created: 새로운 리소스가 성공적으로 생성됨 (POST 요청 성공 시)
  • 204 No Content: 요청은 성공했지만 반환할 콘텐츠가 없음 (DELETE 요청 성공 시 자주 사용)

3XX (리다이렉션)

  • 301 Moved Permanently: 페이지가 영구적으로 다른 주소로 이동됨
  • 302 Found: 페이지가 일시적으로 다른 주소로 이동됨
  • 304 Not Modified: 클라이언트가 캐시 된 버전을 사용할 수 있음

4XX (클라이언트 오류)

  • 400 Bad Request: 잘못된 요청 구문, 유효하지 않은 요청
  • 401 Unauthorized: 인증이 필요한 리소스에 인증 없이 접근
  • 403 Forbidden: 권한이 없는 리소스에 접근 시도
  • 404 Not Found: 요청한 리소스를 찾을 수 없음 (가장 흔한 에러 코드)
  • 429 Too Many Requests: 일정 시간 동안 너무 많은 요청을 보냄

5XX (서버 오류)

  • 500 Internal Server Error: 서버 내부 오류 (일반적인 서버 에러)
  • 502 Bad Gateway: 게이트웨이나 프록시 서버가 업스트림 서버로부터 잘못된 응답을 받음
  • 503 Service Unavailable: 서버가 일시적으로 요청을 처리할 수 없음 (과부하 또는 점검 중)
  • 504 Gateway Timeout: 게이트웨이나 프록시 서버가 업스트림 서버로부터 응답을 받지 못함

마무리: 실무 적용 포인트

지금까지 웹 통신의 핵심 개념들을 살펴보았습니다.

이러한 개념들은 다음과 같은 실제 개발 상황에서 직접적인 도움이 됩니다:)

  • 성능 최적화: HTTP/2 도입으로 웹 애플리케이션 속도 개선
  • 보안 강화: HTTPS 구현을 통한 데이터 보안 확보
  • 트러블슈팅: TCP 연결 문제나 DNS 이슈 해결
  • 아키텍처 설계: 로드밸런서를 활용한 확장 가능한 시스템 구축

더 알아보면 좋을 내용

  • 웹 소켓과 실시간 통신
  • HTTP/3와 QUIC 프로토콜
  • 마이크로서비스 아키텍처에서의 통신

문의사항이나 추가적인 궁금한 점이 있으시다면 댓글로 남겨주세요. 함께 논의하고 배워가면 좋겠습니다! 😊

반응형

댓글

💲 추천 글