본문 바로가기

CS연구소👨‍💻

(22)
[네트워크] TCP, UDP 프로토콜 들어가며지난번에 IP 관련 공부를 했다. 그럼 당연히 이제 전송 계층 공부를 할 차례 잠깐 들어가기전에 지난번 IP 패킷의 정보를 담고있는 IP헤더의 구조와 크기를 정리해봤다전송 계층 공부전송계층을 공부하게되면 누구나 TCP, UDP라는걸 배우게된다. 일단 둘은 판이하게 다르고 실제로 응용프로그램 계층의 프로토콜들도 UDP냐 TCP냐에 따라서 목적과 용도가 다르다는걸 알 수 있었다. 사실상 우리가 인터넷 계층에서 사용하는 프로토콜은 IP가 대부분이라는걸 생각하면 ( 실제로 UDP와 TCP도 둘다 IP프로토콜을 사용한다고한다) 둘의 차이점이나 구성을 명확히 파악해야 할 것 같다.일단 책에서 배운것을 기반으로 둘의 차이를 생각해보면TCP연결성이다데이터들의 도착순서가 보장된다.가상회선 방식을 사용한다위의 이유..
[네트워크] IP프로토콜 분석 들어가며네트워크 CS에는 신기한 녀석이 살고있다. 바로 계층구조OSI 7단계와 TCP/IP 4계층이라고도 하는 녀석들이다 얘네는 실제 프로젝트에서 경험할 일이 없는 녀석이다 보니 외워도 까먹고 외워도 까먹고 항상 그렇다. 그 멍청한 연쇄를 끊고자 실제 실습을 겸해서 네트워크 공부를 하려고한다.개념TCP/IP 계층과 OSI 7계층은 같은 개념이고 그중에서 ip 프로토콜은 인터넷 계층의 프로토콜의 일종이다. 그냥 추상적으로 프로토콜을 공부하기는 힘들어서 C++의 ip 프로토콜을 직접 담당하는 라이브러리를 읽으면서 분석해보자 ip 모듈의 분해struct ip {#ifdef _IP_VHL u_char ip_vhl; /* version > 2 */#else#if BYTE_ORD..
[OS] 멀티프로세스, 멀티스레딩 멀티스레드는 무엇인가?사실 멀티스레드는 컴퓨터 CPU가 한개의 프로세스에서 여러개의 작업을 동시에 하게 해주는 프로그래밍 언어의 기능이다.우리의 현재 컴퓨터들이 여러개의 코어를 지니고 있기 때문에 효율적이고 빠른 코드를 만들려면 멀티스레딩, 멀티 프로세싱에 대한 이해는 반드시 필요해보인다.그래서 나도 이번에 한번 공부해보자라는 생각을 하게됐다.멀티 프로세스와 멀티 스레딩의 차이멀티 스레드와 가장 헷갈리는 단어는 멀티 프로세슨데 CS적인 측면에서 둘은 이렇게 다르다.프로세스는 스레드보다 큰 단위다.프로세스는 프로그램 파일이 있을 때 실행하게 되면 메모리 위에 생성되는 프로그램의 인스턴스라고 할 수 있다.그리고 스레드는 프로세스에서 실행되는 어떤 코드의 흐름이다 한 프로세스는 적어도 한 개 이상의 스레드로 ..
[C++] 람다 함수 들어가며람다 함수는 익명함수이다. 한마디로 함수에 이름이 없이 필요한 자리에서 정의되는 함수라고 볼 수 있다.람다 함수 하면 우리 들은 보통 쓸일이 많지는 않다. 일반적으로 재사용성 높은 코드를 짜는게 좋다고 배우기 때문에 남용해서는 안좋다고 한다.그런데 이제 알고리즘 문제들을 풀다보면 sort를 할 때나 완전 그 떄 한번만 사용하면 되는 조건의 경우에 이 람다식을 사용한다고한다. 그런데 람다식은 생긴게 좀 특이해서 쓸 때마다 까먹는 일이 종종있다. 그래서 이참에 정리하기로 했다.C++ 람다 구조[capture-list](parameters) -> return_type { // function body};일단 람다함수는 이런 구조로 되어있다 설명을 전부 떼고 보면[](){};대, 소, 중괄호가 모두..
[C++] Code Splitting, Forward Declaration : #ifndef, #endif 가 뭘까? 들어가며C++을 처음시작했거나 공부하는 사람들은 으레 알고리즘부터 시작하게 된다. 사실 알고리즘 만큼 프로그래밍 언어 공부하기 좋은 것도 없긴하다 하지만 이제 배운 언어로 응용프로그램을 만들고 싶다거나하면 이런 코드를 읽게된다.#ifndef _H264_VIDEO_STREAM_DISCRETE_FRAMER_HH#define _H264_VIDEO_STREAM_DISCRETE_FRAMER_HH#ifndef _H264_OR_5_VIDEO_STREAM_DISCRETE_FRAMER_HH#include "H264or5VideoStreamDiscreteFramer.hh"#endifclass H264VideoStreamDiscreteFramer: public H264or5VideoStreamDiscreteFramer {p..
[AWS] 책 AWS 구조와 서비스 읽기 : Chapter 3 - 1 지난번 2장에서 이어지는 내용으로 3장에서는 AWS의 서버들을 다룬다 서버하면 일반적으로 EC2를 떠올리게되는데 해당 책에선 그것 뿐만 아니라 Lambda같은 다른 서버들의 이야기도 나온다. 일단 나는 이 책을 EC2와 나머지 챕터로 나눠서 이번에는 EC2의 내용을 다뤄보고자한다.EC2를 이해하기 위한 서버 기초지식서버는 컴퓨터다.서버라는건 듣기엔 굉장히 어려워보이지만 사실 요청을 처리할 자원이있는 컴퓨터 이상 이하도 아니다. 책에 나온 말을 그대로 인용하면 네트워크에서 데이터나 서비스를 제공하는 컴퓨터를 서버, 그 서비스를 이용하는 프로그램을 클라이언트라고 한다. 웹 사이트와 웹 브라우저가 대표적인 예다. 웹 사이트 서비스를 제공하는 컴퓨터가 서버고 웹 브라우저가 클라이언트다. 그리고 서버도 대단한 분..
[AWS] 책 AWS 구조와 서비스 읽기 : Chapter 2 들어가며AWS 클라우드는 서비스를 일반 대중한테 보여줄 수 있다는 점에서 개발자의 꽃이라고 생각한다. 개발자는 어쨌든 자신의 서비스를 남들에게 인정받아야하니까그런데 문제는 AWS가 처음하는 사람한테는 좀 보기 까다롭게 되어있다는것이다, 그리고 서버 배포는 돈이랑 관련되어있고 몇백 몇천만원이 결제되었다는 괴담도 많이 들리기 때문에 초심자들은 생각보다 더욱 AWS를 쓰는데 소극적일 수 밖에 없다. 그러다보니 나를 포함한 많은 사람들이 AWS에서 제공하는 많은 서비스를 활용해보려한다기보단 정말 필요한 EC2, S3 정도만 빠르게 해보고 건들이지 않는 것 같았다.그래서 이번에는 AWS의 구조를 다룬다는 이 책을 읽어보고 요약하면서 AWS를 이해하고 또 같은 문제점을 안고있는 사람들에게 도움이 되고자한다. 최대한..
[C++] 메모리 구조 왜 메모리구조 얘길하나메모리 구조는 코딩 시작한 사람들이면 대부분 한 번씩은 보고 넘어가게된다. 힙메모리, 스택메모리 같은 것들은 반드시 들어봤을 것이다. 그런데 이게 막 배우기 시작한 입장에서는 감이 잘잡히지 않는 개념들이다. 일단 코딩과 직접적으로 연관되어있지않고, 언어와 OS가 섞인 개념이라고 해야하기 때문에 그렇다.하지만 그렇다고 메모리 구조를 공부하지 않을 수는 없다. 메모리 모델은 언어에 대한 심도있는 이해에 반드시 필요하기 때문에, 그런 의미에서 이번에 이해못했던 개념들을 한번에 설명하는 시간을 갖기로 했다.종류일단 C++을 기준으로는 메모리 구조가 다음과 같다.이외 고려해야할 메모리들, 캐시 메모리, 가상 메모리꽤나 많은 종류가 존재한다. 각파트의 정의는 다음처럼 설명할 수 있다.코드 세그..