초기 네트워크는 로컬 네트워크(LAN)을 고려해 설계되어 간단했으나, 기술의 발달로 먼 거리에 있는 다른 LAN 간의 통신이 중요해졌다.같은 네트워크 내에서의 통신과 달리, 원격지 네트워크 간의 통신은 게이트웨이라고 하는 장비를 써야 하며, 3계층 장비(라우터, L3 스위치)가 이 역할을 할 수 있다.서브넷과 게이트웨이의 용도로컬 네트워크 내에서는 ARP 브로드캐스트를 이용해 통신할 수 있지만,브로드캐스트는 네트워크를 넘어 전달되지 못함따라서 원격 네트워크에서는 장비의 도움이 필요하며, 이 장비를 게이트웨이(Gateway)라 한다. 게이트웨이에 대한 정보를 PC나 네트워크 장비에 설정하는 항목이 기본 게이트웨이(Default Gateway) 이다. 기본 게이트웨이는 3계층 장비가 수행하며 여러 네트워크와..
1. ARP(Address Resolution Protocol)ARP(Address Resolution Protocol) : 상대방의 MAC 주소를 알아내기 위해 사용되는 프로토콜간단하게 말하면 IP주소로 MAC 주소를 알아내는 건데, 따라서 ARP에 대해 이해하려면 IP 주소와 MAC 주소에 대한 개념, 즉 2, 3 계층에 대한 개념이 있어야 한다.참고하면 좋은 글 : OSI 7계층 - 2계층, 3계층 [네트워크] OSI 7계층과 TCP/IP참고 ⌜IT 엔지니어를 위한 네트워크 입문⌟ 길벗, 2023 [1장] 네트워크 시작하기 | 1.3 OSI 7계층과 TCP/IP, 1.4 OSI 7계층별 이해하기 (p.25~35) *책을 참고해 필요한 내용을 정리한 것이므로, 책의 내용과chaeyami.tistory..
보기 전 참고 : OSI 7계층 - 4계층 : 전송 계층 (Transport Layer) [네트워크] OSI 7계층과 TCP/IP참고 ⌜IT 엔지니어를 위한 네트워크 입문⌟ 길벗, 2023 [1장] 네트워크 시작하기 | 1.3 OSI 7계층과 TCP/IP, 1.4 OSI 7계층별 이해하기 (p.25~35) *책을 참고해 필요한 내용을 정리한 것이므로, 책의 내용과chaeyami.tistory.com 앞에서 배웠던 2, 3계층은 목적지를 정확히 찾아가기 위한 주소 제공이 목적이었지만, 4계층에서 동작하는 프로토콜은 만들어진 목적이 조금 다르다.목적지 단말 안에서 동작하는 여러 애플리케이선 프로세스 중 통신해야 할 목적지 프로세스를 정확히 찾아가고 패킷 순서가 바뀌지 않도록 잘 조합해 원래 데이터를 만들어내..
2계층(데이터 링크 계층) : 물리 주소(MAC 주소) 사용3계층(네트워크 계층) : 논리 주소(IP 주소) 사용1. MAC 주소 (물리 주소)OSI 7계층에 대해 다룰 때, 2계층(데이터 링크 계층)에서 사용하는 것이 MAC 주소라고 배웠었다.참고 : OSI 7계층 - 데이터 링크 계층MAC : Media Access Control장비(네트워크 인터페이스)에 할당된 고유 식별자 → 고유하지 않을 경우 충돌하기 때문에 IEEE에서 관리 중2계층에서 통신(데이터를 주고 받을 때)에 사용한다.물리적인 연결 상에서만 유효, 다른 네트워크로 데이터 전송시에는 논리주소(IP) 사용48비트 16진수 12자리OUI : IEEE가 제조사에 할당하는 부분IEEE : MAC 주소의 제조사 코드를 할당하고 관리하는 기구장비..
LAN, WAN? 네트워크는 규모와 관리 범위에 따라 LAN, MAN, WAN 세 가지로 구분된다. 예전에는 LAN, MAN, WAN 에서 사용하는 기술이 모두 달라 사용하는 프로토콜이나 전송 기술에 다라 쉽게 구분할 수 있었습니다. 현재는 대부분의 기술이 이더넷으로 통합되면서 사용자가 전송 기술을 구분하는 것은 무의미해져 관리 범위 기준으로 LAN, MAN, WAN 을 구분합니다. LAN(Local Area Network) 근거리 통신망 사용자 내부 네트워크 한 건물 또는 작은 지역 커버 MAN(Metro Area Network) 한 도시 정도를 연결하고 관리하는 네트워크 WAN(Wide Area Network) 광역 네트워크 멀리 떨어진 LAN 을 연결해주는 네트워크 광대역 네트워크. LAN에 비해 ..
OSI 7계층과 TCP/IPOSI 7계층 : 사용자에게 전달되기까지 데이터의 흐름을 역할별로 나누어 단계화함. 층마다 흐르는 데이터의 형태가 변한다.현대 네트워크 프로토콜이 대부분 실제로 TCP/IP 규약을 따름에 따라서, OSI 7계층은 실제보단 개념적이고 형상화된 모형이라고 이해하면 됨.TCP/IP : 현대 네트워크 대부분을 이루고 있는 프로토콜 스택. 대부분 TCP/IP와 이더넷으로 이루어져 있는데, 이론보다는 실용성에 중점을 둔 프로토콜.TCP 와 IP는 별도 계층에서 동작하는 프로토콜이지만, 함께 사용하고 있어 프로토콜 묶음 → TCP/IP 프로토콜 스택이라고 부른다.4계층으로 구분한다.* 1계층 → Layer 1 → L1 이라고 부릅니다. 편하게 쓰기 위해 이 글에서도 자주 사용할 예정이니 헷..
BFS 개념 Breadth First Search 노드를 방문하고 너비 우선으로 인접한 노드를 방문한다. 인접한 노드 중 방문하지 않은 모든 노드들을 저장 후 가장 처음에 넣은 노드를 꺼내서 탐색 가장 처음에 넣은 노드 -> 큐(Queue) 이용하는 것이 적합 1. 루트 노드를 큐에 저장 2. 현재 큐의 노드를 빼서 visited 에 추가 (방문처리) 3. 현재 방문한 노드와 인접한 노드 중 방문하지 않은 노드를 큐에 추가 4. 2부터 반복. 5. 큐가 비면 탐색 종료 BFS 구현 조금 더 확실히 하기 위해 각 노드에 붙은 숫자를 섞어보았다. 위와 같이 DFS인 척 하는 그래프가 있다고 해보자. 우리는 이 그래프를 BFS로 탐색하려고 한다. 그러면 탐색 순서는 이러한 형태가 되어야 할 것이다. 이를 딕셔..
DFS & BFS? 자료의 검색, 트리나 그래프를 탐색하는 방법. 한 노드를 시작으로 인접한 다른 노드를 재귀적으로 탐색해가고 끝까지 탐색하면 다시 위로 와서 다음을 탐색하여 검색한다. 한 노드를 시작으로 인접한 모든 정점들을 우선 방문하는 방법. 더 이상 방문하지 않은 정점이 없을 때까지 방문하지 않은 모든 정점들에 대해서도 넓이 우선 검색을 적용한다. 왜 DFS & BFS 를 배울까요? 정렬된 데이터를 이분 탐색하는 것처럼 아주 효율적인 방법이 있는 반면에, 모든 경우의 수를 전부 탐색해야 하는 경우도 있습니다. DFS 와 BFS 는 그 탐색하는 순서에서 차이가 있습니다. DFS 는 끝까지 파고드는 것이고, BFS 는 갈라진 모든 경우의 수를 탐색해보고 오는 것이 차이점입니다. DFS 끝까지 파고드는..
그래프란? 큐 (Queue), 스택 (Stack) -> 선형 구조 : 데이터들을 순차적으로 나열 자료를 저장하고 꺼내는 것에 초점 트리 (Tree) -> 비선형 구조 : 데이터가 계층, 망으로 구성 표현에 초점 그래프 : 연결 관계에 초점 노드(Node): 연결 관계를 가진 각 데이터, 정점(Vertex) 간선(Edge): 노드 간의 관계를 표시한 선 인접 노드(Adjacent Node): 간선으로 직접 연결된 노드(또는 정점) 유방향 그래프 (Directed Graph) 방향이 있는 간선 간선은 단방향 관계를 나타내며, 각 간선은 한 방향으로만 진행 가능 무방향 그래프 (Undirected Graph) 방향이 없는 간선 그래프의 표현 방법 인접 행렬(Adjacency Matrix): 2차원 배열로 그래..
최대 힙 - 삽입 힙이란? 힙? 힙은 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리 (Tree)(Complete Binary Tree) 최대/최소의 값들이 필요한 연산에 사용 Max 힙 : 최댓값이 맨 위 Min 힙 : 최솟값이 맨 위 8 Level 0 6 3 Level 1 2 1 Level 2 # -> 이진 트리 O 완전 이진 트리 X 이므로 힙이 아님 8 Level 0 6 3 Level 1 # -> 이진 트리 O 완전 이진 트리 O 4 2 1 Level 2 # 모든 부모 노드의 값이 자식 노드보다 크므로 힙O 8 Level 0 6 3 Level 1 # -> 이진 트리 O 완전 이진 트리 O 4 2 5 Level 2 # 모든 부모 노드의 값이자식 노드보다 크지 않으므로 힙이 아님..
트리란? 큐 (Queue), 스택 (Stack) -> 선형 구조 : 데이터들을 순차적으로 나열 / 자료를 저장하고 꺼내는 것에 초점 트리 (Tree) -> 비선형 구조 : 데이터가 계층, 망으로 구성 / 표현에 초점 트리 용어 Node: 트리에서 데이터를 저장하는 기본 요소 Root Node: 트리 맨 위에 있는 노드 Level: 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노드의 깊이를 나타냄 Parent Node: 어떤 노드의 상위 레벨에 연결된 노드 Child Node: 어떤 노드의 하위 레벨에 연결된 노드 Leaf Node(Terminal Node): Child Node가 하나도 없는 노드 (제일 끝) Sibling: 동일한 Parent Node를 가진 노드 Depth:..
해시테이블이란? 해시테이블이란 해시함수를 이용해 키를 값에 매핑하는 자료구조 구현 충돌 아무리 좋은 해시 함수라도 충돌을 피하기는 어렵다. 예측 가능한 범위 내에서 해시값이 나오고, 데이터와 짝지어지는 것이기 때문에 해시값이 중복될 수 있다. 👉 입력값이 달라도 똑같은 결과가 나오면 충돌 이를 다루는 방식은 체이닝(Chaining), 오픈 어드레싱(Open Addressing) 이 있다. 오픈 어드레싱은 탐사를 통해 ‘빈 공간을 찾아나서는’ 방식 체이닝은 충돌 발생 시 ‘연결’해가는 것 오픈 어드레싱 O(1) 체이닝 O(n) 오픈 어드레싱은 값이 뭉치는 클러스터링 이 발생할 수 있고, 체이닝은 메모리 오버헤드와 길어질 경우 탐색이 느려진다는 단점 C++, Java, Go는 체이닝을 택하고 Python, ..
스택(Stack)스택(Stack)이란?후입선출의 원칙을 따르는 자료구조로 차곡차곡 쌓아올리는(Stack) 것삽입과 삭제시에 O(1), 탐색에는 O(n)의 시간 복잡도사용 예브라우저의 뒤로가기실행 취소 (Ctrl + z)재귀 함수역순 문자열 (문자열 거꾸로 뒤집기)구현# structures.py'''연결리스트를 응용해서, 대신 제일 앞이 아니라 제일 위여야 하므로 가장 처음 걸 top으로 한다.O↓O↓O↓O↓O형태가 된다.'''class Node: def __init__(self, val = 0, next = None): self.val = val #상자 self.next = nextclass Stack: def __init__(self): self.top ..
배열(Array) 배열이란? 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 순서대로 저장하는 자료구조 데이터 조회에서 O(1)의 [[시간 복잡도]]를 가진다. 장점 연속된 메모리 공간을 사용하므로 처음 데이터의 주소를 알면 나머지도 쉽게 찾을 수 있다. 단점 크기가 고정되어 추가/삭제에 제약이 있다. 연결리스트 (Linked List) 연결리스트란? 각각의 데이터가 메모리 공간 상에 고유한 노드로 존재하며, 해당 노드에 앞과 뒤의 메모리 주소를 기억하고 있는 형태 즉, 노드들이 서로 연결되어 있는 구조 데이터 조회 시 순차적으로 탐색하기 때문에 O(N)의 시간 복잡도 데이터 추가와 삭제에는 O(1)의 시간 복잡도 Array vs Linked List 배열 (Array): 파이썬의 리스트. 접근 쉬움..
12. Django에서 테이블을 설계하고 DB에 반영하는 방법에 대해서 설명하시오. 1. models.py에서 models.Model을 상속한 클래스 생성 : 이 클래스가 데이터 테이블이 된다. 2. 필드 생성 3. 마이그레이션 파일 생성 : 모델이 새로 생성되거나 변경사항이 생길 때 사용 4. 마이그레이션 파일을 적용하는 migrate 명령어로 db에 반영 13. 회원가입을 할 때 비밀번호 저장을 암호화하는 이유는 무엇입니까? 비밀번호는 절대 유출되어서는 안 되는 정보이기 때문에 해킹, 정보유출 등의 위험을 방지하기 위해 복호화 할 수 없는 해시값으로 암호화해 저장함 14. JWT는 무엇입니까? JSON Web Token의 줄임말 - 유저를 인증하고 식별하기 위한 Token기반의 인증 JSON데이터를 ..