[인공지능 보안을 배우다] 네트워크 추가공부_0121

daniayo·2025년 1월 21일

오늘은 공부하기 나쁘지 않은 컨디션 같군

Ch.4 웹사이트의 동작 원리

웹사이트

웹사이트 : 웹서버 애플리케이션이 공개하는 다양한 웹페이지의 집합. 일반적으로 HTML 파일.

< 웹사이트를 본다 >
1. 웹브라우저에서 웹사이트 주소를 입력하거나 링크를 클릭하면, 웹서버 애플리케이션에 파일 전송 요청을 보냅니다.
2. 웹서버 애플리케이션은 요청받은 파일을 응답함으로서 돌려보냅니다.
3. 웹브라우저에서 수신한 파일을 표시하면, 웹사이트를 볼 수 있게 됩니다.

웹사이트를 볼 때, 웹브라우저와 웹서버 애플리케이션 사이의 웹페이지 파일 전송이 한 번으로 끝나는 것은 아니다. 웹페이지 파일 전송에 이용하는 TCP/IP의 애플리케이션층 프로토콜은 HTTP이다. 애플리케이션층에서 인터넷층까지 프로토콜의 조합은 웹브라우저도 웹서버 애플리케이션도 모두 같다.

HTML

HTML 파일을 작성하기 위해 HTML을 이용한다.
HTML 태그로 문서의 구조나 링크, 외관을 결정할 수 있다.

스타일시트

웹사이트는 복수의 HTML 파일로 구성되므로, 폰트를 변경할 때는 모든 웹페이지에서 변경해야만 한다. 따라서 일반적으로는 전체적인 디자인을 스타일 시트로 따로 정의한다.
스타일 시트는 HTML 파일 안에 기술할 수도 있지만, 대개 HTML 파일과는 별도로 스타일 시트 파일을 작성한다.

URL

웹사이트를 볼 때는 웹페이지의 HTML 파일을 다운로드해서 웹브라우저로 표시한다. 전송받고 싶은 웹페이지를 지정하는 것이 웹사이트의 주소(URL)이다.
URL은 전송받고 싶은 웹서버와 그 파일을 나타낸다.

HTTP

웹브라우저와 웹서버 애플리케이션은 HTTP(Hyper Text Transfer Protocol)를 이용해 웹페이지 파일을 전송한다.
HTTP 파일 전송은 HTTP 리퀘스트와 HTTP 리스폰스를 주고받으면서 이루어진다. HTTP는 트랜스포트층의 프로토콜로서 TCP를 이용하므로, HTTP 통신을 하기 전에 TCP 커넥션을 맺는다.

HTTP 리퀘스트 : 리퀘스트 라인, 메시지 헤더, (공백 라인) 엔티티 바디의 세 부분으로 나뉜다.

  • 리퀘스트 라인 : 웹서버에 대한 실제 처리 요청을 전달한다. 메소드, URI, 버전으로 구성된다. 메소드는 서버에 대한 요청을 나타내는 부분으로 GET, POST, PUT, DELETE 등이 있다.
  • 메시지 헤더 : 요청 라인에 이어지는 여러 줄의 텍스트로, 웹브라우저의 종류와 버전, 대응하는 데이터 형식 등의 정보를 기술한다.
  • 엔티티 바디 : POST 메소드로 웹브라우저에서 데이터를 보낼 때 사용된다.

HTTP 리스폰스

HTTP 리스폰스 : 리스폰스 라인, 메시지 헤더, (공백 라인) 엔티티 바디로 구성된다.

  • 리스폰스 라인 : 버전, 상태 코드, 설명문으로 나뉜다. 버전은 HTTP의 버전을 나타낸다. 상태 코드는 리퀘스트에 대한 웹서버 애플리케이션의 처리 결과를 나타내는 3자리로 된 숫자이다. 설명문은 상태 코드의 의미를 간단히 보여주는 텍스트이다. 요청처리 성공의 200, 404에러 등이 예시이다.
  • 메시지 헤더 : 웹서버 애플리케이션이 더 자세한 정보를 웹브라우저에 전달하기 위해 이용한다.
  • 엔티티 바디 : 웹브라우저에 돌려보낼 데이터가 들어가며, 주로 HTML 파일이다.

HTTP 쿠키

HTTP 쿠키는 웹서버 애플리케이션이 웹브라우저에 특정 정보를 저장해 두는 기술이다. 웹서버 애플리케이션은 웹브라우저에 요청에 대한 HTTP 리스폰스에 쿠키를 포함하여 보낸다. 쿠키 정보는 HTTP 헤더에 포함된다.
쿠키를 이용함으로써, 웹서버는 사용자의 로그인 정보나 사이트 내 웹페이지 열람 이력을 관리할 수 있다.

프록시 서버

프록시 서버란 웹사이트 접속을 대행하는 서버이다.

< 프록시 서버를 경유하는 웹 접속 >
1. 클라이언트 PC의 웹브라우저에서 URL을 입력하면, 프록시 서버로 HTTP 리퀘스트를 보낸다.
2. 프록시 서버에서 URL로 지정된 웹서버에 HTTP 리퀘스트를 보낸다.
3. 웹서버에서 프록시 서버로 HTTP 리스폰스를 보낸다.
4. 프록시 서버에서 클라이언트 PC의 웹브라우저로 HTTP 리스폰스를 보낸다.

클라이언트 PC의 웹브라우저에서 프록시 서버에 접속할 때에는 TCP 포트 번호 8080을 사용하는 경우가 많다.
웹서버에서 보면 접속하는 것은 프록시 서버이고, 원래 클라이언트는 알 수 없게 된다.

프록시 서버의 목적

기업 네트워크에서 프록시 서버를 도입하는 경우가 자주 있다.

  • 클라이언트 PC의 웹브라우저에서 접속하는 웹사이트를 확인한다.
  • URL 필터링, 웹 필터링을 통하여 부정한 웹사이트에 접속할 수 없게 한다.

웹 애플리케이션

웹 애플리케이션은 웹브라우저를 유저 인터페이스로 이용하는 애플리케이션이다. 이 덕분에 클라이언트 PC용 전용 애플리케이션을 개발해 설치할 필요가 없다.

< 웹 애플리케이션의 개요>
1. 웹브라우저로 처리할 데이터를 입력
2. 웹브라우저 : 데이터 처리 요청 전송 ( 웹브라우저 -> 웹서버 애플리케이션 )
3. 웹서버 : 애플리케이션 서버/데이터베이스 서버에 데이터 처리를 요청
4. 애플리케이션 서버와 데이터베이스 서버가 연계해 요청받은 처리를 한다.
5. 데이터 처리 결과를 돌려보낸다.
6. 웹서버 : 데이터 처리 결과를 표시하는 웹페이지를 작성해서 돌려보낸다.
7. 처리 결과 웹페이지를 웹브라우저로 표시한다.

웹 접속 시의 애플리케이션과 프로토콜

웹사이트에 접속하기 위해 이용하는 애플리케이션은 웹브라우저이다. 웹브라우저에는 특별한 설정이 필요없다. 단, 프록시 서버를 이용할 때는 프록시 서버의 IP주소와 포트 번호를 설정한다.
웹서버에는 웹서버 애플리케이션이 필요하다. 웹서버 애플리케이션에는 공개할 웹사이트의 파일을 저잘한 장소(디렉터리) 등을 설정할 필요가 있다.

웹 접속에 이용하는 프로토콜은 HTTP이다. 트랜스포트층에는 TCP, 인터넷층에는 IP를 이용한다. HTTP의 웰노운 포트는 80이다. 네트워크 인터페이스층은 대부분 이더넷을 이용한다. 웹사이트에 접속할 때는 웹사이트 주소인 URL을 이용한다. 그 URL로부터 웹서버의 IP 주소를 구하는 이름해석을 하기 위해서는 DNS가 필요하다.

DNS 이름해석, HTTP 리퀘스트와 HTTP 리스폰스

웹사이트를 보기 위해서 HTTP 리퀘스트와 HTTP 리스폰스를 주고받지만, 그 전에 DNS의 이름해석과 ARP의 주소해석 기능도 동작하고, TCP 커넥션도 맺는다.

  1. 웹브라우저에서 URL을 입력 또는 웹페이지 링크를 클릭한다.
  2. TCP/IP는 반드시 IP 주소를 지정해야한다. URL에 포함된 웹서버의 호스트명을 DNS 서버에 질의해 웹서버의 IP 주소를 해석한다.
  3. DNS 서버에 질의할 때는 이더넷의 MAC 주소를 구하기 위해 ARP도 실행된다.
  4. 웹서버의 IP 주소를 알면, 그 IP 주소를 지정하여 웹브라우저와 웹서버 애플리케이션 간에 TCP 커넥션을 맺는다.
  5. 웹브라우저와 웹서버 애플리케이션 간의 TCP 커넥션을 확립하고 나서부터, HTTP 리퀘스트와 HTTP 리스폰스를 주고받는다.
  6. TCP에서 복수로 분할된 웹페이지의 파일을 조립하여 웹브라우저에 그 내용을 표시하면, 사용자는 웹사이트를 볼 수 있게 된다.
profile
댜니에요

0개의 댓글