Computer Science/네트워크

[컴퓨터네트워크] 15. 표준 클라이언트/서버 프로토콜 (2)

lumana 2024. 5. 23. 01:14

클라이언트-서버 프로토콜(2)


E-mail (전자메일)

  • 이용자 간 메시지 교환
  • 이 응용 서비스는 지금까지 본 다른 응용과는 다르다.
  • Client/server 프로그래밍은 좀 더 다른 방식으로 구현해야 함
    • 중간에 다른 서버를 필요로 함
  • 프로토콜
    • SMTP
    • POP
    • IMAP
    • (SMTP를 주로 사용하고, POP와 IMAP은 나중에 추가된 프로토콜)
  • MIME(Multipurpose Internet Mail Extensions) : 컨텐츠 형식
    • (인코딩 해서 보낼 형식임)

이메일 서비스 구조

  • MTA Server/Client
    • Message Transfer Agent
      • 메일 보낼 때
  • MAA Server/Client
    • Message Access Agent
    • 메일 읽을 때
  • UA
    • 메일 클라이언트 (요즘은 web)
  • 그림 13.12에서 Alice와 Bob이 이메일을 교환한다.
  • 두 이용자는 다른 서버를 통해 연결되었다고 가정

서울 우체국에 편지를 접수하고, 부산 우체국으로 편지가 전달되어 상대방에게 최종적으로 전달되는 것과 유사하다

Example 13.12

그림 13.16은 3개의 메일 전달 단계를 설명

그림에서 데이터 전달 섹션에서 봉투 헤더, 바디 (envelope, header, body)를 나누어 묘사했다 클라이언트는 frouzan@anetwork.com으로 이메일을 보내기 위해 자신의 로컬 메일 서버인 someone.com에 접속 하여 이메일을 서버로 올리는 단계이다. 로컬 메일서버는 이메일 메시지를 다 받은 이후에 spool에 넣고, 이 후에 리모트의 상대 이메일 서버로 보낼 것 이다.

Non-ASCII 인 data가 중간에 껴있어서, ASCII로 바꾸려는 경우이다.

E-mail Security

  • 이메일 교환은 이메일 시스템을 위한 두 가지 응용계층 보안 프로토콜을 통해 보호된다
  • Pretty Good Privacy (PGP)
  • Secure/Multipurpose Internet Mail Extensions (S/MIME)

Telnet

  • 우리가 필요로 하는 서비스의 모든 클라이언트/서버 쌍을 갖는 것은 불가능
  • 서버의 숫자가 굉장히 많아짐 -> 확장성 문제
  • 해결책은 공통의 시나리오를 갖는 클라이언트/서버 프로그램을 만들고, 특별 서비스를 위해 기능을 추가하는 것

로컬/원격 로그인

 

 

참고) Local logging은 컴퓨터 시스템에서 발생하는 이벤트나 활동을 로컬 시스템에 기록하는 프로세스를 의미

 

참고) Remote logging은 시스템의 로그를 로컬 시스템이 아닌 원격 시스템에 기록하는 방법을 의미합니다. 

 

참고) NVT (Network Virtual Terminal)는 TELNET 프로토콜에서 사용하는 가상 터미널의 표준화된 개념입니다. 이를 통해 서로 다른 시스템 간의 통신을 가능하게 합니다.

 

2022 기출) Network Virtual Terminal character set format을 간단히 설명하시오. (10)

NVT 데이터 포맷은 텔넷 클라이언트와 서버간의 데이터 교환에 사용되는 데이터 인코딩 포맷이다. 상위 데이터가 0이 면 텟넷 프로토콜이 전달하는 Data가 있는 바이트이고, 상위 비트가 1이면 텔넷 세션 관리에 사용되는 제어 정보를 가진 바이트이다.

 

통신 과정

  1. 사용자 입력: 터미널에서 사용자가 입력한 데이터는 로컬 컴퓨터의 TELNET 클라이언트로 전달됩니다.
  2. TELNET 클라이언트 처리: TELNET 클라이언트는 데이터를 NVT 캐릭터 형식으로 변환하여 인터넷을 통해 원격 시스템으로 전송합니다.
  3. 원격 시스템 수신: TELNET 서버는 NVT 형식의 데이터를 수신하여 Pseudoterminal Driver에 전달합니다.
  4. 응용 프로그램 처리: Pseudoterminal Driver는 데이터를 원격 응용 프로그램으로 전달하여 처리합니다.
  5. 결과 반환: 응용 프로그램의 출력 결과는 역순으로 로컬 터미널에 표시됩니다.

 

2023 기출) PC에서 telnet으로 comunix.seoultech.ac.kr에 접속하는 경우, PC 와 DNS 서버, PC와 comunix와의 데이터 전달 과정을 프로토콜, 교환 데이터의 관점에서 설명하라

 

이용자가 telnet comunix.seoultech.ac.kr를 입력하면, 컴퓨터는 우선 DNS 서버로 해당 이름을 해결하기 위한 요청데이터를 UDP에 캡슐화 하여 질의를 요청하고, DNS 서버는 comunix의 IP 주소를 응답한다. 이제 comunix의 IP 주소로 telnet 연결을 시도한다.
먼저 TCP를 통한 서버의 23번 포트로의 연결을 수립하고, 연결된 세션을 통해 텟넷 데이터 교환을 시작한다. 텔넷에서 교환하는 8비트의 데이터가 0으로 시작하면 data이고, 1로 시작하면 텔넷 프로토콜이 교환하는 control 데이터이다. 따라서, 우선 control 데이터의 교환을 통 해 연결 설정을 이룬 다음, 이용자 데이터를 0으로 시작하게 하는 인코딩 작업을 통해 telnet 서버와의 데이터 교환을 하며 서버를 사용하 게 해 준다.

 

SSH (Secure Shell)

  • Secure Shell (SSH)이 현재 리모트 로그인이나 파일전송 등에 사용되는 안전한 응용 프로그램이지만, 원래는 TELNET을 대치하기 위해 고안된 것임(대치하여 암호화 해준다)
  • 2가지 버전 존재
    • SSH-1 : deprecated
    • SSH-2 : 현재 많이 사용

SSH 3 컴포넌트

  • SSH-CONN
    • 여러 응용 프로그램간 연결 제공
    • 다중화
  • SSH-AUTH
    • 서버에 대해 클라이언트의 인증을 제공
  • SSH-TRANS
    • TCP 연결상에 보안을 제공하기 위해 보안변수들을 교환
    • 기밀성, 비밀성, 무결성, 압축

SSH 응용

  • SSH가 Telnet의 대치물이지만, 다양한 클라이언트/서버 간에 안전한 영결을 제공하는 범용 프로토콜이라 할 수 있다

 

DNS (Domain Name Service)

  • 인터넷에서 이름과 주소를 매핑하는 디렉토리 서비스 필요
    • (디렉토리 서비스 : 이름을 가지고 원하는 리소스를 알려주는 것)
  • 전화망과 비슷
    • 이름 -> 전화번호
  • 그림 13.28은 어떻게 TCP/IP의 응용 프로그램에서 이름에서 주 소를 매핑하기 위해 DNS 클라이언트와 DNS 서버를 활용하는 방식을 보여줌

네임 스페이스

  • 네임과 IP 주소를 연결하는 공간
  • 이름은 유일성 확보
  • 각각의 주소를 매핑하는 이름 공간 구성 방식
    • Flat
    • hierarchical (보통 hierarchical함)

 

 

 

인터넷의 DNS

  • DNS는 여러 플랫폼에서 사용 가능한 프로토콜
  • 인터넷에서 도메인 네임 스페이스 (tree)는 3개의 섹션으로 구성
    • generic domains : com, edu, org, ...
    • country domains : jr, us, ...
    • inverse domains : IP 주소로 이름 찾는 서비스. Deprecated(더 이상 사용X 의미)

 

 

Resolution

  • Name-address resolution
    • Mapping a name to an address
    • (DNS 서버에 mapping 정보가 있어야 함)
  • Resolver
    • DNS 클라이언트
    • 가까운 DNS 서버에 엑세스해 매핑 요청
  • DNS 서버가 정보를 가지고 있으면 주소가 해결되고, 없으면 정보 를 얻기 위해 다른 DNS 서버에 문의

(캐시를 둬서 다른 컴퓨터가 한 번 물어본 것을 캐시에 저장했다가, 또 물어보면 저장된 것을 반환해주는 구조)

 

 

레코드 리소스

  • (DNS 서버에 저장되어 있는 매핑 정보(보통 자기 도메인 내의 정보가 있음))
  • 네임 서버는 리소스 레코드의 데이터베이스를 저장
  • 리소스 레코드는 5-tuple 구조
    • Domain Name, Type, Class, TTL, Value
    • (Type : v4, v6...)

 

Example 13.13

유닉스와 윈도우에서, nslookup 명령은 address/name 매핑을 알려준다.(DNS 서버에 쿼리를 날려서 응답을 얻는 것임)

$nslookup www.forouzan.biz
Name: www.forouzan.biz
Address: 198.170.240.179