애플리케이션 계층 2

BinaryHyeok·2023년 10월 23일
0

인터넷 전자메일

인터넷 메일 시스템의 주요 요소로는 user agent, mail server, SMTP(Simple Mail Transfer Protocol) 가 있다.

  • user agent

    • 사용자가 메시지를 읽고, 응답하고, 전달하고, 저장하고, 구성하게 해준다.
    • Ex) outlook, apple mail, gmail..
  • mail server

    • 메시지를 유지하고 관리하는 mailbox를 가지고 있다.
    • 송신자의 mail server -> 수신자의 mail server로 메시지가 전달된다.
    • 수신자의 mail server로 메시지를 전달할 수 없다면, 메시지를 message queue에 보관하고 나중에 그 메시지를 전달하기 위해 다시 시도한다.
  • SMTP

    • 인터넷 전자메일을 위한 주요 애플리케이션 계층 프로토콜
    • SMTP는 메일을 송신자의 mail server로부터 수신자의 mail server로 전송하는데 TCP의 신뢰적인 데이터 전송 서비스를 이용한다.
    • SMTP의 클라이언트와 서버 모두가 mail server에서 수행된다.
    • 송신 : SMTP client, 수신 : SMTP server

    SMTP

    다음은 메시지를 보내는 과정이다.

  1. 송신자는 전자메일 사용자 에이전트를 통하여 수신자의 전자메일 주소를 제공하고, 메시지를 작성 후 송신한다.
  2. 송신자의 사용자 에이전트는 메시지를 송신자의 메일 서버에 보내고, 메일 서버에서 메시지는 메시지 큐에 들어간다.
  3. 송신자의 메일 서버에서 동작하는 SMTP의 클라이언트 측은 메시지 큐에 있는 메시지를 바라본다. 수신자의 메일 서버에서 수행되는 SMTP 서버에게 TCP(Port:25) 연결을 설정한다.
  4. 초기 SMTP 핸드셰이킹(이때 SMTP 클라리언트는 송신자의 전자메일 주소와 수신자의 전자메일 주소를 제공) 이후에 SMTP 클라이언트는 송신자의 메시지를 TCP 연결로 보낸다.
  5. 수신자의 메일 서버의 SMTP 서버 측은 메시지를 수신한다. 수신자의 메일 서버는 그 메시지를 메일박스에 넣는다.
  6. 수신자는 사용자 에이전트를 통하여 원하는 시간에 메시지를 읽을 수 있다.

메일 접속 프로토콜

SMTP는 push 프로토콜이기 때문에 수신자의 user agent가 mailbox에 있는 메시지를 가져올 수 없다. 이는 메시지를 얻는 것은 pull 동작이기 때문이다. 수신자가 자신의 전자메일을 확인하는 대표적인 방법은 두 가지가 있다.

  1. user agent가 웹 기반 전자메일이나 지메일 같은 스마트폰 앱을 사용하고 있다면 HTTP를 사용할 수 있다. 이를 위해서 수신자의 mail server는 SMTP 와 HTTP 인터페이스를 모두 가지고 있어야 한다.
  2. outlook과 같은 전형적인 user agent를 사용한다면 IMAP(Internet Mail Access Protocol)을 사용한다.

소켓 프로그래밍

UDP를 이용한 소켓 프로그래밍

  1. 데이터 패킷에 주소를 붙여 넣는다. 주소는 송신자의 출발지 주소와 수신자의 목적지 주소로 구성되어 있으며 주소는 각 호스트의 IP주소 + 소켓의 포트 번호로 구성되어 있다.
  2. 패킷이 송신자의 소켓을 통과한 수 인터넷은 목적지 주소를 이용하여 패킷을 수신 프로세스에 있는 소켓으로 라우트한다.
  3. 패킷이 수신 소켓에 도착하면 수신 프로세스는 소켓을 통해 그 패킷을 추출하고 다음에 패킷의 콘텐츠르 조사하고 적절한 동작을 취한다.

TCP 소켓 프로그래밍

UDP와 달리 TCP는 연결지향 프로토콜로, 클라이언트와 서버가 서로에게 데이터를 보내기 전에 먼저 TCP 연결이 필요하다. TCP 연결의 한쪽은 클라이언트 소켓, 다른 쪽은 서버 소켓에 연결된다. TCP 연결이 설정된 후, 한쪽에서 다른 쪽으로 데이터를 보내려면 소켓을 통해 데이터를 TCP 연결로 보내면 된다.

  1. 클라이언트 프로세스는 서버로 TCP 연결을 시도한다. 이때 TCP 서버 클라이언트는 접속 시도 전에 프로세스를 수행하고 있어야 한다.
  2. 클라이언트 프로그램에서 TCP 소켓을 생성하고, 이때 서버 IP주소와 소켓(welcome)의 포트 번호를 명시한다. 소켓을 생성한 후 클라이언트는 3 Way-Handshake를 통하여 서버와 TCP 연결을 설정한다.
  3. TCP 연결이 완료되면 클라이언트 소켓과 서버 소켓(connection)은 서로 바이트를 보내고 받을 수 있게 된다.

TCP Server 프로세스는 2개의 welcome socket과 connection socket을 가진다.

Reference

KOCW - 컴퓨터 네트워크
컴퓨터 네트워킹 하향식 접근

0개의 댓글