분류 전체보기102 [CS Study] 네트워크 (2) - TCP와 UDP 시작하기 전에저번에 네트워크 계층을 살펴봤으니 TCP와 UDP로 넘어가 봅시다.TCP와 UDP는 전송 계층에서 사용하는 프로토콜이고, TCP는 신뢰성을 보장하는 방식임을 앞의 글에서 정리했습니다. TCP에 대해 조금 더 자세히 정리해봅시다.TCPTCP는 연결형 서비스를 지원하고 데이터의 신뢰성을 보장한다.다음과 같은 특징이 있다 (아래의 가상 회선 방식 정의를 참고하면서 특징들을 보면 모든 게 자연스럽다):송신부와 수신부의 연결을 확인하는 연결형 서비스다.패킷 교환 방식은 패킷이 전달되는 회선이 정해져 있는 가상 회선 방식이다.패킷의 전송 순서가 보장된다패킷의 수신 여부를 확인한다.송신부와 수신부는 1:1 통신을 한다.데이터 손실이 없음을 보장하므로 신뢰성이 높다.데이터의 송수신 속도가 느리다.추가로 패.. 2025. 5. 7. [CS Study] 네트워크 (1) - 네트워크 계층 시작하기 전에SKT 해킹 사건을 공부하다 보니 커널, 패킷, SSL이라는 생소한 개념이 등장했습니다.'패킷, SSL'부터 브랜치를 뻗어나가 봅시다.둘 다 네트워크 관련 내용이니 여기부터 출발해봅시다.네트워크네트워크에는 다양한 기기 간 통신을 위한 구조가 있다.네트워크 통신 과정을 개념적으로 나눈 OSI 7계층과 실제 인터넷 통신에 사용되는 TCP/IP 4계층부터 출발해보자.OSI(Open Systems Interconnection) 7계층컴퓨터 네트워크 통신 과정 7단계다.데이터 송신 시높은 계층에서 낮은 계층으로 전달각 계층에서 필요한 정보 담은 헤더나 트레일러 추가되는 데이터 캡슐화 진행데이터 수신 시낮은 계층에서 높은 계층으로 전달헤더와 트레일러를 분석하며 제거하는 데이터 역캡슐화 진행헤더는 데이터.. 2025. 5. 6. [CS Study] 운영체제 (1) - 프로세스 시작하기 전에SKT 해킹 사건을 공부하다 보니 커널, 패킷, SSL이라는 생소한 개념이 등장했습니다.'커널'부터 브랜치를 치다 보니 운영체제의 프로세스 파트를 다 정리했습니다.'커널'은 운영체제의 코어이므로 운영체제가 무엇인지부터 알아봅시다.운영체제란?운영체제(OS, Operating System)는 컴퓨터 하드웨어(CPU, 메모리)와 사용자 사이를 연결하는 시스템 소프트웨어다.컴퓨터 자원은 한정적이기 때문에 이를 효율적으로 관리하고 분배하는 역할을 한다.Windows, macOS, Linux 등이 대표적인 운영체제다.CPU, 메모리가 무엇인지 알아봅시다.컴퓨터 구성 요소가장 핵심적인 두 요소는 CPU와 메모리다.CPU는 '컴퓨터의 두뇌'로, 모든 연산을 실행하는 장치다.메모리는 컴퓨터에서 데이터를 저장.. 2025. 5. 6. [CS Study] SKT 유심 해킹 - 사건 정리 시작하기 전에코딩애플, 노말틱님 영상을 참고했고, 단순히 사건 정리에 그치지 않고 관련 개념들을 공부하는 데 목적이 있습니다.또한, 아직 SKT에서 공식적으로 발표한 내용이 아니기 때문에, 여기 정리된 내용들은 모두 현재까지의 추정에 기반한 것입니다.무엇이 해킹되었는가?HSS (Home Subscriber Server) 서버가 해킹되었다.HSS 서버란 무엇인가?LTE/5G 네트워크의 가입자 관리 데이터베이스이다.가입자 정보 관리, 네트워크 접속 및 서비스 인증을 담당한다. 쉽게 말하면,우리 휴대폰이 "나야, SKT 사용자야" 하고 신호를 보낼 때,그걸 확인하고 접속을 허락해주는 존재다.HSS 안에는 어떤 정보가 있는가?IMSI (International Mobile Subscriber Identity)전.. 2025. 5. 3. [LeetCode] 80. Remove Duplicates from Sorted Array II I. DescriptionII. Codeclass Solution: def removeDuplicates(self, nums: List[int]) -> int: result = [] tmp = None for num in nums: if tmp == None: result.append(num) dup_count = 1 else: if num != tmp: result.append(num) dup_count = 1 else: .. 2025. 3. 17. [LeetCode] 26. Remove Duplicates from Sorted Array I. DescriptionII. Codeclass Solution: def removeDuplicates(self, nums: List[int]) -> int: result = [] tmp = None for num in nums: if tmp == None: result.append(num) else: if num != tmp: result.append(num) tmp = num nums[:] = result return len(result)문제가 간단해서 코드만.. 2025. 3. 17. [LeetCode] 27. Remove Element I. DescriptionII. Codeclass Solution: def removeElement(self, nums: List[int], val: int) -> int: n = len(nums) result = [] for i in range(n): if nums[i] != val: result.append(nums[i]) len_result = len(result) for i in range(len_result): nums[i] = result[i] for i in range(len_result, n): .. 2025. 3. 17. [LeetCode] 88. Merge Sorted Array I. DescriptionII. Codeclass Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead. """ i = 0 j = 0 result = [] while i III. Explanation문제 해결 방법 설명이 문제에서는 두 개의 정렬된 배열 nums1과 nums2를 병합해야 합니다. 가장 단순한 접근 방식은 다음과 같습니다.nums1[:m] + nums2[:n]nums1.sort()하.. 2025. 3. 16. 이전 1 2 3 4 ··· 13 다음