data3 [Data Structure] Stack Stack이란 무엇인가 Stack 자료 구조란 LIFO(Last Input First Out) 마지막으로 들어온 데이터가 가장 먼저 나간다 들어올 때는 가장 위에 들어오고 나갈 때는 가장 위에 저장된 것이 나간다 Python을 사용해 구현해보도록 하자 class Stack: def __init__(self) -> None: self.items = [] def push(self, val): self.items.append(val) def pop(self): try: return self.items.pop() except IndexError: print("Stack empty") def top(self): try: return self.items[-1] except IndexError: print("Stac.. 2022. 10. 2. [Linux] 리눅스의 메모리 구조 (1) 리눅스의 메모리 구조 Linux의 메모리 구조에는 Code 세그먼트, Data 세그먼트, BSS 세그먼트, Heap 세그먼트, Stack 세그먼트 이렇게 5가지의 세그먼트가 있다. 각 세그먼트마다 읽기, 쓰기, 실행에 대한 권한이 부여되어 있어 취약점을 어느 정도 방지할 수 있다. Code 세그먼트 Text 세그먼트라고도 불리며, 프로그램에서 실행 가능한 코드가 Text 세그먼트에 위치하게 된다. 코드 세그먼트는 CPU가 코드를 읽고 실행할 수 있도록 읽기 권한과 실행 권한이 부여된다. 하지만 쓰기 권한은 부여되지 않는다 왜일까? 누군가가 악의 적으로 실행 흐름을 바꿀 수도 있기 때문에 쓰기 권한은 부여되지 않는다고 한다 Data 세그먼트 Data 세그먼트는 컴파일 할때 코드에서 초기화된 전역 변수또는 .. 2022. 9. 18. [Network]데이터 조각화 데이터 조각화란? 일단 데이터 조각화에 대해서 알아보기 전 MTU에 대해서 알 필요가 있다. MTU란? 네트워크에 연결된 장치가 받아들일 수 있는 최대 데이터 크기를 말한다 최대 MTU 크기는 1500 Btye 본론으로 넘어가서 데이터 조각화란 MTU에 설정한 최대 크기보다 큰 데이터가 들어왔을 때 데이터를 나눠 서 보낸다는 말이다 데이터 조각화 계산 방법 문제 : 크기가 4800인 데이터를 보내고 싶다. 그런데 MTU의 최대 크기가 1500 일 때 패킷이 몇 개로 나누어 보내지는가??? 일단 우리가 생각해야 할 것이 하나 있다 그것은 마지막에 나누어진 패킷에 각각 ipv4를 추가해줘야 한다 그래서 4800 % 1480(1500 - ipv4) = 총 4개가 나오며 마지막 패킷의 데이터 크기는 360이고 .. 2022. 8. 23. 이전 1 다음