오늘 공부한 내용:
## 🌐 인터넷 및 웹의 탄생과 기술 개요
---
## 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. 터미널 접속