웹은 인터넷 사용자(클라이언트)가 로그인 없이 WWW(World Wide Web) 서버에 접속할 수 있는 서비스를 말한다.
웹 브라우저는 웹클라이언트와 웹서버 사이에서 웹서버의 정보를 웹클라이언트에게 보여주는 프로그램이다.
웹 클라이언트/서버
웹브라우저는 URL(Uniform Resource Locator)이 새로 쓰여질 때마다 TCP 연결을 설정하고 해제한다.
즉 사용자가 웹 페이지를 봤을 때에는 이미 연결이 해제된 상태이다.
(연결에 대한 정보가 없이 데이터를 주고받기 때문에 비상태 프로토콜이라고 한다.)
URL은 전송프로토콜과 도메인 네임 그리고 파일경로로 이루어져있다.
http://www.naver.com/index.html
클라이언트는 DNS 서버에 접속해 도메인 네임을 key로 하여 IP주소를 값으로 얻는다. 이 주소를 바탕으로 웹서버의 TCP 80번 포트로 웹서버 연결을 하고 웹서비스를 이용후 연결을 종료한다.
단 멀티미디어 데이터 전송시 해당 미디어 DB서버와 TCP 연결을 추가로 한다.
APM
APM은 Apache, Php, Mysql의 앞글자를 딴 것으로 Apache는 웹 서버 프로그램이고 Php는 html 언어의 기능을 보완하는 역할을 하며 Mysql은 웹서버의 데이터베이스이다.
클라이언트는 웹 서버 역할을 하는 Apache에 우선 접속을 시도한다. Request에 php의 처리가 필요한 코드가 있다면 php에 해당 request를 전달하여 처리하도록 요청한다. mysql의 처리가 필요하다면 php는 mysql에게 질의코드를 보내 request를 처리한다.
이러한 과정이 끝난 후 php는 Apache서버에 코드의 결과값을 HTML 언어로 번역해 전달한다.
Apache 웹 서버가 회신받는 파일은 php나 mysql query 문이 아닌 순수 HTML 문서이다. 따라서 어렵게 만들어 놓은 php 코드나 mysql 질의문이 외부로 노출되지 않는다.
HTML
위에서 계속 언급된 HTML은 웹 브라우저의 어느 위치에 데이터를 어떻게 표현할지 결정하는 언어이다.
웹 브라우저는 HTML 언어 번역기라 볼 수 있다.
HTML문서는 <html> 태그 내부에 <head>와 <body> 로 구성된다.
<head>에는 주로 브라우저의 속성값이 설정되고 <body>는 주로 문서의 내용이 들어간다.
HTTP
http는 분산 하이퍼 미디어 환경에서 데이터를 전송하는 프로토콜로 HTTP 서버는 wellknown 포트인 80번 포트에서 클라이언트의 접속을 대기한다.
http 프로토콜에는 요청메시지와 응답메시지로 데이터를 주고 받는데 클라이언트는 서버에게 요청 메서드를 이용해 요구하는 사항을 구체화 시킨다.
요청 메서드
- GET : 클라이언트가 서버에게 url이 가르키는 웹 문서의 내용을 전송해달라고 요구
- POST : 클라이언트가 서버에 정보를 전송할 수 있도록 함
- HEAD : 특정 문서의 정보를 원할 때 사용
- PUT : 클라이언트가 서버에 문서를 전달하려고 사용
이 요청 메서드는 요청 메시지의 Request Line에 들어간다.
Request Line에는 요청 메서드 뿐만 아니라 URL과 HTTP 버전등의 정보 또한 들어간다.
상태 코드
클라이언트의 요청 메시지를 받은 서버는 Request에 Respond를 위해 응답 메시지를 사용한다.
요청 메시지의 request line 대신 status line을 실어서 보낸다.
Status Line에는 상태 코드와 상태 이름의 쌍이 들어간다.
CGI
웹 클라이언트가 서버에게 데이터를 전송하는 양방향 통시을 위해 CGI기능이 필요하다.
CGI는 단순히 서버에서 작동하는 프로그램이라 생각하면 된다.
클라이언트가 <form> 태그를 이용해 데이터를 서버로 전송하는 기능을 구현할 때 사용한다.
<form> 태그의 특성으로는
1. Attribute : 데이터 처리 서버의 URL
2. Method : 데이터 처리 방식 ( GET or POST )
3. Enctype : 데이터 형식
이 있다.
2021-12-15
'Computer Science > Computer Network' 카테고리의 다른 글
FTP 원리 (0) | 2021.12.18 |
---|---|
DNS (0) | 2021.12.18 |
전송계층 (0) | 2021.12.12 |
TCP 프로토콜 (0) | 2021.12.05 |
네트워크 계층 (0) | 2021.11.30 |