6. Http 요청 클래스 사용

박은서's avatar
Feb 09, 2026
6. Http 요청 클래스 사용

1. 웹 서버의 개념

1️⃣ 웹 서버란?

1) 개념

  • 클라이언트(브라우저)의 요청(Request)을 받아 자원(Resource)을 HTTP 응답(Response)으로 돌려주는 프로그램(또는 그 역할을 하는 컴퓨터)

2) 자원(Resource)의 예

  • HTML 문서
  • 이미지, CSS, JS 파일
  • JSON 데이터(API 응답)
서버는 “파일 자체”를 보내는 게 아니라, 파일의 “내용(byte)”을 보내준다

2️⃣ 클라이언트–서버 구조

1) 클라이언트

  • 브라우저 (Chrome, Edge 등)
  • 요청을 보냄 (URL 기반)

2) 서버

  • 항상 대기 상태
  • 요청이 오면 반드시 응답 (HTTP는 무응답 X)

3️⃣ URL과 웹 서버

1) 예시

http://IP:80/a/hello.html

2) 구성

  • http → 프로토콜
  • IP → 서버 주소
  • 80 → 포트 (HTTP 기본)
  • /a/hello.html → 요청 자원 경로
➡️ 브라우저는 이 URL을 문자열로 받지만, 내부적으로는 객체로 파싱해서 네트워크 통신 수행
(이 과정은 라이브러리/브라우저가 처리)

4️⃣ 필기 (웹 서버의 탄생 배경)

notion image

2. 팀 버너스리 (Tim Berners-Lee)

1️⃣ 누구인가?

  • 팀 버너스리 : 월드 와이드 웹(WWW)의 창시자

2️⃣ 무엇을 만들었나?

CERN에서 근무하며 다음 3가지를 제안 및 구현
  1. HTML
      • 문서를 구조화하기 위한 마크업 언어
  1. HTTP
      • 클라이언트–서버 통신 규칙
  1. URL
      • 자원을 식별하는 주소 체계
핵심 철학:
“전 세계의 문서를 링크로 연결하자”

3️⃣ 왜 중요한가?

  • 문서 간 하이퍼링크 개념 도입
  • 텍스트 → 클릭 → 다른 문서 이동
  • 오늘날 웹, 검색엔진, 브라우저의 출발점

3. HTTP (HyperText Transfer Protocol)

1️⃣ HTTP란?

  • 웹에서 클라이언트와 서버가 통신하는 규칙
  • 텍스트 기반 프로토콜 (요즘은 바이너리 기반 HTTP/2,3도 사용)

2️⃣ 핵심 특징

1) 요청(Request) / 응답(Response)

  • 클라이언트 → 요청
  • 서버 → 응답
  • 항상 요청이 먼저

2) Stateless (무상태)

  • 서버는 이전 요청을 기억하지 않음
  • 매 요청은 독립적
⬇️ 그래서 등장한 것
  • Cookie
  • Session
  • JWT

3) 대표 요청 메서드

  • GET : 자원 조회
  • POST : 데이터 전송
  • PUT : 전체 수정
  • PATCH : 일부 수정
  • DELETE : 삭제

4) 포트

  • HTTP : 80
  • HTTPS : 443

3️⃣ HTTPS

  • HTTP + TLS(암호화)
  • 데이터 도청/변조 방지
  • 인증서(CA) 기반 신뢰
➡️ 요즘 웹은 HTTPS 필수

4️⃣ 필기 (HTML에서 HyperText의 의미)

notion image

4. DNS (Domain Name System)

1️⃣ DNS 란?

  • 도메인 이름 → IP 주소로 변환하는 시스템
  • 인터넷의 “전화번호부”

2️⃣ 왜 필요한가?

  • 사람: naver.com
  • 컴퓨터: 10.5.5.5
➡️ 사람이 IP를 외우기 어려워서 DNS 사용

3️⃣ 동작 흐름 (필기 기반)

  1. 브라우저에 naver.com 입력
  1. DNS 서버에 질의
  1. DNS 서버가 IP 반환
  1. 해당 IP + 포트로 서버 접속

4️⃣ DNS 서버 예

1) 예시

  • 구글 DNS: 8.8.8.8
  • 통신사 DNS
  • 회사/학교 내부 DNS

2) 특징

  • DNS는 계층 구조
  • 하나의 도메인은 여러 IP 가능 (로드밸런싱)
  • IP 변경돼도 도메인은 유지 가능

5️⃣ 필기

notion image

5. 실습

1️⃣ HttpUrlConnection 기본 사용법

교재 p.739-740 17.2 인터넷에서 파일 다운로드하기

1) 교재 예제 - URLConnectionReader(p.740)

package com.mtcoding.ex10; import java.net.HttpURLConnection; import java.net.URL; import java.util.Scanner; public class URLConnectionReader { public static void main(String[] args) { try { // 1. ip와 port를 통해 소켓을 만들고 스트림을 연결한다. URL url = new URL("https://www.naver.com"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); // 2. 버퍼를 달아야한다. Scanner sc = new Scanner(conn.getInputStream()); String html = ""; while (sc.hasNextLine()) { String line = sc.nextLine(); if (line == null) break; html = html + line; } System.out.println(html); } catch (Exception e) { throw new RuntimeException(e); } } }

2) 결과

notion image
notion image
→ 이 데이터를 파싱해서 특정 정보를 찾아서 추출하는 것 어려움 → 문자열이기 때문에 (통신으로 다운받는 모든 데이터는 String) → html, JavaScript 언어 공부하면 파싱 가능
Share article