6. 웹사이트&이메일의 구조 이해하기

SoYun Park·2023년 4월 29일
0
post-thumbnail

1. 웹사이트를 보는 것은 무엇을 의미할까?

1-1. 웹 액세스의 흐름

  • 웹 액세스
    • 웹 서버로부터 HTML 파일이나 이미지 파일 등을 다운로드하여 표시하는 것을 의미한다.
    • 전체적인 흐름은 다음의 5가지 단계로 이루어진다.
      1. 유저가 웹 브라우저에 URL을 입력한다.
      2. URL로 지정한 웹 서버에게 HTTP 요청을 송신한다.
      3. 웹 서버가 요청을 해석한다.
      4. 웹 서버가 요청받은 파일을 웹 브라우저에 HTTP 응답을 돌려보낸다.
      5. 웹 브라우저가 수신한 데이터를 해석해서 표시한다.

1-2. 통신하는 웹 서버는 1대 뿐만이 아니다

  • 실제 서비스는 여러 대의 웹 서버로부터 파일을 전송받는다.
  • 다른 웹 서버로부터 이미지 파일을 읽어 들여 웹 페이지를 구성하는 경우가 있다.
  • 트위터나 페이스북 등의 업데이트 정보나 광고가 삽입된 웹 페이지들은 요청을 보낸 웹 서버 이외의 서버와 통신이 발생한다.

1-3. URL

  • URLUniform Resources Locator
    • 인터넷 상의 데이터 위치를 가리키는 표준적인 표기법이다.
    • 구조는 다음과 같다.


1-4. 정적 웹 페이지와 동적 웹 페이지

  • 정적 웹페이지
    • 웹 서버 상에 미리 저장되어 있는 웹 페이지이다.
  • 동적 웹페이지
    • 웹 브라우저의 요청에 따라서 웹 서버가 자동으로 생성한 웹 페이지이다.
    • ex) 검색 엔진의 검색 결과 페이지, 온라인 쇼핑몰의 장바구니 페이지



2. HTML이 뭐지?

2-1. HTML = 웹 페이지의 내용

  • HTMLHyperText Markup Language
    • 하이퍼텍스트를 기술하기 위한 규칙에 해당한다.
  • 하이퍼텍스트
    • 보통의 텍스트를 넘어선 기능을 가진 텍스트이다.
  • 하이퍼링크
    • 웹 페이지에는 링크가 있고 링크가 붙어 있는 텍스트를 클릭하면 링크된 페이지로 액세스할 수 있다.

2-2. HTML 태그

  • 태그
    • HTML은 하이퍼링크뿐만 아니라 문서의 구조나 스타일에 대한 규칙을 정한다.
    • 문서의 구조로써 타이틀이나 구성 요소의 인덱스 레벨, 단락, 리스트, 인용표시 등을 정한다.
    • 문서의 스타일로는 폰트의 종류와 크기, 구성요소의 위치 등을 정한다.
    • HTML 태그에는 시작 태그<>와 종료 태그</>가 있으며 반드시 세트로 사용된다.
    • 여러 개의 웹 페이지에 같은 태그를 적용하려면 유지보수 비용이 크기 때문에 문서의 스타일을 스타일시트로 분리하여 문서의 구조와 별도로 정의한다.
  • 스타일시트
    • 문서의 레이아웃이나 폰트, 폰트 색깔과 같이 웹 페이지 디자인을 정의한 것이다.
    • 문서의 구조와 스타일을 분리하면 웹 페이지의 디자인을 수정할 때 스타일시트만 변경하면 된다.



3. HTTP가 뭐지?

3-1. HTTP

  • HTTPHyperText Transfer Protocol
    • 웹 서버에 존재하는 HTML 파일이나 이미지 파일을 PC의 웹 브라우저로 전송하기 위해 사용한다.

3-2. HTTP 요청

  • 웹 브라우저가 웹 서버로 보내는 HTTP 요청은 다음의 3가지로 나누어진다.

    • 요청 행Request Line
    • 메세지 헤더Message Header
    • 엔티티 바디Entity Body

3-2-1. 요청 행

  • HTTP 요청의 첫 번째 라인에 위치하며 웹 서버에게 처리 요구를 전달한다.
  • 요청 행은 다음의 3가지로 구성되어 있다.
    • 메소드
      • GET: URI로 지정한 데이터를 가져온다.
      • HEAD: URI로 지정한 데이터의 응답 헤더만을 가져온다.
      • POST: URI로 지정한 서버의 커맨드에 대해 데이터를 송신한다.
      • PUT: URI로 지정한 데이터를 전송한 데이터로 덮어쓴다.
    • URI
      • 요청 대상인 데이터를 가리킨다.
    • 버전
      • 웹 브라우저가 지원하는 HTTP의 버전으로 주로 1.0이나 1.1이 사용된다.

3-2-2. 메세지 헤더

  • 요청 행 다음에 오는 여러 행의 문자열이다.
  • 웹 브라우저의 종류나 버전, 데이터 형식 등의 정보가 쓰여있다.

3-2-3. 엔티티 바디

  • 메시지 헤더 다음에 구분을 위해서 빈 행이 들어가고 그 다음에 엔티티 바디가 이어진다.
  • 엔티티 바디는 파일을 보낼 때 사용되지만, 보낼 데이터가 없는 경우에는 사용하지 않는다.

3-3. HTTP 응답

  • 웹 브라우저가 HTTP 요청을 보내면 웹 서버는 이에 대해 HTTP 응답을 반환한다.
  • 요청과 같이 다음의 3가지로 나누어진다.
    • 상태 행Status Line
    • 메시지 헤더Message Header
    • 엔티티 바디Entity Body

3-3-1. 상태 행

  • 상태 행은 다음의 3가지로 구성되어 있다.

    • 버전

    • 상태 코드

      상태 코드의미
      100번대정보, 추가 정보가 있다는 것을 알린다.
      200번대성공, 서버가 요청을 성공적으로 처리했다는 것을 알린다.
      300번대리다이렉트, 다른 URI로 다시 요청을 보낼 것을 요구한다.
      400번대클라이언트 에러, 요청에 문제가 있어 처리하지 못했다는 것을 알린다.
      500번대서버 에러, 서버 쪽에 문제가 있어 처리하지 못했다는 것을 알린다.
    • 설명문

      • 상태 코드의 의미를 간단히 기술한 텍스트이다.

3-4. HTTP 쿠키

  • 쿠키
    • 웹 서버가 웹 브라우저에 특정한 정보를 저장해두기 위한 시스템이다.
    • 쿠키를 이용함으로써 유저의 로그인 정보나 사이트 내 웹 페이지의 열람 이력 등을 관리할 수 있다.
    • HTTP에 의한 파일 전송은 1번으로 한정되어 있다. 이를 스테이트리스Stateless라고 한다.
    • 쿠키는 접속한 곳을 식별할 수 있게 되므로 웹 페이지 여러 개에 걸쳐서 일련의 처리를 수행할 수있다. 이처럼 접속 상태를 보존해두는 것을 스테이트풀Stateful이라고 한다.



4. 이메일 시스템

4-1. 이메일 송수신의 개요

  • 이메일 송수신에는 SMTPSimple Mail Transfer Protocol과 POP3Post Office Protocol 3라는 2개의 프로토콜을 조합하여 사용한다.

    미리 자신의 메일 계정과 메일 서버의 IP 주소를 설정해둔다.

    1. 보내는 사람이 설정해둔 메일 서버에게 SMTP로 메일 데이터가 전송된다.
    2. 받는 사람 메일 주소의 도메인명으로 목적지 메일 서버를 판단한다.
    3. 목적지 메일 서버에게 SMTP로 메일이 전송된다.
    4. 도착한 메일을 저장한다.
    5. 받는 사람에 의해 POP3로 메일이 수신된다.

4-2. 이메일 주소

  • fene@n-study.com 과 같이 ID@도메인명의 형식으로 표시된다.
  • 송신한 메일은 받는 사람의 메일 주소 도메인명에 해당하는 메일 서버까지 SMTP로 전송되는데 이 때 최종 목적지인 메일 서버의 IP 주소가 필요하다.
  • DNS 서버에 등록된 MX 레코드도메인 내의 메일 서버 정보에 매핑된 IP 주소를 질의함으로써 목적지 메일 서버의 IP 주소를 알 수 있다.

4-3.SMTP

  • 메일 전송에 사용되는 프로토클이다.

  • SMTP는 TCP를 이용하는 응용 계층 프로토콜로써 잘 알려진 포트 25번을 사용한다.

  • 주요 커맨드는 다음과 같다.

    SMTP 명령어의미
    HELO세션을 시작한다.
    EHLO세션을 시작한다(확장 SMTP).
    MAIL송신자를 알린다.
    RCPT수신자를 알린다.
    DATA메일 데이터를 보낸다.
    QUIT세션을 종료한다.
    RSET통신을 중단하고 받은 데이터를 파기한다.
    VERY유저 아이디를 확인한다.
    NOOP아무것도 하지 않는다.

4-4. POP3

  • 수신한 메일 데이터를 메일 소프트웨어로 다운로드 한다.

  • SMTP와 같이 TCP를 이용하는 응용 계층 프로토콜로써 잘 알려진 포트 110번을 사용한다.

  • 주요 명령어는 다음과 같다.

    POP3 명령어의미
    USER유저 아이디를 보낸다.
    PASS패스워드를 보낸다.
    APOP패스워드를 암호화해서 보낸다.
    AUTH인증 방식을 통지한다.
    STAT서버의 상태를 나타낸다.
    LIST메일 알람을 나타낸다.
    RETR메일을 요구한다.
    DELE삭제 표시를 한다.
    RSETDELE 커맨드를 실행 취소한다.
    UIDL메일 유니크 ID 정보를 가져온다.
  • 단점 사항
    • 메일의 데이터를 PC에서만 관리해야 한다.
    • 로컬에서 메일 데이터를 관리하므로 PC마다 메일 데이터의 백업을 해주어야 한다.
    • 어느 PC에서든 한 번 메일을 수신하고 나면 그 메일 데이터는 메일 서버에서 삭제되기 때문에 다른 PC에서는 그 메일을 받을 수 없게 된다.

4-5. IMAP4

  • POP3와 달리 메일 서버에서 메일 데이터를 관리한다.
  • 메일 서버에 로그인하면 IMAP4는 메일의 제목이나 보낸 사람 등의 헤더 정보만을 불러온다.
  • 필요한 메일만 다운로드하므로 POP3에 비해 적은 네트워크 트래픽을 사용한다.
  • 단점 사항
    • 메일 서버에 연결하지 못하면 메일을 읽을 수 없다.
    • 메일 서버의 부하가 크다.

4-6. 웹 메일이란?

  • 웹 메일
    • 이메일 소프트웨어를 사용하지 않고 웹 브라우저에서 메일을 송수신할 수 있게 해주는 서비스이다.
    • 웹 메일 서비스에는 다음의 2가지 종류가 있다.
      • ISP가 제공하는 웹 메일
      • ISP 이외의 인터넷 서비스 기업이 제공하는 웹 메일


5. 이메일 보안

5-1. SMTP/POP3의 보안

  • SMTP/POP3의 보안 위험성
    • SMTP의 경우 메일을 송신할 때 인증 등의 절차를 거치지 않고 메일의 암호화나 변조 여부 또한 확인하지 않는다.
    • POP3의 경우 메일을 송신할 때 유저 인증은 거치지만 인증 패스워드의 암호화나 메일 내용의 암호화 등은 이루어지지 않는다.
    • 공용 무선 LAN 서비스로 인터넷에 접속해서 SMTP/POP3로 메일을 송신할 경우 무선 LAN의 암호화를 해독한다면 비교적 간단히 메일 도청 등을 당할 수 있다.

5-2. 이메일 송신 보안

5-2-1. OP25B/SMTP Auth

  • 이메일을 이용하면 매우 적은 비용으로 많은 유저들에게 메일을 보낼 수 있다. 이를 악용한 대표적인 예가 스팸 메일이다.
  • 메일을 송신하는 SMTP에는 인증 기능이 없으므로 스팸 메일의 송신자는 인터넷 상의 다양한 메일 서버를 통해 스팸 메일을 보낼 수 있다.
  • OP25B/SMTP Auth는 이러한 스팸 메일 송신에 제동을 거는 기술이다.
  • OP25B를 이용해서 ISP의 외부Outbound로 나가는 SMTP 통신25번 포트를 필요에 따라 블록한다.
  • SMTP는 대다수의 ISP가 25번 포트를 블록했기 때문에 587번 포트로 변경해서 사용한다. 이 때 587번 포트를 서브미션 포트라고 한다.

5-2-2. SMTP over SSLSMTPS

  • SSL이란 인증서를 이용한 암호화 기술로써 웹 브라우저의 통신을 암호화하는 HTTPS 등에서도 폭넓게 이용된다.
  • SMTPS는 SSL로 SMTP 통신을 암호화하여 송신하는 메일이 도청되거나 변조되는 것을 방지한다.

5-3. 이메일 수신 보안

5-3-1. Authenticated POPAPOP

  • POP3에서는 유저 인증을 위한 아이디와 패스워드가 암호화되지 않기 때문에 유저 인증 통신을 감청당하면 그대로 노출될 위험이 있다.
  • APOP이란 POP3 유저 인증 시 패스워드를 평문으로 송신하지 않음으로써 패스워드를 알 수 없도록 한다.

5-3-2. POP3 over SSlPOP3S

  • APOP은 인승 시 패스워드를 평문으로 송신하지 않을 뿐, 다운로드하는 메일 자체는 암호화하지 않는다.
  • POP3S는 POP3 통신을 SSL로 암호화함으로써 메일 내용을 제 3자가 알 수 없게 한다.

5-4. 이메일 본문 보안

  • SMTPS나 POP3S는 PC와 메일 서버 사이의 통신만 암호화할 수 있다.
  • 또한 메일 서버와 이메일 소프트웨어 양쪽이 SMTP/POP3일 경우 암호화되지 않는다.
  • 따라서 ISP의 메일 서버하고만 SMTPS, POP3S로 통신해도 제 3자에게 정보 노출의 위험이 남아있다.
  • 메일이 최종 수신자에게 도달되기까지 제 3자가 훔쳐볼 수 없도록 하기 위해 메일 메시지 본문을 암호화한다.
  • 메일 메시지를 암호화하는 방법에는 다음의 2가지 방법이 있다.
    • PGP
    • S/MINE

5-5. PGP와 S/MINE

  • 공통점
    • PGP와 S/MINE은 공개 키 암호 방식으로 메일 메시지를 암호화하여 여기에 전자 서명을 추가할 수 있다.
    • 메일을 받는 사람은 전자 서명을 통해 메일을 보낸 사람을 확실히 확인할 수 있으며 메일 내용의 위변조 여부를 확인할 수 있다.
    • 메일을 감청당하더라도 메일 본문이 암호화되어 있으므로 그 내용이 노출될 위험이 없다.
  • 차이점
    • 암호화와 전자 서명에 사용하는 공개 키의 관리 방식
      • PGP는 특정 유저끼리 서로의 공개 키를 신뢰할 수 있는 것으로 간주하고 관리한다.
      • S/MINE는 인증 기관에서 해당 공개 키가 신뢰 가능함을 보증한다.

0개의 댓글