2.3 인터넷 전자메일 아래 그림은 인터넷 메일 시스템의 상위 레벨 개념을 보여 준다. 사용자 에이전트, 메일 서버, SMTP(Simple Mail Transfer Protocol)라는 3개 주요 요소가 있음을 알 수 있다. 이제 이들 각 요소들은 송신자 앨리스가 수신자 밥에게 전자메일을 보내는 상황에서 기술한다. 사용자 에이전트 사용자가 메시지를 읽고, 응답하고, 전달하고, 저장하고, 구성하게 해준다. MS 아웃룩과 애플 메일은 전자메일을 위한 사용자 에이전트의 예이다. 앨리스가 메시지 작성을 끝내면 사용자 에이전트는 메시지를 메일 서버로 보내고 거기서 메시지는 메일 서버의 출력 메시지 큐에 들어간다. 밥이 메시지를 읽고 싶을 때, 그의 사용자 에이전트는 메일 서버에 있는 메일박스에서 메시지를 가져온다..
2.2 웹과 HTTP 2.2.1 HTTP 개요 HTTP: HyperText Transfer Protocol 클라이언트 프로그램과 서버 프로그램 두가지 프로그램으로 구현된다. 서로 다른 종단 시스템에서 수행되는 클라이언트 프로그램과 서버 프로그램은 서로 HTTP 메시지를 교환하여 통신한다. HTTP는 메시지의 구조 및 클라이언트와 서버가 메시지를 어떻게 교환하는지에 대해 정의하고 있다. 웹 페이지의 구성 대부분의 웹 페이지는 기본 HTML 파일과 여러 참조 객체로 구성된다. 객체 단순히 단일 URL로 지정할 수 있는 하나의 파일이다. 기본 HTML 파일 페이지 내부의 다른 객체를 그 객체의 URL로 참조한다. 각 URL은 2개의 요소, 즉 객체를 갖고 있는 서버의 호스트 네임과 객체의 경로 이름을 갖고 있..
TCP/IP 5계층 모델에서 가장 상위 층에 해당되는 애플리케이션 계층에 대해 살펴보자. 애플리케이션 계층은 최상위층으로 이 위에는 이를 사용하는 사용자가 있다. 2.1 네트워크 애플리케이션의 원리 네트워크 애플리케이션을 위한 통신은 아래 그림과 같이 종단 시스템 간의 애플리케이션 계층에서 발생한다. 2.1.1 네트워크 애플리케이션 구조 애플리케이션 개발자 관점에서 네트워크 구조는 고정되어 있고 애플리케이션에 특정 서비스 집합을 제공한다. 애플리케이션 구조(application architecture)는 애플리케이션 개발자에 의해 설계되고 애플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야 하는지를 지시한다. 현대 애플리케이션에 사용되는 두 가지 우수한 구조를 살펴보자. 애플리케이션 개발자는 이 두 ..
인터넷은 여러 요소들로 이루어진 매우 복잡한 시스템이다. 그런데 이렇게 아주 복잡하다면 네트워크 구조를 어떻게 조직해야 할까 ❓❔❓ 우리는 이러한 복잡한 구조를 쉽게 파악하기 위해 "계층화" 라는 개념을 이용한다. 항공 시스템을 통한 계층화의 이해 우선 이해하기 쉽게 항공 시스템을 살펴보자. 아래는 항공 여행 과정을 계층화해서 나타낸 것이다. 티켓, 수하물, 게이트, 이륙/착륙, 비행기 라우팅 총 5개의 층으로 나눌 수 있다. 각 계층은 그 계층에서 어떤 동작을 취하고 그 계층 바로 아래 계층 서비스를 이용함으로써 서비스를 제공한다. 예) 티켓 계층에서 티켓을 구입하고 수화물 계층에서 티켓을 구매한 승객을 대상으로 수하물 전송 서비스를 제공한다. 계층화의 필요성 위의 항공 여행 과정을 통해 살펴봤듯이 계..
성공 코드(내 코드) people을 오름차순으로 정렬한다. 보트에 최대 2명이 탑승 가능하므로 최솟값 + 최댓값을 더해본다. 더해준 값이 limit을 넘으면 2명 탑승이 안되므로 맨 뒤의 사람은 혼자 타야한다. 한명 밖에 타지 못하면 맨 뒷사람을 가리키는 인덱스를 줄여준다. 더해준 값이 limit을 넘지 않으면 2명 탑승이 가능하다. 즉 맨 앞사람을 가리키는 인덱스를 하나 증가시키고 맨 뒷사람을 가리키는 인덱스를 하나 감소시킨다. 이 과정을 맨 앞사람을 가리키는 인덱스가 맨 뒷사람을 가리키는 인덱스보다 작거나 같은 동안 반복해준다. #include #include #include using namespace std; int solution(vector people, int limit) { int answ..
성공 코드(내 코드) survey를 탐색하며 choices가 3이하인 경우에는 survey의 첫번째 문자에 해당되는 인덱스를 찾아 벡터 st의 원소에 점수를 추가 choices가 5이상인 경우에는 survey의 두번째 문자에 해당되는 인덱스를 찾아 벡터 st의 원소에 점수를 추가 st를 탐색하며 i=0, 2, 4, 6인 경우 st[i]과 st[i+1] 중 큰 값을 가지는 원소가 나타내는 문자를 벡터 type를 통해 찾아 answer에 추가한다. #include #include #include using namespace std; string solution(vector survey, vector choices) { string answer = ""; vector st(8); vector type(8); ..