웹사이트의 동작 원리
웹사이트
- 웹서버 애플리케이션이 공개하는 다양한 웹페이지의 집합
웹사이트가 화면에 표시되는 순서
- 웹브라우저에서 주소를 입력하거나 링크를 클릭!!
- 웹서버 애플리케이션에 파일 전송 요청을 보냄
- 웹서버 애플리케이션은 요청받은 파일을 응답으로서 돌려보냄
- 웹브라우저에서 수신한 파일을 표시함
HTTP ⇒ 웹페이지 파일 전송에 이용하는 TCP/IP의 애플리케이션층 프로토콜
웹페이지의 구성
1. HTML
- 웹페이지는 HTML(HyperText Markup Language)파일로 이루어져있다.
Markup : 문서의 제목이나 헤드라인, 단락, 리스트, 다른 문서 인용 등의 구조를 명확히 함으로써, 컴퓨터로 문장 구조 분석을 간편하게 할 수 있다
- HTML파일은 HTML태그로 이루어져 있다.
<body>
<h1>Hello world...!</h1>
<h2>Lorem ipsum</h2>
<p>Reprehenderit eiusmod consecttetur</p>
</body>
2. CSS (스타일 시트)
- 문서의 레이아웃이나 문자의 폰트와 색 등 웹페이지의 디자인을 정의하는 방법이다.
- HTML파일 안에 기술할 수도 있지만, 대개 별도로 스타일 시트 파일을 작성한다.
웹사이트의 주소
웹사이트 주소의 의미 : 전송받고 싶은 웹페이지를 지정하는 것
URL의 의미 : 주로 'http://'로 시작되는 문자열!!
호스트명 뒷부분이 웹서버 어디에 목적으로 하는 파일이 나타내는 경로이다.
HTTP Request : Request Line, Message Header, Entity Body 세 부분으로 나뉜다.
Request Line
- HTTP Request의 첫 번째 줄로, 웹서버에 대한 실제 처리 요청을 전달함
- 메소드, URI, 버전으로 구성됨
- URL을 입력하거나 링크를 클리갛면 GET메소드의 HTTP 리퀘스트를 웹서버 애플리케이션으로 보냄
Message Header
- 요청 라인에 이어지는 여러 줄의 텍스트이다.
- 웹브라우저의 종류와 버전, 대응하는 데이터 형식 등의 정보를 기술한다.
Empty Line : Message Header와 Entity Body를 구분하기 위한 라인
Entity Body
- POST 메소드로 웹브라우저에서 데이터를 보낼 때 사용된다.
주요 HTTP 메소드
메소드 | 설명 |
---|---|
GET | URI로 지정한 정보를 가져온다. 파일의 경우 해당 파일의 내용을 되돌려 보내고 CGI 프로그램일 경우 프로그램 출력 데이터를 반송한다. |
POST | 클라이언트에서 서버로 데이터를 송신한다. 폼에 입력한 데이터를 송신한다. |
HEAD | GET과 비슷하지만 HTTP 메시지 헤더만 반송하고 데이터의 내용을 돌려보내지 않는다. 파일 최종시간 갱신을 조사할 때 사용한다. |
OPTIONS | 통신옵션을 통지하거나 조사할 때 사용한다. |
PUT | URI로 지정한 서버의 파일을 치환한다. URI로 지정한 파일이 없는 경우에는 새로 파일을 작성한다. |
DELETE | URI로 지정한 서버의 파일을 삭제한다. |
TRACE | 서버측에서 받은 request 라인과 헤더를 그대로 클라이언트에 반송한다. 프록시 서버 등을 사용하는 경우 리퀘스트가 치환되는 상태를 조사할 떄 사용한다. |
CONNECT | 암호화한 메시지를 프록시로 전송할 때 사용한다. |
HTTP Response : Response Line, Message Header, Entity Body로 구성된다.
Response Line
- Request와 비슷하게 버전, 상태 코드, 설명문으로 나뉜다.
- 버전 : HTTP의 버전을 나타내며, 현재(2021/04/17) 주요 버전은 1.0이나 1.1이다.
- 상태 코드 : 리퀘스트에 대한 웹서버 애플리케이션의 처리 결과를 나타내는 3자리로 된 숫자
- 설명문 : 상태 코드의 의미를 간단히 보여주는 텍스트
Message Header
- 웹 서버 애플리케이션이 더 자세한 정보를 웹브라우저에 전달하기 위해 이용합니다.
Entity Body
- 웹브라우저에 돌려보낼 데이터가 들어감
상태 코드 값 | 의미 |
---|---|
1xx | 정보. 추가 정보가 있음을 전달합니다. |
2xx | 성공. 서버가 요청을 처리했음을 전달합니다. |
3xx | 리다이렉트. 다른 URI로 다시 리퀘스트하도록 요청합니다. |
4xx | 클라이언트 에러. 요청에 문제가 있어 처리할 수 없음을 전달합니다. |
5xx | 서버 에러. 서버 쪽에 문제가 있어 처리할 수 없음을 전달합니다. |
HTTP 쿠키
- 웹서버 애플리케이션이 웹브라우저에 특정 정보를 저장해 두는 기술
- 쿠키 정보는 HTTP 헤더에 포함되어 HTTP Response로 보내진다.
- 사용자의 로그인 정보나 사이트 내 웹페이지 열람 이력을 관리할 수 있다!
프록시 서버 (Proxy Server)
- 웹사이트 접속을 대행하는 서버
- 클라이언트 PC의 웹브라우저에서 어떤 웹사이트에 접속하는지 확인할 수 있음
- URL 필터링 : 특정 웹사이트에 대한 접속 제한을 할 수 있음
- 웹브라우저를 이용하는 경우 프록시서버의 IP주소와 포트번호를 설정해야함
- 프록시 서버 접속 순서
- 클라이언트 PC의 웹브라우저에서 URL을 입력하면, 프록시 서버로 HTTP 리퀘스트를 보낸다.
- 프록시 서버에서 URL로 지정된 웹서버에 HTTP 리퀘스트를 보낸다.
- 웹서버에서 프록시 서버로 HTTP 리스폰스를 보낸다.
- 프록시 서버에서 클라이언트 PC의 웹브라우저로 HTTP 리스폰스를 보낸다.
웹 애플리케이션
- 웹브라우저를 유저 인터페이스로 이용하는 애플리케이션
- 웹 접속에 이용하는 프로토콜은 HTTP
- 트랜스포트층 ⇒ TCP
- 인터넷층 ⇒ IP
- 웹사이트에 접속할 때는 URL을 이용해야함
- URL로부터 웹서버의 IP주소를 구하는 이름해석을 하기 위해서는 DNS가 필요함버의 IP주소를 구하는 이름해석을 하기 위해서는 DNS가 필요함
웹사이트를 볼 때의 동작
- 웹브라우저에서 URL을 입력 또는 링크를 클릭
- URL에 포함된 웹서버의 호스트명을 DNS서버에 질의해 웹서버의 IP주소 해석
- 그 IP주소를 지정하여 웹브라우저와 웹서버 애플리케이션 간에 TCP 커넥션을 맺음
- HTTP Request, HTTP Response를 주고받음
- TCP에서 복수로 분할된 웹페이지의 파일을 조립하여 웹브라우저에 그 내용을 표시함