inblog logo
|
DailyCoding
    Network & Socket

    6. Http 요청 클래스 사용

    박은서's avatar
    박은서
    Feb 09, 2026
    6. Http 요청 클래스 사용
    Contents
    1. 웹 서버의 개념1️⃣ 웹 서버란?2️⃣ 클라이언트–서버 구조3️⃣ URL과 웹 서버4️⃣ 필기 (웹 서버의 탄생 배경)2. 팀 버너스리 (Tim Berners-Lee)1️⃣ 누구인가?2️⃣ 무엇을 만들었나?3️⃣ 왜 중요한가?3. HTTP (HyperText Transfer Protocol)1️⃣ HTTP란?2️⃣ 핵심 특징3️⃣ HTTPS4️⃣ 필기 (HTML에서 HyperText의 의미)4. DNS (Domain Name System)1️⃣ DNS 란?2️⃣ 왜 필요한가?3️⃣ 동작 흐름 (필기 기반)4️⃣ DNS 서버 예5️⃣ 필기5. 실습1️⃣ HttpUrlConnection 기본 사용법

    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
    Contents
    1. 웹 서버의 개념1️⃣ 웹 서버란?2️⃣ 클라이언트–서버 구조3️⃣ URL과 웹 서버4️⃣ 필기 (웹 서버의 탄생 배경)2. 팀 버너스리 (Tim Berners-Lee)1️⃣ 누구인가?2️⃣ 무엇을 만들었나?3️⃣ 왜 중요한가?3. HTTP (HyperText Transfer Protocol)1️⃣ HTTP란?2️⃣ 핵심 특징3️⃣ HTTPS4️⃣ 필기 (HTML에서 HyperText의 의미)4. DNS (Domain Name System)1️⃣ DNS 란?2️⃣ 왜 필요한가?3️⃣ 동작 흐름 (필기 기반)4️⃣ DNS 서버 예5️⃣ 필기5. 실습1️⃣ HttpUrlConnection 기본 사용법

    DailyCoding

    RSS·Powered by Inblog