How Does the Internet Work? 4탄!

정체는 김태현·2022년 12월 13일

roadmap.sh/backend

목록 보기
4/6

Application Protocols: SMTP and Electronic Mail

일반적으로 사용 되는 다른 인터넷 서비스는 Email 이다. 이메일은 어플리케이션 레벨의 프로토콜인 Simple Mail Transfer Protocol 또는 SMTP 라 한다.SMTP 는 또한 텍스트 베이스의 프로토콜이지만 HTTP와는 다르다. SMTP는 커넥션 지향적이다. SMTP는 또한 HTTP 보다 복잡하다. 많은 명령어와 고려사항이 HTTP 보다 많다.

너가 너의 이메일을 읽기 위해 이메일 클라이언트를 열때 아래의 일이 발생한다.

  1. 메일 클라이언트(Netscape Mail, Lotus Notes, Microsoft Outlook, etc.)는 디폴트 메일 서버에 접속한다. 메일 서버의 IP주소 혹은 도메인 주소는 일반적으로 메일 클라이언트가 설치될때 셋업된다.
  2. 메일 서버는 자신을 식별 하기 위해 항상 첫번째 메시지를 전송한다.
  3. 서버가 250 OK 메시지를 리스폰 하는 곳으로 클라이언트는 SMTP HELO 커멘드를 보낸다.
  4. 클라이언트가 메일을 확인하는지, 메일을 발송하는지 등에 따라 적절한 SMTP 명령이 서버로 전송되고, 서버는 이에 따라 응답한다.
  5. 요청과 응답은 클라인트가 SMTP QUIT 커멘드를 보내기 전까지 유지된다. 서버가 커멘드를 받고 say good bye 이후 연결이 종료 된다.

STMP 클라이언트와 STMP 서버의 간단한 '대화' 는 아래쪽에 보여진다.

R: denotes messages sent by the server (receiver)
S: denotes messages sent by the client (sender)




Transmission Control Protocol

어플리케이션 레이어 아래의 프로토콜 스댁은 TCP 레이어 이다. 어플리케이션이 다른컴퓨터와의 인터넷 연결을 오픈하면, 메시지는 TCP 계층으로 내려간다. TCP는 어플리케이션 프로토콜을 대상 컴퓨터의 올바른 어플리케이션으로 라우팅하는 역할을 한다. 이 일을 마치기 위해, 포트넘버가 사용된다. 포트는 각 컴퓨터에서 별도의 채널로 간주할 수 있다. 예를들어 너는 이메일을 읽으면서 인터넷 웹 서핑을 할수 있다. 이것은 두 어플리케이션이 (웹서버 와 이메일클라이언트) 다른 포트 넘버를 사용하고 있기 때문이다. 패킷이 도착하여 프로토콜 스택을 지날때, TCP 레이어는 어떤 어플리케이션이 패킷을 받을건지 포트 번호를 통해 결정한다.

TCP 는 이와같이 동작한다.

  • TCP 레이어가 어플리케이션 레이어의 프로토콜의 데이터를 받았을때, 관리 가능한 '청크'로 분할한 다음 특정 TCP 정보가 있는 TCP 헤더를 각 '청크'에 추가한다. TCP 헤더에 포함된 정보에는 데이터를 전송해야 하는 어플리케이션의 포트 번호가 포함되어 있다.

  • TCP 레애ㅣ어가 IP 레이어의 패킷을 받았을때, TCP 레이어는 패킷의 TCP헤더 데이터를 분리하여, 필요하면 데이터를 재가공하고, TCP 헤더에 담겨있는 포트번호를 사용하여 데이터를 올바른 어플리케이션으로 보낸다.

이것이 TCP가 프로토콜 스댁을 거쳐 올바른 어플리케이션으로 데이터를 라우트 하는 방법이다.

TCP는 연결 지향적이고 안정적인 byte 스트림 서비스이다. 연결 지향적이란 말은 두개의 어플리케이션이 TCP를 사용하고 있으면 TCP는 데이터를 교환하기 전에 먼저 연결을 설정해야 한다. TCP는 수신된 각 패킷에 대해 배달을 확인하기 위해 보낸 사람에게 확인 응답이 전송되기 때문에 신뢰할 수 있다. TCP는 또한 Checksum 을 헤더에 포함 하고 있는데 이는 데이터의 에러를 체크하기 위함이다. TCP 헤더는 아래와 같이 생겼다.

IP 주소가 TCP헤더에 포함되어 있지 않다는걸 알아차릴 것 이다. 이거는 TCP는 IP 주소에대해 알지 못하기 때문이다. TCP 의 역할은 어플레케이션 레벨의 데이터를 어플리케이션에서 어플리케이션으로 실뢰성있게 전송하는 목적을 갖고 있기 때문이다. 컴퓨터와 컴퓨터의 데이터를 전송하는 작업은 IP의 역할 이다.

Internet Protocol

TCP 와 다르게 IP는 신뢰할 수 없는 무연결 프로토콜 이다. IP는 패킷이 도착지에 도착했는지 아닌지를 신경 쓰지 않는다. 또한 IP는 포트넘버와 연결을 신경쓰지 않는다. IP의 역할은 다른 컴퓨터에 패킷을 보내고 라우트 하는 것이다. IP 패킷은 독립적인 엔티티(Entity)들 이고 순서가 잘못되거나 아예 도착하지 않을 수도 있다. 패킷이 올바르게 도착하게 하는 역할은 TCP 가 하는 역할이다. IP 와 TCP 의 한가지 공통점은 데이터를 받는 방식과 TCP 데이터에 IP 헤더를 담는 방식이다. IP 헤더는 아래와 같이 생겼다.

IP 주소는 IP 헤더에 담겨있다. 아래는 패킷이 어플리케이션 계층, TCP 계층 및 IP 계층을 통과한 후의 모습이다. 애플리케이션 계층 데이터는 TCP 계층에서 분할되고, TCP 헤더가 추가되고, 패킷은 IP 계층으로 계속되고, IP 헤더가 추가된 다음, 패킷은 인터넷을 통해 전송된다.

Wrap Up

이제ㅐ 너는 인터넷이 어떻게 works 하는지 알게 되었다. 하지만 얼마동안 이 상태가 유지될것인가? 인터넷 에서 사용 되고 있는 IP의 버전은 (version 4) 2의32제곱의 주소만을 허용하고 있다. 결국 이모든 주소는 사용되어 더이상 사용할 수 있는 주소가 남지 않게 될것이다. 놀랐나? 하지만 걱정마라 IP version 6 는 지금 테스트 중이다. 그리고 그후엔? 누가 알고 있을까. 누구도 인터넷이 어떻게 될지(become) 아무도 모른다. 그러나 한가지는 확실하다. 인터넷은 다른 어떤 메커니즘도 가지고 있지 않은 것처럼 세계를 통합할 것이다. 정보화 시대는 본격적으로 진행되고 있고 나는 그것에 참여하게 되어 기쁘다.

Rus Shuler, 1998
Updates made 2002

How Does the Internet Work? 끝.



의역과 오역이 많습니다. 직접 원문을 보시는걸 추천 드립니다.

원문 http://web.stanford.edu/class/msande91si/www-spr04/readings/week1/InternetWhitepaper.htm

20년이 지난 지금은 어떻게 바뀌었는지 궁금하다. 찾아보자.

profile
하나부터 열가지 다

0개의 댓글