요점정리 - 2025-12-16

오늘 공부한 내용
오늘 공부한 내용:
    ## 🌐 인터넷 및 웹의 탄생과 기술 개요
    
    ---
    
    ## 1. 인터넷의 탄생 (History)
    
    * **인터넷의 시초 (1969년)**: 미국 국방부 산하 **ARPA**의 연구용 네트워크인 **ARPANET**을 통해 UCLA와 SRI 연구소 컴퓨터 간 메시지 전송에 성공하면서 시작되었습니다.
    * **본격적인 발전**: 이후 ARPANET이 일반에 공개되고 **TCP/IP 프로토콜**로 연결되면서 인터넷이 발전했습니다.
    * **대한민국 인터넷의 탄생 (1982년)**: 서울대학교와 KIET(전자통신연구소의 전신)가 **TCP/IP**로 **SDN**을 시작했으며, 1994년 한국통신이 **코넷(KORNET)**을 개방하며 일반 서비스가 시작되었습니다.
    
    ---
    
    ## 2. 인터넷 프로토콜 (Protocol)
    
    ### A. 프로토콜 기본 요소
    * **정의**: 컴퓨터 간 정보 교환을 위해 상호 간에 정한 통신 규칙과 방법입니다.
    * **세 가지 요소**:
        1.  **구문(Syntax)**: 데이터의 형식이나 부호화 방법 정의.
        2.  **의미(Semantics)**: 전송 제어와 오류 제어 방법 정의.
        3.  **순서(Timing)**: 통신 속도나 순서 정의.
    
    ### B. TCP/IP 및 표준 문서
    * **TCP/IP**: 현재 가장 많이 사용되는 프로토콜.
    * **RFC (Request for Comments)**: 국제인터넷표준화기구(IETF)에서 만드는 **인터넷 기술 표준 문서**.
        * 예시: **TCP**는 **RFC 0793**에 **INTERNET STANDARD**로 등록되어 있습니다.
    
    ---
    
    ## 3. 인터넷 거버넌스 (Governance)
    
    | 기구 | 주요 역할 |
    | :--- | :--- |
    | **ICANN** (국제인터넷주소관리기구) | **도메인 이름(DNS)**, **IP 주소**, 프로토콜 번호 배정 등 **기술적인 문제** 관리. |
    | **IANA** (인터넷할당번호관리기관) | 인터넷 주소 할당 및 **DNS Root Zone** 관리 담당 (ISOC 산하). |
    | **ISOC** (인터넷소사이어티) | 인터넷 이용 및 기술에 관한 국제적 협조 촉진. **IETF**, **IESG**, **IAB** 등의 핵심 조직을 지원. |
    | **IETF** (국제인터넷표준화기구) | 인터넷의 운영, 관리, 개발에 대해 협의하고 **프로토콜 및 구조적 사안 분석** (RFC 발행). |
    | **W3C** (월드와이드웹컨소시엄) | **월드와이드웹, 웹 브라우저, 웹 서버 기술의 표준화** 추진. |
    | **ITU** (국제전기통신연합) | UN 산하 기관. 전기통신 표준화 부문(ITU-T)에서 **정보통신 네트워크 기술 및 운영 표준**을 발행. |
    
    ---
    
    ## 4. 월드와이드웹 (WWW)의 탄생
    
    * **정의**: 인터넷에 연결된 컴퓨터들이 **하이퍼텍스트** 형식으로 표현된 정보를 효과적으로 이용할 수 있도록 구성한 전 세계적인 시스템 (간단히 **웹**).
    * **탄생 배경 (1989년)**: CERN의 소프트웨어 공학자 **팀 버너스 리**가 과학자들 간 정보 공유 목적으로 **정보 관리 제안서**를 발표. 
    * **핵심 기술**: 이후 **URL**, **HTTP**, **HTML**이 설계되었고, 1991년 일반에 최초 공개되었습니다. 팀 버너스 리는 로열티를 포기하며 웹의 확산에 기여했습니다.
    * **하이퍼텍스트**: 글자에 링크를 걸어 클릭 시 다른 화면이 나타나는 방식.
    
    ---
    
    ## 5. HTTP의 기본 개념
    
    * **정의**: 인터넷에서 가장 많이 사용하는 통신 프로토콜 (**HyperText Transfer Protocol**).
    * **버전**:
        * **HTTP 0.9**: 서버에서 **읽기 기능만** 지원.
        * **HTTP 1.0 (1996년)**: `GET`, `HEAD`, `POST` 메소드 지원. 연결 후 바로 끊음. 
        * **HTTP 1.1 (2001년)**: `OPTIONS`, `GET`, `POST`, `PUT`, `DELETE` 등 다양한 메소드 지원. 연결 요청이 계속 들어오면 HTML 문서 수신 후 그림 파일을 **바로 요청**하여 효율 개선. 
    
    ### A. Request (요청 패킷)
    * **구성**: 요청 메소드, 요청된 URL, HTTP 버전, 헤더 정보 (Accept, Host, User-Agent, Cookie 등).
    * **메소드**:
        * **GET**: 웹 서버로부터 자료를 가져오는 기능. **인수값**이 **URL**을 통해 **노출**됨.
        * **POST**: 데이터를 HTTP **보디 영역**에 소켓을 이용하여 전송. 인수값이 URL을 통해 노출되지 않아 **GET보다 보안 측면에서 안전**함.
    
    ### B. Response (응답 패킷)
    * **구성**: 서버 프로토콜 버전, **HTTP 상태 코드**, 헤더 정보 (데이터 형식, 길이 등).
    * **주요 HTTP 상태 코드**:
        * **200 OK**: 요청 성공.
        * **301 Moved Permanently**: 다른 URL로 영구 전달.
        * **400 Bad Request**: 잘못된 요청.
        * **401 Unauthorized**: 인증 확인 요구.
        * **403 Forbidden**: 접근 차단.
        * **404 Not Found**: 요청한 자료가 존재하지 않음.
        * **500 Internal Server Error**: 서버 오류.
    
    ---
    
    ## 6. 웹 애플리케이션 기술
    
    ### A. 서버 측 기능
    * **역할**: 클라이언트가 요청한 데이터를 서버 측에서 처리하여 동적 결과를 돌려줍니다.
    * **구성 요소**:
        * **서버 측 스크립트 언어**: PHP, Node.js, Python, JSP, Java 등.
        * **웹 서버**: Nginx, Apache, IIS (Internet Information Services) 등.
        * **데이터베이스**: DBMS (Database Management System)인 Microsoft SQL 서버, 오라클, MySQL 등. 
    
    ### B. 클라이언트 측 기능
    * **HTML (HyperText Markup Language)**: 웹 문서의 원형. 2014년 HTML5가 표준으로 확정되었으며, 멀티미디어 요소(오디오, 비디오)를 플러그인 없이 재생할 수 있는 것이 특징입니다.
    * **자바스크립트**: 객체 기반의 스크립트 프로그래밍 언어로, 서버 측에서 처리하지 않는 부분을 클라이언트 측에서 처리하여 **성능 개선**에 사용됩니다. (입력값 검증 부분은 공격 대상이 될 수 있습니다.)
    
    ---
    
    1. vmwareworkstation 설치
    2. Ubuntu 24.03 설치 (메모리 4기가)
    3. 콘솔에서 로그인
    4. ssh 서버 설치&시스템 업데이트
       sudo apt-get install net-tools openssh-server -y
       apt-get upgrade
    
    4. 런레벨(부팅모드) 변경
        sudo su 
        systemctl set-default multi-user.target
        reboot
    5.  터미널 접속