분류 전체보기
[Network] 네트워크 계층 : DHCP(Dynaminc Host Config Protocol)
DHCP(Dynaminc Host Config Protocol) 호스트의 주소를 자동으로 설정해주는 프로토콜이다. 2-30년전 컴퓨터를 사용할 때는 직접 컴퓨터의 IP 주소를 설정하고 여러가지 세팅을 해야만 인터넷에 접속할 수 있었다. 그런데 요즘 컴퓨터들은 전원만 꽂으면 사용할 수 있는데 이것이 DHCP 라는 프로토콜 덕분이다. DHCP의 목적은 호스트가 자신의 IP주소를 네트워크에 있는 서버로부터 자동으로 얻는 것이다. 장점주소의 재사용이 가능하다 예를 들어 한 학과에 300명의 학생이 있다고 하자. 이 학생들이 학교에서 컴퓨터를 사용하기 위해서 인터넷에 접속하고 싶다면 300대의 컴퓨터 모두 IP주소가 할당되어야 할 것이다. 결국 300개의 IP주소가 필요하다는 것이다. 하지만 300명이 동..
[Nginx] Nginx HTTPS 및 cerbot SSL 인증서 적용
certbot 컨테이너를 사용해 SSL 인증서 발급받기 백엔드의 비즈니스 로직을 마무리했다면 내 기준 가장 중요하다고 생각하는 배포 단계가 남아있다. 클라우드에 WAS 서버를 올리고, Nginx를 연결해 80번 포트로 통신하게 둔다면 편하게 웹사이트 hyeo-noo.tistory.com 위 포스팅을 따라서 인증서를 발급받고 난 후 Nginx.conf 파일을 어떻게 설정해 주면 되는지에 대한 글이다. Nginx 파일 worker_processes auto; events{ worker_connections 1024; use epoll; } http { upstream quant { server quant_home:8000; } client_max_body_size 100M; server{ listen 443..
AWS Lightsail 외부 도메인 연결하기 - 후이즈
프로젝트를 배포하면서 팀원들과 도메인을 정하게 되었다. 다양한 사이트를 돌아다니면서 원하는 도메인을 찾아본 결과... quant.or.kr 이라는 그럴듯한 도메인을 건지게 되었다. '후이즈'라는 곳에서 1년 도메인을 구매했다. 하지만 내 서버는 AWS이기 때문에 둘을 연동시켜 줘야한다. 이제 어떻게 해야 quant.or.kr을 브라우저에 입력했을 때 올바른 ip주소를 호출할 수 있는지 알아보자. 후이즈 DNS 네임서버 변경하기 로그인을 하고, 위 그림에 보이는 등록정보/네임서버 변경 탭에 들어간다 등록정보/네임서버 변경 탭에 들어와서 자신의 도메인을 체크하고 네임서버 변경 탭에 들어간다. 그리고 변경 네임서버 정보 블럭에서 '사용할 네임서버 직접 입력' 을 체크하고 아래 네임서버를 입력해야한다. 하지만 ..
[Docker] certbot 컨테이너를 사용해 SSL 인증서 발급받기
백엔드의 비즈니스 로직을 마무리했다면 내 기준 가장 중요하다고 생각하는 배포 단계가 남아있다. 클라우드에 WAS 서버를 올리고, Nginx를 연결해 80번 포트로 통신하게 둔다면 편하게 웹사이트를 구동할 수 있다. 하지만 http로만 통신할 수 있는 웹 사이트는 어딘가 불안정해 보인다. 기본적인 암호화가 제공되지 않기 때문에 로그인을 할 때마다 비밀번호 노출에 대한 위험을 항상 감수해야 할 것이다. 따라서 앞으로 배포할 모든 서비스에 대해서 나는 SSL + HTTPS로 배포할 것이다. SSL 인증서를 발급받기 위해서 무료로 인증서를 발급해주는 기관인 'Let's Encrypt'가 공식적으로 지원하는 certbot을 사용할 것이다. Certbot의 도메인 인증 절차 인증서를 발급받기 전에 certbot이 ..
[Network] 가상 근거리 네트워크(VLAN)
VLAN(Virtual Local Area Network)는 하나의 물리적 근거리 네트워크 구조에서 여러 개의 가상 근거리 네트워크들을 정의할 수 있게 한다. 특정 VLAN에 속한 호스트들은 마치 하나의 물리 스위치에 자신들만 서로 연결된 것으로 인식한다. 포트 기반 VLAN에서는 네트워크 관리자가 스위치 포트를 그룹으로 나눈다. 각 그룹은 하나의 VLAN을 구성하며, 한 VLAN의 포트들은 하나의 브로드캐스트 도메인을 형성한다. 위 그림은 16개의 포트를 가진 단일 스위치이다. 포트 2~8은 전기공학과(이하 EE)에 속하고, 포트 9~15는 컴퓨터과학과(이하 CS)에 속한다. 이렇게 학과 마다 각기 다른 네트워크를 구축함으로서 트래픽을 효율적으로 처리할 수 있게 되었다. 그런데 이들은 사실상 하나의 스..
[Network] 링크 계층 스위치
1장에서 가장 먼저 공부했던 접속 네트워크에 속하며 라우터와 어떻게 다른지 감을 잡기 어려웠던 링크 계층 스위치가 드디어 나왔다. 스위치는 투명하다. 이 말은 호스트/라우터는 목적지로 보내는 도중에 자신의 프레임이 스위치에 도착하는걸 알지 못한다는 뜻이다. 스위치의 동작 방식 - 플러그 앤 플레이 1. 전달 및 여과 여과 : 프레임을 인터페이스로 전달할지 또는 폐기(drop)할지 결정함 전달 : 프레임이 전송될 인터페이스를 결정하고 프레임을 해당 인터페이스로 내보냄 스위치의 여과와 전달은 스위치 테이블을 이용한다. 스위치 테이블에는 랜상의 일부 호스트와 라우터에 대한 엔트리가 포함되어있다. 스위치 테이블의 엔트리에는 1) MAC주소, 2) MAC 주소로 가게 하는 스위치 어댑터, 3) 해당 엔트리가 테이..
[Network] 이더넷(Ethernet)
이더넷이란? 이더넷은 전세계에서 가장 널리 쓰이는 네트워크 통신 규격이다. 우리 컴퓨터에 탑재되어있는 네트워크 인터페이스는 대부분 이더넷 규격을 사용한다. 링크계층에서 전송하게되는 링크 계층 프레임 중 하나로 볼 수 있다. 하지만 대부분의 네트워크 규격이 이더넷이므로 링크 계층 프레임 == 이더넷 프레임 이라 생각해도 될 것같다. 이더넷 프레임의 구조 이더넷 프레임은 링크 계층 프레임이므로 네트워크 계층의 데이터그램을 캡슐화 한다. 일반적으로 네트워크 계층에서 IP 프로토콜을 주로 쓰기 때문에 이더넷 프레임이 IP 데이터그램을 캡슐화 한다고 이해하면 된다. 데이터 필드(46~1500 비트) IP 데이터그램을 운반하는 필드이다. 이더넷의 최대 전송단위(MTU, maximum transfer unit)는 1..
[Network] 링크 계층 주소체계와 ARP
링크 계층 주소란(MAC 주소) 호스트나 라우터가 직접 가지고 있지 않고, 호스트나 라우터의 인터페이스(어댑터)가 가지고 있다. 링크 계층 주소는 가장 널리 알려진 용어진 MAC 주소라고 생각하면 된다. (링크 계층 주소 == MAC 주소) MAC 주소는 길이가 6바이트이며 따라서 2^48개의 주소가 존재한다. 흥미로운 점은 세상의 어떤 어댑터도 동일한 값을 갖지 않는다는 점이다. 다양한 나라에서 제조되는 어댑터들이 모두 다른 값을 가질 수 있는 이유는 IEEE(Institute of Electrical and Electronics Engineers)가 MAC 주소 공간을 관리하기 때문이다. 어떤 회사에서 어댑터를 제조하려면 2^24개의 주소로 이루어진 주소 영역을 구매해야 한다. IEEE에서는 MAC주..
[백준 1826] 연료 채우기 (C++)
1826번: 연료 채우기 첫째 줄에 주유소의 개수 N(1 ≤ N ≤ 10,000)가 주어지고 두 번째 줄부터 N+1번째 줄 까지 주유소의 정보가 주어진다. 주유소의 정보는 두개의 정수 a,b로 이루어 져 있는데 a(1 ≤ a ≤ 1,000,000)는 성경 www.acmicpc.net 처음에 DP 문제인줄 알고 DP로 접근을 시도했었다. dp[현재 이동한 거리][현재 가지고 있는 연료 양] 을 두면 top down DP를 통해서 쉽게 구할 수 있을거라고 생각했었다. 근데 L이 최대 100만이고 연료 양도 최대 100*10000 라서 DP 배열 자체를 할당할 수가 없었다. N과 L이 너무 커서 이건 무조건 그리디라고 생각했고 실제로 그리디로 풀수가 있었다. 1. 현재 연료를 모두 소진할 때까지 쭉 달린다. ..
[백준 1854] K번째 최단경로 찾기 (C++)
1854번: K번째 최단경로 찾기 첫째 줄에 n, m, k가 주어진다. (1 ≤ n ≤ 1000, 0 ≤ m ≤ 2000000, 1 ≤ k ≤ 100) n과 m은 각각 김 조교가 여행을 고려하고 있는 도시들의 개수와, 도시 간에 존재하는 도로의 수이다. 이어지는 m개의 줄에 www.acmicpc.net 다익스트라 알고리즘을 큰 변형없이 그냥 사용하면 되는 문제이다. 다익스트라 알고리즘에서는 현재까지 구한 시간보다 다음 정점까지 가는데 걸리는 시간이 더 긴 경우에만 다음 정점을 탐색하고, 걸리는 시간을 갱신한다. 따라서 이 조건을 빼는 경우에는 N 정점에 도달하는 경우는 무수히 많아지게 될 것이다. 다익스트라에서는 다음 정점으로 가는 시간이 가장 적은 간선부터 탐색하기 때문에 이를 응용하면, 특정 정점에 ..