XML (eXtensible Markup Language)
XML은 데이터를 구조화하고 저장하기 위한 마크업 언어입니다. 사람이 읽을 수 있고, 기계도 쉽게 해석할 수 있도록 설계되었습니다.
특징
- 확장 가능
- 사용자가 직접 태그를 정의할 수 있어 다양한 데이터를 표현 가능.
- 텍스트 기반
- 모든 데이터가 텍스트 형식으로 저장되어 플랫폼 독립적이고 쉽게 전송 가능.
- 계층 구조
- 데이터를 트리 구조로 표현하여 부모-자식 관계를 명확히 구분.
- 표준화된 형식
- W3C 표준에 따라 데이터를 저장하고 공유.
- 범용성
- 다양한 응용 프로그램 및 시스템에서 데이터 교환에 사용 가능.
XML 기본 문법
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title>Learning XML</title>
<author>John Doe</author>
<price>29.99</price>
</book>
<book>
<title>Advanced XML</title>
<author>Jane Smith</author>
<price>39.99</price>
</book>
</bookstore>
구성 요소
- 프로로그: <?xml version="1.0" encoding="UTF-8"?>
- XML 문서의 버전과 인코딩을 정의.
- 루트 요소: <bookstore>
- XML 문서는 반드시 하나의 루트 요소로 시작해야 함.
- 요소 (Element): <book>, <title> 등
- 데이터를 포함하거나 다른 요소를 포함.
- 속성 (Attribute):
- 요소에 추가적인 정보를 제공.
<book category="fiction"><title>XML Guide</title>
</book>
- 요소에 추가적인 정보를 제공.
- 내용 (Content):
- 요소 내부의 데이터. 예: Learning XML
- 종료 태그: </book>
XML의 사용 사례
- 데이터 저장 및 전송
- 다양한 시스템 간 데이터 교환 포맷으로 사용.
- 설정 파일
- 소프트웨어의 설정 데이터를 저장 (예: web.config).
- 웹 서비스
- SOAP 기반 웹 서비스에서 데이터 교환에 사용.
- 문서 형식
- SVG, RSS, XHTML 등 여러 문서 표준의 기반.
- 계층적 데이터 표현
- 트리 구조의 데이터를 표현하는 데 적합.
XML과 다른 기술의 비교
- XML vs. HTML
- XML: 데이터 저장 및 전송 목적.
- HTML: 웹 페이지의 구조와 콘텐츠 표현 목적.
- XML vs. JSON
- JSON: 더 간결하고, 주로 웹 애플리케이션에서 사용.
- XML: 복잡한 데이터 구조와 메타데이터를 다룰 때 유용.
장점
- 사람이 읽기 쉽고, 기계가 파싱하기 쉬움.
- 플랫폼과 언어 독립적.
- 데이터 표현이 유연함.
단점
- JSON에 비해 표현이 복잡하고 데이터 크기가 큼.
- 구문 오류에 민감함 (잘못된 문법은 문서 전체를 무효화).
인터넷에서 네이버에 접속하는 과정
네이버와 같은 웹사이트에 접속할 때 발생하는 단계는 다음과 같습니다.
1. 브라우저에 URL 입력
- 사용자가 브라우저 주소창에 www.naver.com을 입력합니다.
2. DNS 조회 (도메인 네임 시스템)
- URL(www.naver.com)은 사람이 읽기 쉬운 주소로, 이를 컴퓨터가 이해할 수 있는 IP 주소로 변환해야 합니다.
- 브라우저는 DNS 서버에 요청을 보내 www.naver.com에 해당하는 IP 주소(예: 223.130.200.104)를 얻습니다.
- 캐싱: 최근 접속한 주소는 로컬(컴퓨터, 브라우저)이나 ISP의 캐시에 저장되어 조회를 빠르게 처리할 수도 있습니다.
3. TCP 연결 (3-Way Handshake)
- 브라우저는 네이버 서버와 TCP 연결을 설정합니다. 이는 데이터를 안정적으로 전송하기 위한 과정입니다.
- 브라우저 → 서버: SYN 패킷 전송 (연결 요청)
- 서버 → 브라우저: SYN-ACK 패킷 전송 (연결 요청 수락)
- 브라우저 → 서버: ACK 패킷 전송 (수락 확인)
4. HTTP/HTTPS 요청
- 연결이 성공하면 브라우저는 서버에 데이터를 요청합니다.
- HTTP 요청 메시지:
GET / HTTP/1.1Host: www.naver.com
- HTTPS: 요청은 암호화되어 전송됨.
- HTTP 요청 메시지:
5. 서버 처리
- 네이버의 웹 서버는 요청을 받고, 해당 요청에 맞는 데이터를 준비합니다.
- 필요한 경우, 서버는 데이터베이스(DB)에서 정보를 가져오거나, 다른 내부 서버와 통신하여 결과를 생성합니다.
6. HTTP/HTTPS 응답
- 서버는 브라우저에 HTML, CSS, JavaScript 등 필요한 리소스를 응답으로 보냅니다.
- HTTP 응답 메시지:
HTTP/1.1 200 OKContent-Type: text/html
- HTTP 응답 메시지:
7. 브라우저 렌더링
- 브라우저는 받은 HTML 파일을 해석하고, CSS와 JavaScript를 처리해 화면을 그립니다.
- HTML 파싱 → DOM(Document Object Model) 생성
- CSS 파싱 → 렌더 트리(Render Tree) 생성
- JavaScript 실행 → 동적 페이지 구성
8. 화면 출력
- 브라우저는 모든 리소스를 처리한 후 완성된 네이버 메인 화면을 사용자에게 보여줍니다.
요약
- URL 입력
- DNS 조회 → IP 주소 획득
- TCP 연결 → 서버와 연결
- HTTP/HTTPS 요청 → 서버로 데이터 요청
- 서버 처리 → 응답 생성
- HTTP/HTTPS 응답 → 브라우저로 데이터 전송
- 브라우저 렌더링 → 화면 생성 및 출력
이 과정은 수 밀리초~몇 초 이내에 이루어지며, 인터넷 연결 상태와 서버 성능에 따라 소요 시간이 달라질 수 있습니다.
'멋쟁이사자처럼_부트캠프 > Java' 카테고리의 다른 글
| [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 39일차 람다식 (0) | 2025.02.05 |
|---|---|
| [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 20일차 POJO, 디자인 패턴 (2) | 2024.12.30 |
| [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 19일차 OOP, SOLID 원칙 (1) | 2024.12.27 |
| [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 18일차 멀티 스레드 (3) | 2024.12.26 |
| [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 17일차 Java IO, 버퍼 (2) | 2024.12.24 |