본문 바로가기

분류 전체보기

(71)
네트워크 통신 - TCP, UDP, ARP, 서브넷, 게이트웨이 4계층에서 동작하는 프로토콜의 목적은 여러 애플리케이션 프로세스 중 통신해야 할 목적지 프로세스를 정확히 찾아가고 패킷 순서가 바뀌지 않도록 잘 조합해 원래 데이터를 잘 만들어내기 위한 역할을 한다. 4계층 프로토콜 (TCP, UDP) 와 서비스 포트 애플리케이션에서 사용하는 프로세스를 정확히 찾아가고데이터를 분할한 패킷을 잘 쪼개 보내고 조립하기 위해 TCP 프로토콜에서는 시퀀스 번호와 ACK 번호를 사용 TCP/IP 프로토콜 스택에서 4계층의 상위 프로토콜 지시자는 포트 번호는 출발지와 목적지를 구분해 처리해야한다. 웰 노운 포트 : HTTP TCP 80, HTTPS TCP 443, SMTP TCP 25 다양한 애플리케이션에 포트 번호를 할당하기 위해 Registered Port 범위인 1024 ~ ..
[Python] 알고리즘 복잡도 : 시간 복잡도 시간 복잡도 : 알고리즘 실행 속도 공간 복잡도 : 알고리즘이 사용하는 메모리 사이즈
[Python] LinkedList 구현하기 링크드 리스트(Linked List), 연결 리스트 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 노드(Node) : 데이터 저장 단위 (데이터값, 포인터)로 구성 포인터(Pointer) : 각 노드 안에서 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 class Node: def __init__(self, data, next=None): self.data = data self.next = next def add(data): node = head while node.next: node = node.next node.next = Node(data) # Node와 Node 연결하기 (포인터 활용) node1 = Node(1) node2 = Node(2) node1.next =..
[Python] Stack 구현하기 Stack stack은 LIFO(Last In, First Out) 또는 FILO(First In, Last Out) 데이터 관리 방식 컴퓨터 내부의 프로세스 구조의 함수 동작 방식이다. push() : 데이터를 스택에 넣기 pop() : 데이터를 스택에서 꺼내기 장점 구조가 단순하고 구현이 쉽다. 데이터 저장/읽기 속도가 빠르다. 단점 데이터 최대 개수를 미리 정해야한다. (파이썬의 경우 최대 1000번까지만 호출 가능) 저장 공간의 낭비 발생 미리 최대 개수만큼 저장 공간을 확보해야되기 때문 파이썬에서는 리스트로 스택을 구현함. data_stack = list() # append 메소드 사용 data_stack.append(1) data_stack.append(2) data_stack.append(3..
네트워크 통신 - IP주소 체계, 서브넷, 공인 IP, 사설 IP 3계층에서 논리 주소인 IP주소 사용한다. IPv4 주소를 표기할 때, 4개의 옥텟(Octet)이라고 부르는 8비트 단위로 나누고 각 옥텟은 "."으로 구분 네트워크 주소와 호스트 주소 두 부분으로 나뉜다. 네트워크 주소 호스트들을 모은 네트워크를 지칭하는 주소. 네트워크 주소가 동일한 네트워크를 로컬 네트워크라고 함. 호스트 주소 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소 IP 주소 체계는 필요한 호스트 IP 개수에 따라 네트워크 크기를 다르게 할당할 수 있는 클래스(Class) 개념 도입 클래스 개념은 다른 고정된 네트워크 주소 체계와 달리 주소를 절약할 수 있음 A 클래스 네트워크 주소를 표현하는 1개의 옥텟, 호스트 주소를 나타낼 수 있는 3개의 옥텟 2^8 (256) 개의 네트워..
네트워크 통신 - 통신, MAC 주소 출발지에서 목적지로 데이터를 전송할 때 사용하는 통신 방식 유니캐스트 1:1 통신 출발지와 목적지가 1:1로 통신 실제로 사용하는 대부분의 통신은 유니캐스트 방식 사용 브로드캐스트 1:모든 통신 동일 네트워크에 존재하는 모든 호스트가 목적지 목적지 주소가 모든으로 표기되어있는 통신 방식으로, 유니캐스트로 통신하기 전 주로 상대방의 정확한 위치를 알기 위해 사용 로컬 네트워크 내에세 모든 호스트에 패킷을 전달해야 할 때 사용 멀티캐스트 1:그룹(멀티캐스트 구독 호스트) 통신 하나의 출발지에서 다수의 특정 목적지로 데이터 전송 그룹에 속한 다수의 호스트로 패킷 전송 ex) IPTV와 같은 실시간 방송, 사내 방송, 증권 시세 전송 등 단방향으로 다수에게 동시에 같은 내용 전달 애니캐스트 1:1 통신(목적지는..
네트워크 연결과 구성 요소 LAN(Local Area Network) : 사용자 내부 네트워크 MAN(Metro Area Netrowk) : 한 도지 성도를 연결하고 관리하는 네트워크 WAN(Wide Area Network) : 멀리 떨어진 LAN을 연결해주는 네트워크 1. LAN 먼 거리를 통신할 필요가 없어 스위치와 같이 비교적 간단한 장비로 연결된 네트워크 대부분 이더넷 기반 전송 기술 사용 2. WAN 멀리 떨어진 LAN을 서로 연결하거나 인터넷에 접속하기 위한 네트워크 대부분 통신 사업자(KT, LG U+, SKB)로부터 회선을 임대해서 사용 자신이 소유한 땅이나 건물이 아닌 곳일 지나 원격지로 통신해야 할 때 사용하며, 사용 계약에 따른 비용 부과 1. 인터넷 회선 일반 가정에서 인터넷에 연결하기 위해 사용하는 위해서는..
[python] 큐(Queue) 라이브러리 사용하기 - Queue, LifoQueue, PriorityQueue Queue queue 의 기본인 FIFO(First In First Out) Queue는 멀티 태스킹을 위한 프로세스 스케줄링 방식을 구현하기 위해 많이 사용된다 (운영체제) Enqueue : 큐에 데이터를 넣는 기능 Dequeue : 큐에서 데이터를 꺼내는 기능 queue 라이브러리에는 Queue(), LifoQueue(), PriorityQueue() 를 제공한다. Queue() : 일반적인 큐 자료구조 LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조 (like stack) PriorityQueue() : 우선순위 큐 -> 데이터마다 우선순위를 넣어서, 우선수위가 높은 순으로 데이터 출력 1. Queue() 사용하기 import queue data_queue = queue.Queu..