이전 글에 언급했듯 네트워크 계층은 SDN이 도입됨에 따라 Data Plane, Control Plane 두가지 계층으로 나뉘었습니다. 패킷은 SDN에 의해 remote controller에서 전체 라우팅을 결정하고 결정된 라우팅에 맞는 포워딩 테이블이 각 라우터에 뿌려짐으로써 포워딩이 결정됩니다. 여기서 포워딩을 관리하는 계층이 Data Plane, 라우팅을 관리하는 계층이 바로 Control Plane입니다. 그럼 이번에는 네트워크 계층의 control plane에 대해 살펴봅시다! 목차 라우팅 프로토콜 Link State 다익스트라(Dijkstra) 알고리즘 Oscillations posiible Problem Distance Vector 벨만-포드(Bellman-Ford) 알고리즘 Count-to..
You'll Never Walk Alone.
전체 글
네트워크 계층은 어떤 일을 할까요? 바로 옆 노드 통신을 넘어서 최적의 길찾기 역할을 합니다. 메일을 보낼 때 최종 목적지 노드에 도달하려면 어떻게 가야하는지 네비게이션처럼 알려주는 것을 라우팅(Routing)이라고 하며, 이러한 라우팅을 해주는 계층이 바로 네트워크 계층입니다. 네트워크 계층이 없다면 우리는 바로 옆 노드에 있는 장치로만 메일 전달을 할 수 있을 것입니다. 그런데 네트워크 계층은 라우팅을 어떠한 원리로 할 수 있는 것일까요? 송신자, 수신자에서만 재설정되는 트랜스포트 계층(Transport Layer)과 달리 네트워크 계층은 모든 호스트(host), 라우터(router)에서 재설정됩니다. 라우터란 컴퓨터 네트워크 간에 패킷을 전송하는 네트워크 장치로, 패킷의 위치를 추출하여 그 위치에 ..
브레이킹 루틴 (천인우 지음) - 원하는 인생은 늘 안전지대 밖에 있다 이번에 소개할 책은 천인우님의 '브레이킹 루틴'입니다. 이 책을 단 한 문장으로 요약한다면 다음과 같아요. "변화 없는 삶을 깨뜨리기 위해 걱정과 두려움에서 벗어나 용기있는 도전을 하는 것" 이는 제가 평소 가장 중요시 여기는 '실패를 두려워하지 않는 용기' 덕목과 일치하기에 많은 공감을 하면서 책을 읽을 수 있었습니다. 이 뿐만 아니라 이 책은 '공부 습관', '시간 관리법', '취업·입학 준비 팁'을 저자의 경험을 토대로 소개합니다. 덕분에 저의 평소 시간 관리법에 대해 반성할 수 있었고, 취업 준비에 대한 마음가짐을 달리할 수 있었습니다. 또한 "열심히 공부하고 일해온 지난 노력은 결국 무엇을 위한 것인가?"라는 질문을 스스로에..
문제 코딩테스트 연습 - 가사 검색 programmers.co.kr 알고리즘 & 자료구조 트라이(Trie) 로직 const forwardRoot = new Map(); const backwardRoot = new Map(); 정방향, 역방향 트라이(trie) root를 생성합니다. 각 root는 문자열의 길이를 key, 트라이를 value로 하는 Map 객체입니다. root를 Map으로 표현하므로써 문자열의 길이로 트라이에 접근하여 더 효율적으로 문제를 해결할 수 있습니다. words.forEach((word) => { insertTrie(word, forwardRoot); insertTrie(word.reverse(), backwardRoot); }); 주어진 단어들을 트라이에 삽입합니다. insert..
최근 수행한 프로젝트의 클라이언트를 netlify를 통해 배포하는 과정에서 아래와 같은 에러가 발생했습니다.. 새로고침해보니.. 저희 팀이 구현한 캐싱 코드에서 에러가 발생했습니다. 아무리 봐도 코드 상으로는 문제가 없는데.. 그래서 개발자 도구의 로컬 스토리지를 확인하자..! undefined..? 로컬 스토리지를 비우고 다시 사이트에 접속해보았습니다. 역시 똑같은 에러! 이번엔 새로고침하지 않고 읽어보자, https 사이트에서 http를 통해 리소스를 요청하여 일어난 문제임을 알았습니다!! 암호화된 https에서 암호화되지 않은 http에 요청을 보냈기에 Mixed Content 에러가 발생한 것이었습니다. 이는 안전하지 않은 리소스가 누군가로 인한 변경이나 도청 등에 취약하기 때문에 위험하기 때문입..
안녕하세요 동쪽별입니다. 친구들과 알고리즘 스터디를 진행하면서 매주 다섯 문제씩 풀고 있는데요. 오늘부터 매주 해결한 문제 중 가장 어려웠던 문제 하나를 꼽아 리뷰하려 합니다 😁 (개인적으로 어려웠던 문제가 더 있다면 두개 이상 올릴거에요) 어려운 문제인 만큼 여러 사람들에게 도움을 줄 수 있겠다 싶었거든요. 더군다나 자바스크립트로 풀었기에..! 문제 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 로직 1. 주어진 lock의 홈 패턴을 구합니다. 여기서 패턴이란 하나의 홈에서 나머지 홈까지의 거리만을 구하여 저장해놓는 것을 의미합니다. lock을 순회하며 ..
안녕하세요 동쪽별입니다. 이번에는 정~말 중요한 HTTP를 들고 왔어요 😆 지난 포스트 웹 브라우저가 메시지를 만든다 글에서 HTTP에 대해 자세히 다루지 않았기에, 이번 글에서 알아보려해요. 목차 HTTP? HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3 HTTPS HTTP? HTTP(HyperText Transfer Protocol)은 웹 상에서 서버-클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜입니다. 주로 HTML 문서를 주고받는데 쓰입니다. TCP와 UDP를 사용하며, 80번 포트를 사용합니다. HTTP는 중요한 두가지 특징이 있습니다. 비연결(Connectionless) 클라이언트가 요청을 서버에 보내고, 서버가 적절한 응답을 클라이언트에 보내면 바로 연결이 끊깁니다. 무상..
"성공과 실패를 결정하는 1%의 네트워크 원리 - Tsutomu Tone" 책을 참조하여 작성한 글입니다. 미루고 미루었던 네트워크 공부를 시작했습니다. CS 지식이 부족하여 제대로 공부해보려 해요.. 목차 HTTP Request 메시지를 작성한다 웹 서버의 IP 주소를 DNS 서버에 조회한다 전 세계의 DNS 서버가 연대한다 HTTP Request 메시지를 작성한다 브라우저는 먼저 입력 받은 URL을 해독합니다. https://east-star.tistory.com/category/Tech/자바스크립트 위의 URL이 입력되면 아래와 같이 분해하는 작업을 수행합니다. http: + // + east-star.tistory.com + / + category + / + Tech + / + 자바스크립트 분해된..
안녕하세요. 동쪽별입니다. 지난 글에서 실행 컨텍스트에 대해 다루었으니, 이제 클로저를 살펴보아야겠죠? 이 글은 실행 컨텍스트에 대한 사전 지식이 있다는 가정하에 작성되었습니다. 그러니 실행 컨텍스트를 먼저 알아보고 오시면 좋겠습니다 😅 제 블로그에도 있어요! 목차 렉시컬 스코프 클로저와 렉시컬 환경 클로저의 활용 자주 발생하는 실수 클로저(closure)는 자바스크립트 고유 개념이 아닙니다. 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성입니다. 따라서 클로저의 정의가 ECMAScript 사양에 등장하지 않습니다. MDN에서는 아래와 같이 정의하고 있습니다. "클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다." 음.. 아직 무슨 의미인지 잘 와 닿지는 않네요. 차..
안녕하세요. 동쪽별입니다. 지난 글에 이어 실행 컨텍스트에 대해 마저 다루도록 하겠습니다. 이번 글을 작성하면서 저도 많이 헷갈리고 어려웠습니다.. 차근차근 알아봅시다 👊 목차 1. 실행 컨텍스트의 생성과 식별자 검색 과정 전역 객체 생성 전역 코드 평가 1) 전역 실행 컨텍스트 생성 2) 전역 렉시컬 환경 생성 2) - 1. 전역 환경 레코드 생성 - 객체 환경 레코드 생성 - 선언적 환경 레코드 생성 2) - 2. this 바인딩 2) - 3. 외부 렉시컬 환경에 대한 참조 결정 전역 코드 실행 함수 코드 평가 1) 함수 실행 컨텍스트 생성 2) 함수 렉시컬 환경 생성 2) - 1. 함수 환경 레코드 생성 2) - 2. this 바인딩 2) - 3. 외부 렉시컬 환경에 대한 참조 결정 함수 코드 실행..