Basics of Computer Science and Network 7

HTTP

HTTP는 HyperText Transfer Protocol의 줄임말로, HTML과 같은 문서를 전송하기 위한 Application Layer(TCP/IP 4계층의 4층)프로토콜이다. HTTP는 웹 브라우저와 웹 서버의 소통을 위해 디자인되었다. 전통적인 클라이언트-서버 모델에서 클라이언트가 HTTP messages 양식에 맞춰 요청을 보내면, 서버도 HTTP messages 양식에 맞춰 응답한다. HTTP는 stateless, 즉, 특정 상태를 유지하지 않는 특징이 있다. Stateless는 말 그대로 상태를 가지지 않는다는 뜻이다. HTTP로 클라이언트와 서버가 통신을 주고받는 과정에서, HTTP가 클라이언트나 서버의 상태를 확인하지 않는다. 사용자는 쇼핑몰에 로그인하거나 상품을 클릭해서 상세 화면으..

SSR과 CSR

SSR SSR(Server Side Rendering)은 Javascript 가 웹 페이지를 브라우저에서 렌더링하는 대신에, 서버에서 렌더링한다. 브라우저가 서버의 URI로 GET 요청을 보내면, 서버는 정해진 웹 페이지 파일을 브라우저로 전송한다. 그리고 서버의 웹 페이지가 브라우저에 도착하면 완전히 렌더링된다. 서버에서 웹 페이지를 브라우저로 보내기 전에, 서버에서 완전히 렌더링했기 때문에 Server Side Rendering 이라고 한다. 웹 페이지의 내용에 데이터베이스의 데이터가 필요한 경우, 서버는 데이터베이스의 데이터를 불러온 다음 웹 페이지를 완전히 렌더링 된 페이지로 변환한 후에 브라우저에 응답으로 보낸다. 웹 페이지를 살펴보던 사용자가, 브라우저의 다른 경로로 이동하면 서버는 이 작업을..

웹 애플리케이션

웹 애플리케이션은 아래와 같은 특징이 있다. 데스크탑 애플리케이션처럼 상호작용 가능하다. 특정 기능을 가지고 있다(정보 검색 등). 정보나 자료 등의 콘텐츠 관리 시스템과 함께 작동한다. 웹 개발 영역에서 website라고 하면 일반적으로 정적 페이지들의 집합체를 의미한다. 예를 들면 뉴스 사이트와 같이 고정된 정보를 제공하지만 사용자가 해당 사이트에 어떠한 것도 관여 하지 못하는 사이트이다. 웹사이트가 정적 페이지들 뿐 아니라 동적 페이지, 즉, 사용자와 상호작용을 포함하게 된다면 이미 web application 이 되게 된다. 예를 들면 메일, 인터넷 게시판, 블로그 SNS 등이 있다. 웹 애플리케이션은 인터넷에 공개되는 순간부터 글로벌 네트워크의 막대한 트래픽에 노출 될 수 있기 때문에 아래와 같..

DNS

DNS (Domain Name System) 도메인 네임 시스템을 간단하게 설명하자면 사람이 기억하기 쉬운 `www.naver.com`과 같은 도메인을 컴퓨터가 이해할 수 있는 ‘125.209.222.142`으로 변환하여 요청이 원하는 곳에 도달할 수 있도록 도와주는 시스템이다. 위의 그림에서 host부분이 도메인 주소에 속하며 도메인 주소는 오른쪽부터 왼쪽으로 최상위(탑 레벨) 도메인과 여러 개의 도메인으로 구성되어 있다. 탑 레벨 도메인은 .com, .kr, .net 등 도메인의 가장 오른쪽에 위치하는 도메인이다. kr, us와 같은 국가 코드를 사용하는 도메인은 co, ac와 같은 2단계 도메인과 함께 사용되기도 한다. 서브도메인은 일반적으로 `www, m`와 같은 제일 왼쪽에 위치한 도메인들이 해..

Network (TCP/IP 4계층)

TCP/IP 서로 멀리 떨어진 다른 기기들이 정보를 주고 받는데 쓰이는 통신규약 중에 하나이며 현재 가장 많이 사용되고 있는 인터넷 프로토콜이다. 크게 네트워크 접근 계층, 인터넷 계층, 전송 계층, 응용 계층, 이렇게 4계층으로 이루어저 있다. 계층 주요 프로토콜 역할 4층 응용 계층 HTTP, DNS, FTP 어플리케이션에 맞추어 통신 3층 전송 계층 TCP, UDP IP와 어플리케이션을 중개하며 데이터를 전달 2층 인터넷 계층 IP, ICMP, ARP, RARP 네트워크 주소를 기반으로 데이터를 전송 1층 네트워크 접근 계층 Ethernet, Wifi 컴퓨터를 물리적으로 네트워크에 연결 여기에 많은 프로토콜들이 등장하는데 모두 어떠한 것의 특별한 규약이지만 서로 다른 계층에 있는 프로토콜들은 전혀 ..

프로그래밍의 이해

프로그래밍 프로그래밍 언어를 사용하여 특정 목적을 달성하기 위한 알고리즘을 코드로 작성하는 과정이다. 프로그래밍 언어 컴퓨터가 사용하는 언어는 기계어이며 이 기계어와 사람의 언어를 매개해주는 언어가 프로그래밍 언어이며 기계어에 가까운 즉, 컴퓨터 친화적인 언어를 저수준 언어, Java와 같이 인간 친화적 언어를 고수준 언어라고 한다. 저수준의 언어는 컴퓨터가 직관적으로 이해할수 있도록 구체적이고 꼼꼼하게 작성해야 한다. 따라서 인간이 작성하기 어렵고 유지 보수가 불편하다는 단점이 있다. 반대로 고수준의 언어는 인간이 이해하기 쉽기 때문에 유지보수가 쉽다는 장점이 있다. 하지만 컴퓨터가 이해하는데 시간이 비교적 오래걸리고 고사양의 컴퓨터를 요구한다. 컴파일 프로그래밍 언어는 사람과 컴퓨터간의 소통을 매개할..

컴퓨터의 이해

컴퓨터란? 데이터를 외부(사람)에서 입력장치를 통해 입력받아 프로그램의 코드에 따라 정해진 규칙대로 CPU를 통해 연산을 수행하며 하드디스크, 램 등 여러 기억장치에 저장하며 출력장치를 통해 결과물을 출력하는 전자장치이다. 즉 컴퓨터는 내부에서 연산의 규칙을 정의한 프로그램(소프트웨어)와 기타 데이터를 읽고 저장하고 출력할수있는 물리적인 장치들(하드웨어)로 구성되어 있다. Software 소프트웨어란 물리적인 형태가 존재하지 않는 컴퓨터의 구성요소로 하드웨어가 어떻게 동작해야 하는지 규정해 놓은 명령어의 집합이며 시스템 소프트웨어와 응용 소프트웨어로 분류된다. 시스템 소프트웨어, System Software 응용소프트웨어를 실행하기위한 소프트웨어로 하드웨어와 직접적으로 소통하고 관리하며 대표적으로 Mac..