728x90
분류 전체보기
544

[웹 브라우저의 동작] 1. HTTP

전체적인 흐름 구체적인 설명에 앞서 전체적인 흐름을 살펴보고 하나씩 파고 들어가 보겠다. 브라우저 실행 URL 입력 브라우저가 URL을 조사 후 리퀘스트 메시지 생성 DNS 서버에 IP 주소 조사 신청 OS에 웹 서버로 송신해주라고 의뢰 웹 서버 수신 URL URL이란? URL(Uniform Resource Locator)는 일반적으로 브라우저의 주소창에 "http://"로 시작하는 주소라고 생각하면 된다. 하지만 사실 "http://"뿐만아니라 "ftp:", "file:", "mailto:" 등도 있다. 이러한 것들은 하나의 기능 또는 하나의 액세스 방법 또는 하나의 프로토콜 종류를 나타낸다. 예를 들어서 "ftp:" 는 파일을 다운로드/업로드하는 FTP(FIle Transfer Protocol)의 클..

Network 2021.05.12

HTTP 상태 코드

상태 코드는 클라이언트가 서버를 향해 요청을 보낼 때 서버에서 그 결과가 어떻게 되었는지 알려준다. 예를 들면 200 OK와 같이 3자리 숫자와 설명으로 나타낸다. 숫자의 첫 번쨰 자리는 응답 클래스를 의미하는데 나머지 2자리는 분류가 없다. 이 응답 클래스는 다음과 같이 5개가 정의되어 있다. 클래스 설명 1xx informational 요청를 받아들여 처리중 2xx Success 요청를 정상적으로 처리함 3xx Redirection 요청을 완료하기 위해 추가 동작이 필요 4xx Client Error 서버가 요청을 이해 불가능 5xx Server Error 서버가 요청 처리 실패함 2xx 성공(Success) 2xx 응답은 요청이 정상적으로 처리되었음을 나타낸다. 202 OK 클라이언트가 보낸 요청을..

Network 2021.05.05

HTTP 메시지

HTTP 메시지 HTTP에서 교환하는 정보는 HTTP 메시지라고 불리는데 요청 측 HTTP 메시지를 요청 메시지, 응답 측 HTTP 메시지를 응답 메시지라고 부른다. HTTP 메시지는 복수 행(개행 문자는 CR+LF)의 데이터로 구성된 텍스트 문자열이다. HTTP 메시지는 크게 구분하면 메시지 헤더와 메시지 바디로 구성되어 있고, 최초에 나타나는 개행 문자(CR+LF)로 메시지 헤더와 메시지 바디를 구분한다. 메시지 헤더 개행 문자(CR+LF) 메시지 바디 메시지 헤더 : 서버와 클라이언트가 꼭 처리해야 하는 요청과 응답 내용과 속성 등 CR+LF : CR(carriage return : 16진수 0x0d)와 LF(line feed : 16진수 0x0a) 메시지 바디 : 꼭 전송되는 데이터 그 자체 요청..

Network 2021.05.04

Django는 무엇인가?

장고는 웹 프로그램을 쉽고 빠르게 만들어 주는 웹 프레임워크다. 예를 들어 쿠키나 세션 처리, 로그인/로그아웃 처리, 권한 처리, 데이터베이스 처리 등 웹 프로그램을 위해 만들어야 할 기능이 정말 산더미처럼 많다. 하지만 웹 프레임워크를 사용하면 이런 기능들을 여러분이 일일이 만들 필요가 없다. 왜냐하면 웹 프레임워크에는 그런 기능들이 이미 만들어져 있기 때문이다. 그저 웹 프레임워크에 있는 기능을 익혀서 사용하기만 하면 된다. 쉽게 말해 웹 프레임워크는 웹 프로그램을 만들기 위한 스타터 키트라고 생각하면 된다. 그리고 파이썬으로 만들어진 웹 프레임워크 중 하나가 바로 장고이다. 장고는 튼튼한 웹 프레임워크이다. 개발자가 웹 프로그램을 만들 때 가장 어렵게 느끼는 기능 중 하나는 바로 보안 기능이다. 이..

Django 2021.05.02

HTTP 프로토콜의 구조

TCP/IP에 있는 다른 많은 프로토콜과 마찬가지로 HTTP도 클라이언트와 서버 간에 통신을 한다. 텍스트와 이미지 등과 같은 리소스를 필요하다고 요구하는 쪽이 클라이언트가 되고, 이러한 리소스를 제공하는 쪽이 서버가 된다. HTTP는 클라이언트와 서버의 역할을 명확하게 구별한다. 요청(Request)과 응답(Response) HTTP는 클라이언트로부터 요청(Request)이 송신되며, 그 결과가 서버로부터 응답(Response)으로 되돌아온다. 서버 측은 요청을 받지 않고서는 응답을 송신하는 일이 없다. 간단히 말해 서버는 말걸지 않으면 대답하지 않는다. 구체적인 예를 들어 클라이언트 측에서 HTTP 서버에 다음과 같은 요청을 송신했다고 하자.GET /index.html HTTP /1.1Host: ww..

Network 2021.05.02

[Programmers]Python_수식 최대화

문제 문제 설명 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다. 해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여 만들 수 있는 가장 큰 숫자를 제출하는 것입니다. 단, 연산자의 우선순위를 새로 정의할 때, 같은 순위의 연산자는 없어야 합니다. 즉, + > - > * 또는 - > * > + 등과 같이 연산자 우선순위를 정의할 수 있으나 +,* > - 또는 * > +,-처럼 2개 이상의 ..

[Programmers]Python_호텔 방 배정

문제 문제 설명 "스노우타운"에서 호텔을 운영하고 있는 "스카피"는 호텔에 투숙하려는 고객들에게 방을 배정하려 합니다. 호텔에는 방이 총 k개 있으며, 각각의 방은 1번부터 k번까지 번호로 구분하고 있습니다. 처음에는 모든 방이 비어 있으며 "스카피"는 다음과 같은 규칙에 따라 고객에게 방을 배정하려고 합니다. 한 번에 한 명씩 신청한 순서대로 방을 배정합니다. 고객은 투숙하기 원하는 방 번호를 제출합니다. 고객이 원하는 방이 비어 있다면 즉시 배정합니다. 고객이 원하는 방이 이미 배정되어 있으면 원하는 방보다 번호가 크면서 비어있는 방 중 가장 번호가 작은 방을 배정합니다. 예를 들어, 방이 총 10개이고, 고객들이 원하는 방 번호가 순서대로 [1, 3, 4, 1, 3, 1] 일 경우 다음과 같이 방을..

웹과 네트워크의 기본

브라우저 주소 입력란에 URL을 입력하면 웹 페이지를 볼 수 있다. 그렇다면 어떻게 웹 페이지가 보일까? 간단하게 설명하면 URL을 입력하면 어딘가에 송신되고 그 어딘가에서 응답이 돌아오면 웹페이지가 표시된다고 말할 수 있다. 웹 브라우저는 지정된 URL에 의지해서 웹 서버로부터 '리소스(Resouce)'라고 불리는 파일 등의 정보를 얻는다. 이때, 서버에 요청을 하는 웹 브라우저 등을 클라이언트(Client)라고 부른다. 이렇게 클라이언트에서 서버까지 일련의 흐름을 결정하고 있는 것은 웹에서 HTTP(Hyper Text Protocol)이라는 프로토콜이다. 여기서 프로토콜은 "약속"이라고 이해하면 된다. 즉, 웹은 HTTP라는 약속을 사용한 통신으로 이루어져 있다. HTTP의 등장 배경 HTTP는 "여..

Network 2021.04.25

[Programmers]Python_순위 검색

문제 문제 설명 카카오는 하반기 경력 개발자 공개채용을 진행 중에 있으며 현재 지원서 접수와 코딩테스트가 종료되었습니다. 이번 채용에서 지원자는 지원서 작성 시 아래와 같이 4가지 항목을 반드시 선택하도록 하였습니다. 코딩테스트 참여 개발언어 항목에 cpp, java, python 중 하나를 선택해야 합니다. 지원 직군 항목에 backend와 frontend 중 하나를 선택해야 합니다. 지원 경력구분 항목에 junior와 senior 중 하나를 선택해야 합니다. 선호하는 소울푸드로 chicken과 pizza 중 하나를 선택해야 합니다. 인재영입팀에 근무하고 있는 니니즈는 코딩테스트 결과를 분석하여 채용에 참여한 개발팀들에 제공하기 위해 지원자들의 지원 조건을 선택하면 해당 조건에 맞는 지원자가 몇 명인 ..

[Programmers]Python_괄호 변환

문제 문제 설명 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. 용어의 정의 '(' 와 ')' 로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')' 의 개수가 같다면 이를 균형잡힌 괄호 문자열이라고 부릅니다. 그리고 여기에 '('와 ')'의 괄호..

728x90