[정보통신망] #10. TCP/IP 응용 계층

bien·2024년 6월 7일
0

정보통신망

목록 보기
10/13

0. 학습목표

  • TCP/IP의 최상위 계층인 응용 계층의 역할을 설명할 수 있다.
  • 응용 계층의 프로토콜을 나열할 수 있다.
  • HTTP와 HTTPS의 차이점을 설명할 수 있다.
  • 파일 전송 관련 프로토콜을 나열하고 설명할 수 있다.
  • 원격접속 서비스와 메일 서비스에 사용되는 프로토콜을 구분할 수 있다.

1. 응용 계층

01) 응용 계층 개요

TCP/IP 기본 구조

응용 계층

  • 컴퓨터에서 웹 사이트에 접속할 때 필요한 프로토콜과 프로그램(서비스)이 있는 계층
  • 클라이언트의 요청을 전달하기 위해 서버가 이해할 수 있는 메시지(데이터)로 변환하고 전송 계층으로 전달
    • 서비스를 요청하는 측을 클라이언트
    • 서비스를 제공하는 측을 서버

02) 응용 계층 프로토콜의 종류

응용 계층 프로토콜

클라이언트가 웹브라우저를 통해 서버에 접속. 웹서버에 있는 프로그램이 웹사이트에 있는 정보를 브라우저로 내려준다.서로 요청과 응답이라는 관계들로 운영이 된다.

  • 웹 사이트에 접속하기 위한 HTTP
  • 파일을 전송할 때 필요한 FTP
  • 이메일을 받을 때 필요한 POP3
  • 이메일을 보낼 때 필요한 SMTP
  • 원격 접속에 필요한 TELNET
  • 응용 계층 프로토콜은 TCP 및 UDP를 통해 유용한 기능을 수행 (다시 전송계층으로 보냄)
  • 일반 사용자들은 TCP/UDP에 직접 접속하지 않고, 응용 계층을 통해 통신 서비스를 사용
  • TCP 응용 계층 프로토콜에는 FTP, HTTP, TELNET, SMTP, POP3, IMAP
  • UDP 응용 계층 프로토콜에는 DHCP, SNMP
  • 프로토콜을 사용하기 위해서는 포트 번호가 있어야 함
  • 포트(port)란 IP 주소에서 프로그램 상호 구분(프로세스 구분)을 위해 사용하는 번호
    • 각자의 프로토콜마다 자주 사용되는 포트가 있음. 너무 자주쓰는 포트는 생략되기도 한다.(예: HTTP80)

2. 웹서비스

01) HTTP 프로토콜

웹서비스

  • 보편적인 인터넷 서비스로 확대
    • 1989년 유리물리입자연구소의 팀 버너스리가 WWW(World Wide Web: 웹) 개발
  • 웹은 TCP/IP에 의해 동작하며, 응용계층의 HTTP 프로토콜 사용
  • HTML(Hyper Text Markup Language) 문서를 전송

HTTP(Hyper Text Transfer Protocol)

  • 클라이언트가 사이트 정보를 요청하는 것에 대해 서버가 응답하는 방식
  • 클라이언트는 html 파일 등 정보를 얻고 싶은 파일의 URL(Uniform Resource Locator) 등의 요청 정보를 전송
  • 서버는 해당 정보를 받아 데이터를 반환
  • MIME(Multipurpose Internet Mail Extensions) 정보
    • mime 개발 이전에는 문자위주였음. mime 사용 이후부터 파일, 사진등의 정보를 포함하여 전송이 가능해짐.

특징

  • 무상태(Stateless)비연결성(Connectionless)
    • 모든 요청과 응답은 이전의 것들과는 상관없이 독립적
    • 해당 요청에 필요한 모든 정보를 처음부터 보내야 함
    • 무상태의 단점을 보완하기 위해 쿠기, 세션 등 사용
  • 불특정 다수를 대상으로 하는 서비스에 적합

메시지 형식

  • 요청 메시지와 응답 메시지로 구분
    • 요청(상태) 라인, 헤더, 공백 라인(필수), 메시지 보디로 구성
  • 요청 메시지의 형태
  • 응답 메시지의 형태

02) HTTPS 프로토콜

HTTPS(HyperText Transfer Protocol over Secure Socket Layer)

  • HTTP의 보안이 강화된 버전
  • SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화
  • HTTPS의 기본포트는 443

보안키

  • 대칭키
    • 암호화와 복호화 시 키가 같음
    • 클라이언트와 서버가 모두 공유키를 가짐
  • 공개키
    • 공개키와 개인키를 함께 사용
    • 암호화할 때는 공개키, 복호화할 때는 개인키
  • SSL (Secure Socket Layer) 적용
    • 인증서 필요
    • 인증서에 서비스의 정보 및 서버측의 공개키가 포함
  • CA (Certificate Authority)
    • 인증서 발급 기업
    • 브라우저는 CA리스트를 가짐
    • CA 존재 확인 후 CA의 공개키를 이용해 인증서를 복호화

동작 방식

  • 대칭키와 공개키 모두 사용 (https의 경우 모두 사용함)
    • 데이터 전송을 위해 대칭키 사용 (전달할때는 대칭키)
    • 대칭키를 안전하게 전달하기 위해 공개키 사용 (실제로 데이터가 오면 개인키로 복호화)

  1. Client hello: 암호화 알고리즘 /SSL 버전 등의 정보 전송
    • 클라이언트가 먼저 접속 시 사용할 알고리즘과 사용할 ssl 버전을 서버에게 알려줌
  2. Server Hello: 사용할 SSL 버전 및 암호화 알고리즘 등의 정보 전송
    • 서버는 자기가 사용할 ssl 버전과 암호화 알고리즘을 알려줘 서로 맞춰줘야 할 부분과 준비사항을 알려줌
  3. Certificate: CA로부터 발급받은 인증서 전송
    • 동시에 서버에서 실제 ca로부터 발급되는 인증서를 같이 전송해줌.
  4. Server Key Exchagne: 키 교환에 필요한 정보 전송
    • 또 서버 키 exchange(교환할 때 필요 한 것)을 같이 전송해줌
  5. Certificate Request: 서버는 클라이언트 인증 및 클라이언트의 인증 요구
    • 해당 인증서에 대한 요구. (클라이언트: 나는 인증 했고, 너네도 나한테 필요한 인증을 해줘)
  6. Server Hello Done: 더 이상 메시지 없음에 대한 메시지
    • 서버: 나 이제 다 했고, 더 할거 없어. => 따라서 9번으로 이동 가능
  7. Client Key Exchange, Change Cipher Spec: pre master secret key 생성하여 대칭키 사용
    • 경우에 따라 키의 변경이 필요 한경우, 해당 정보 전송
  8. Change Cipher Spec: pre master secret key를 복호화한 후 master key로 승격함. 이후 보안 파라미터를 적용 혹은 변경될 때 보내는 과정.
    • 관련 정보를 진행하고, 다시 클라이언트 측에 알려줌

기본적인 단계로 6번까지만 하고 바로 9번 data 전송으로 넘어가기도 한다.


3. 파일 전송 서비스

01) 파일 전송 서비스 개요

  • 파일전송 서비스
    • 클라이언트와 서버 사이에 파일 전송을 위한 서비스
    • FTP(File Transfer Protocol)는 TCP/IP를 통해 파일을 전송하기 위한 프로토콜
      • 가장 일반적으로 파일 공유하는 방법
    • HTTP 프로토콜로 인해 FTP는 사용이 줄어들고 있음
      • MIME로 인해 사진/음악/동영상 공유 가능
      • 클라우드 서비스, 웹 하드 서비스

02) FTP 프로토콜

동작 과정

  • FTP 서버와 FTP 클라이언트 간에 접속
  • FTP(File Trnasfer Protocol)는 21번/20번 포트를 사용

접속 승인에 21번 포트, 실제 데이터 전송에 20번 포트를 사용. 클라이언트는 21번 서버는 20번 포트 사용.

능동 모드

  • 능동모드 및 수동 모드
  • 능동모드(active mode)
    1. 클라이언트는 FTP 서버의 21번 포트로 접속한 후에 사용할 두 번째 포트를 서버에 알려 준다.
    2. 서버는 ACK(응답 문자)로 응답한다.
    3. 서버는 클라이언트가 알려 준 두 번째 포트로 접속한다.
    4. 클라이언트에서는 ACK로 응답한다.
      • 서버가 클라이언트에 접속 시도 (보안적으로 좀 찝찝할 수 있음)
      • 클라이언트의 방화벽 및 외부적인 환경 요인에 따라 FTP 접속 불가능 혹은 에러 발생
  • 수동 모드(passive mode)
    • 1024 ~ 65535 사이의 랜덤 비특권 포트를 사용 (1024번 이후로는 편하게 아무 포트 사용 가능)
    1. 클라이언트는 FTP 서버의 21번 포트로 접속한다.
    2. 서버는 클라이언트가 사용할 두 번째 포트를 알려 준다.
    3. 클라이언트는 다른 포트를 열어 서버가 알려 준 포트로 접속한다.
    4. 서버는 ACK로 응답한다.

03) SFTP 프로토콜

  • SFTP(SSH File Trnasfer Protocol)
    • SSH(Secure Shell) 파일 전송 프로토콜
      • shell: 프롬프트. cmd창. 이 하나의 shell을 연결해, 보안을 적용하고, 자유롭게 연결 및 통신이 가능하도록 하는 것.
    • 신뢰할 수 있는 데이터 흐름을 통해 파일 접근, 파일 전송, 파일 관리를 제공
    • SFTP는 하나의 연결만 필요 (연결이 안정적임)
    • SSH 키의 유효성 검사 및 관리 복잡 (추가적으로 보안키를 관리해야 해 더 어렵고 복잡하다.)
    • 소프트웨어간 호환성의 문제 발생 (설정 문제로 충돌이 나기도 한다.)
  • 동작과정
    • 일반적인 파일 전송에서 파일을 암호화하는 과정 추가되었다고 생각하면 됨.

4. 원격 접속 서비스

01) TELNET 프로토콜

원격 접속 서비스

  • 클라이언트에서 사용 권한을 가진 서버 시스템에 접속하여 작업을 수행하는 서비스
  • TELNET, SSH 등이 사용됨

TELNET 정의

  • TELNET(텔넷)원격지의 컴퓨터를 이용하는 가상 단말 기능을 실현하기 위한 프로토콜
  • 클라이언트 일부 기능이 추가된 소프트웨어로도 사용
  • 모든 플랫폼에서 사용
  • 텔넷의 포트는 23번
  • 사용자 아이디/패스워드 필요 (당연히 서버에 대한 권한을 가지고 있어야 함)

02) TELNET 동작 방식

NVT

  • 터미널과 호스트와의 일대일 대칭적인 관계
  • 터미널 에뮬레이션 프로토콜
  • NVT(Network Virtual Terminal)를 사용
    • 클라이언트와 서버 시스템의 버전이 다르더라도 원활한 통신을 위해 데이터를 변환시켜 주는 장치

NVT 동작 방식

텔넷이라는 프로그램을 통해 메시지를 전달하고, 텔넷 서버가 가상 터미널(서버)에 메시지를 전달해 실제 요청을 수행. 이때, 중간에 nvt 문자를 이용해 문자를 변환시켜 클라이언트와 서버의 문자를 맞춰준다.

TELNET 동작 방식

  1. 클라이언트는 원격 로그인을 통하여 서버 시스템에 TCP 연결을 한다.(23번 포트)
  2. 서버 시스템은 연결된 클라이언트에게 가상의 터미널을 제공한다.
  3. 클라이언트는 실제 터미널인 것 처럼 서버 시스템에 명령어를 실행한다.
  4. 서버 시스템은 클라이언트의 명령을 수행하여 결과를 다시 클라이언트에게 전송해준다.
    • 접속해서 로그인하고, 연결되면 명령어를 넘김. 그러고 실행 결과를 서버가 클라이언트가 서버에게 돌려줌.

03) SSH 프로토콜

SSH의 정의

  • 기존의 유닉스 시스템 셸은 보완에 취약
  • SSH(Secure SHell)는 서버(원격지 호스트)에 접속하기 위해 사용되는 인터넷 프로토콜
  • 셸에 암호화가 추가된 버전
  • 강력한 인증 방법과 안전하지 못한 네트워크에서 안전하게 통신할 수 있는 기능 제공
  • rsh, rcp, rlogin, rexec, telent, ftp 등의 서비스를 안전하게 사용하도록 제공

04) SSH 동작 방식

ssh로 접속 요청. 암호화 알고리즘을 선택. 클라이언트는 암호화에 필요한 공유키 생성. 서버측에서 서버측 공개키를 보내줌. 메시지를 서버의 공개키로 암호화해서 보냄. 서버에서 이제 메시지를 전송. 클라이언트에서는 메시지 검증하고 공개키 전송. 클라이언트의 공개키로 다시 암호화해서 전송. 클라이언트측에서 자신의 개인키로 메시지 복호화. 이렇게 telnet보다는 좀 복잡하게 단계가 이루어진다.


5. 메일 서비스

01) 메일 서비스 개요

  • 메일 서비스
    • 메일 주소를 이용하여 인터넷을 통해 이메일을 주고 받을 수 있도록 서비스를 제공
    • TCP/IP 이전에는 대형컴퓨터(메인 프레임)에서 사용
    • 사용자마다 편지함이 있고, 이동을 통해 전달
    • 같은 메인 프레임에서만 사용 가능
      • 모니터만 여러대있고, 여러명이 한대의 거대한 컴퓨터 본체를 공유해서 사용함. 그 거대한 컴퓨터 본체가 대형 컴퓨터(메인 프레임). 사용자마다 본체 안에 편지함이 있고, 해당 메인프레임(큰 컴퓨터)안에서 이동을 통해 전달되는 개념.

02) 메일 관련 프로토콜

3가지 프로토콜

  • 이메일을 전달하는 프로토콜
  • 이메일을 읽을 수 있게 하는 프로토콜
  • 메일 서비스를 위해서는 SMTP, POP3, IMAP 등 크게 3가지 프로토콜이 사용
    • SMTP: 메일을 송신할 때 사용하는 프로토콜
    • POP3: 메일을 전송받을 때 사용하는 프로토콜
    • IMAP: 메일을 전송받을 때 사용되는 또 하나의 프로토콜
      • (POP3의 비동기성을 보완한 방식)
        • 로컬마다 데이터가 다르지 않고 어떤 디바이스에서 메일을 열든 동일하게 동기화하는 방식을 사용한다. 그러나 복잡하다는 단점이 있다.

메일 서버의 동작


Reference

  • 한국방송통신대학: 정보통신망 - 박지수
profile
Good Luck!

0개의 댓글