분류 전체보기 110

[네트워크 스터디] 8 네트워크의 전체 흐름 살펴보기 (컴퓨터->스위치->라우터->웹서버 간의 데이터 처리와 전달, 캡슐화, 역캡슐화, OSI 계층, 라우팅)

네트워크의 구성 위 네트워크를 OSI 모델로 나타내면 아래와 같다. 데이터 전달과 처리 (컴퓨터의 데이터 -> 스위치) 컴퓨터의 웹 브라우저에 URL을 입력할 때부터 웹 서버에 데이터가 도착할 때까지 각 과정에서는 캡슐화와 역캡슐화가 이루어진다. 1. (3-way handshake가 이루어져 연결이 확립된 상태라고 전제한다면) 사용자가 웹 브라우저에 URL을 입력하고, 엔터를 입력하면 응용 계층에서의 캡슐화가 이루어진다. 이때 응용 계층에 html 데이터를 보내달라는 요청을, HTTP 메세지에 담아 보낸다. 계속해서 이 데이터는 전송 계층에 전달된다. 전송 계층에서는 TCP 헤더가 필요한데, 출발지 포트 번호와 목적지 포트 번호가 이곳에 담긴다. (세그먼트가 된다) ❕ 출발지 포트 번호는 well-kno..

👩‍💻/Network 2020.10.30

[네트워크 스터디] 7 응용 계층 : 애플리케이션에 데이터 전송하기(웹 서버, DNS, 이름 해석 구조, 메일 송수신, SMTP, POP3, HTTP)

아래에서 이야기하는 응용 계층은 5계층의 세션 계층과 6개층의 표현 계층을 포함한다. 응용 계층은 애플리케이션과 데이터를 주고 받기 위해 필요한 계층으로 OSI 계층의 최상위 층이다. 응용 계층에서는 클라이언트의 요청을 전달하기 위해 통신 대상(서버 등)이 이해할 수 있는 메세지(데이터)로 변환하고, 전송 계층으로 전달하는 역할을 한다. 당연히, 응용 계층을 위한 응용 계층만의 프로토콜이 존재한다. 응용 계층 프로토콜을 이용하는 통신 흐름에서 클라이언트와 서버의 기본적인 정의를 우선 짚고 넘어가자. 클라이언트 : 서비스를 요청하는 측 (웹 브라우저, 메일 프로그램 등) 서버 : 서비스를 제공하는 측 (웹 서버, 메일 서버 프로그램 등). 또한 이러한 애플리케이션은 응용 계층에서 동작한다. OSI 모델의 ..

👩‍💻/Network 2020.10.27

HTTP/1과 HTTP/2의 비교 그리고 CSS 스프라이트(Sprite) 기법의 유효성

맨 처음 프론트엔드 공부를 시작할 때는 스프라이트 기법을 경험해보지 못했다가, 학원에서 웹 프로그래밍 미니 프로젝트를 진행할 때 처음 접하고 굉장히 신기했었다. background-image, background-position 프로퍼티를 매번 이용하며, 상당히 귀찮은 방법이라고 생각했는데, 나름 HTTP/1 프로토콜에서 리소스 요청을 덜 하기 위한 나름의 노력으로 탄생한 기법이었던 것이다. 우선 이 세 가지의 관계도를 보기 위해서는 HTTP/2와 HTTP/1의 차이점을 알아야 한다. HTTP는 웹 서비스에서 클라이언트와 웹 서버 간에 정보를 주고 받기 위해 사용되는 네트워크 프로토콜로, 여기에서도 새로운 기술이 기존의 기술을 보완하는 방향으로 발전하고 도입되는 것은 마찬가지다. HTTP/2 역시 HTT..

👩‍💻/CSS3 2020.10.27

[python] Google colab/Jupyter Lab에서 첫 프로젝트 열기

Google colab 생활 코딩 머신러닝 강의를 들을 때 이후로 두 번째로 사용한 colab. 정작 잘 사용할 일이 없어서, 지금 듣고 있는 실습에서 데이터를 다루게 될 일이 기대된다. google colab은 Colaboratory를 줄여서 부르는 말. 브라우저에서 python을 직접 작성하고, 실행할 수 있다. 구글에서는 Colab의 장점을 세 가지로 꼽는다. GPU Free Access Easy Sharing No Setup process 그래서 아나콘다를 굳이 설치할 필요성을 아직까지는 못 느끼고 있다! 코드 블럭 한 줄 한 줄에 코드를 쓰고, 바로 Alt+Enter 또는 Shift+Enter 또는 Ctrl+Enter로 실행해볼 수 있다. Ctrl+Enter : 해당 셀 실행 : [2] 행에서 ..

[Eclipse] A Java Runtime Environment(JRE) or Java Development Kit(JDK) must be available in order to run Eclipse

A Java Runtime Environment(JRE) or Java Development Kit(JDK) must be available in order to run Eclipse. No Java virtual machine was found after searching the following locations: C:\jdk\jdk 각자의 버전\bin\javaw.exe 최근에 자바 강의를 듣기 위해서 JDK 14 -> JDK 11로 바꿔서 설정을 해두었는데, 위처럼 오류 메세지가 나서 기존에 사용하던 이클립스가 열리지 않았다. 제일 먼저 환경 변수부터 바꾸어줬는데도 제대로 열리지 않길래, eclipse.ini 파일을 간단하게 바꿔주는 것으로 해결했다. eclipse.ini가 저장된 위치를 확인하고,..

👩‍💻/Java 2020.10.25

[네트워크 스터디] 6 전송 계층 : 신뢰할 수 있는 데이터 전송하기(연결형 통신, 비연결형 통신, TCP, UDP, 3-way handshake, 포트 번호, 브로드캐스트)

신뢰성, 정확성, 효율성으로 대표되는 전송 계층의 역할을 알아보자 전송 계층의 두 가지 역할 라우터의 라우팅 기능을 통해 다른 네트워크로 데이터를 전송하고자 할 때, 데이터가 항상 목적지에 손실이나 손상 없이 안전하게 도착하면 좋겠지만, 목적지가 제대로 설정되었다하더라도 라우터나 패킷의 문제로 문제가 생길 수 있다. 이전까지의 포스팅을 통해 물리 계층, 데이터 링크 계층, 네트워크 계층까지 살펴보면서 '목적지'로 데이터를 보내는 과정을 알아보았지만, 과연 이것이 안전한지, 신뢰할 만한 수준인지에 대해선 많이 짚지 못했다. 즉, 다시 말해 언급한 세 개의 계층에서는 데이터가 손상되거나 유실되어도 '책임을 지지지 않는다' 그래서 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 '전송 계층'이 존재한다. 전송..

👩‍💻/Network 2020.10.22

[Spring] 스프링 MVC와 MyBatis와 연동하기 1 (MVNRepository 사용 방법, Maven, POM 설정)

Spring 프레임워크에서의 MyBatis, Maven Spring 프레임워크 환경에서 MyBatis를 연동하고자 할 때는 Maven 저장소를 통해 의존성 관리를 손쉽게 할 수 있다. Maven 저장소는 빌드 툴로, 라이브러리 의존성 관리 툴로 활용이 더 많이 되고 있다. 스프링 프레임워크 사용 이전에는 필요한 라이브러리를 일일이 받아 /WEB-INF/lib 폴더와 WAS에 설치해 사용했다. 하지만, 시간이 지남에 따라 버전이 달라져 사용할 수 없는 라이브러리들이 발생할 위험이 있어 메이븐을 통해 보다 쉽게 관리하고자 한다. 🔍 MyBatis는 Java Persistance Framework(흔히 SQL 매핑 프레임워크로 분류한다)의 하나로, XML 서술자나 어노테이션을 사용해 저장 프로시저나 SQL문으..

👩‍💻/Java 2020.10.22

[Spring] 스프링 프레임워크 개요

개요 스프링 프레임워크는 Java 플랫폼을 위한 경량급 오픈 소스 어플리케이션 프레임워크이다. 스프링 프레임워크는 단지 웹앱을 만들기 위해서만 존재하지는 않지만, 동적인 웹 애플리케이션을 개발하기 위해 여러 가지 서비스를 제공한다. 한국의 경우, 공공 기관의 웹 서비스 개발 시 사용을 권장하는 전자정부 표준프레임워크의 기반 기술로 쓰이고 있다. 자바 개발을 위한 프레임워크인만큼 종속 객체를 생성하고, 조립해주는 툴이다. POJO Bean Container. 컨테이너라는 표현은, 스프링이 어플리케이션 객체의 생명 주기와 설정을 포함하고 관리한다는 점에서 나온 개념. 또한, myBatis나 Hibernate 같은 완성도 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다는 맥락도 존재한..

👩‍💻/Java 2020.10.21

[MySQL] MySQL Installer -> Type and Networking -> Port "The Specified port is already in use" 이슈 해결 방법

DB 이용해서 회원 관리 시스템 연습을 위해서 다시 MySQL 설치를 진행하는데, 예전에 MySQL 설치를 해둔 버전이 있어서 Port 설정 단계에서 "The specified port is already in use"라는 메세지를 띄웠다. 리소스 모니터에서 간단하게 해결할 수 있다. Window+R -> resmon.exe 실행 또는 윈도우 검색에 '리소스 모니터'라고 검색해도 된다. 네트워크 탭 -> 수신대기 포트 쓰고자 했던 포트 넘버가 3306이었으므로, 해당 파일의 PID를 확인한다. 명령 프롬포트(CMD) -> 관리자 권한으로 실행 / 또는 Window + R로 CMD 검색 taskkill /F /PID 6060 명령어 입력. 오타에 주의 😪 이제 3306을 Port number로 쓸 수 있다.

[네트워크 스터디] 5 네트워크 계층 : 목적지에 데이터 전달하기 (IP, 라우터, IP 주소, 서브넷, 라우팅)

네트워크 계층의 역할 수많은 네트워크는 네트워크 끼리의 연결로 거대한 하나의 인터넷이 되었다. 다른 네트워크에 있는 목적지로 데이터를 전송하고자 할 때는(네트워크 간 연결), OSI 계층 중 네트워크 계층에서 관여한다. 앞에서 살펴본 데이터 링크 계층에서는 이더넷 규칙을 기반으로 데이터 전송을 책임졌다. 그러나 데이터 링크 계층의 기술만으로는 수많은 네트워크가 연결된 환경에서 인터넷이나 다른 네트워크로는 데이터를 전송할 수 없다. 이때 다른 네트워크로 데이터를 전송하기 위해서 라우터(router)라는 네트워크 장비를 이용한다. 라우터는 데이터의 목적지가 정해지면, 해당 목적지까지 어떤 경로로 가는 것이 좋은지 알려주는 기능을 한다. 그러나 데이터를 전송하려는 목적지가 어디에 있는지 모른다면, 라우터도 당..

👩‍💻/Network 2020.10.17