Computer Science

    [Network] TCP/UDP

    [Network] TCP/UDP

    이번 포스팅에서는 전송계층에서 사용하는 TCP와 UDP에 대해서 알아볼 것입니다. 목차는 다음과 같고 중간중간 '더보기'를 통해 필요한 개념 정리를 했습니다. 전송계층이 무엇이고 존재하지 않으면 어떤 문제가 있는지 알아봅니다. TCP와 TCP 서버의 특징, TCP 헤더의 구조 UDP와 UDP 서버의 특징, UDP 헤더의 구조 전송 계층(TransportLayer)은 무엇이고 왜 존재할까요? 전송 계층은 End Point 간 신뢰성있는 데이터 전송을 담당하는 계층입니다. 전송 계층을 이용함으로써, 포트 번호에 해당하는 프로세스에 데이터를 전달(전송)하는데 데이터를 순차적이고 안정적으로 전달(신뢰성)할 수 있습니다. 1. 데이터를 순차적으로 전송하는 것을 원활히 해줍니다. 만약 순차 전송이 원활히 되지 않으..

    CS정리 [네트워크]

    CS정리 [네트워크]

    Protocol 원거리의 서로 다른 기기 간의 데이터 교환을 원활히 하기 위해 표준화 시켜놓은 통신 규약입니다. 보통 TCP/IP 를 많이 사용하며, 대표적으로 IEEE, ISO 기관에서 프로토콜을 정의합니다. 통신을 제어하기 위해 표준 규칙과 절차의 집합으로, H/W, S/W, 문서를 모두 규정합니다. 기본 요소 구문(Syntax) : 전송하고자 하는 데이터 형식, 부호화, 신호 레벨 규정 의미(Semantics) : 두 기기 간 효율적이고 정확한 정보 전송을 위한 협조 사항, 오류 관리를 위한 제어 정보 규정 시간(Timing) : 두 기기 간 통신 속도, 메시지 순서 제어 규정 더보기 프로토콜 기능 단편화와 재결합 : 단편화 : 전송에 알맞은 크기로 데이터를 자르는 작업 재결합 : 수신 측에서 단편..

    멀티 프로세스와 멀티 스레드 (feat. 아파치와 톰캣)

    멀티 프로세스와 멀티 스레드 (feat. 아파치와 톰캣)

    관련 포스팅 프로세스(Process)와 스레드(Thread) Context Switching, IPC 등 개념은 위 포스팅에서 중간에 다뤘으므로 생략하겠습니다. 이번 글에서는 멀티 프로세스와 멀티 스레드에 대해 얘기해보려 합니다. 글의 순서는 다음과 같이 작성합니다. 1. 멀티 프로세스와 멀티 스레드 2. 멀티 스레드를 사용하는 이유 3. Interview: 아파치와 톰캣은 멀티 프로세스인가 멀티 스레드인가? 1. 멀티 프로세스와 멀티 스레드 참고) 위의 프로세스와 스레드에서 설명한 내용과 일부 겹치는 내용이 있을 수 있습니다. 💡💡 멀티 프로세스 멀티 프로세스는 하나의 프로그램을 여러 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 환경입니다. 프로세스는 운영체제로부터 CPU 시간, 주소공간,..

    🌼 Connection Pool

    🌼 Connection Pool

    👋 어쩌다 등장했나? 일반적인 데이터 연동과정은 웹 애플리케이션이 필요할 때마다 데이터베이스에 연결하여 작업하는 방식입니다. 더보기 일반적인 데이터베이스 연결 Life Cycle 아래 단계만 봐도 데이터베이스 연결은 상당한 비용이 소모되는 작업임을 알 수 있습니다. 데이터베이스 드라이버를 로드한 후 데이터베이스로의 연결 객체를 생성하여 open 데이터 조회/생성을 위해 TCP Socket open 소켓을 통해 데이터를 읽고 쓴다. 연결 close 소켓 close 아래 내용은 INSERT문을 수행하는 과정에서 필요한 비용의 비율을 나타냅니다. (MySQL 8.0 기준) : 참고 링크 Connecting: (3) Sending query to server: (2) Parsing query: (2) Inser..

    프로세스(Process)와 스레드(Thread)

    프로세스(Process)와 스레드(Thread)

    이번 글에서는 프로세스와 스레드에 대해, 그리고 차이점을 얘기하겠습니다. 추가로, 프로세스 구조에 대해 간단히 다룰 예정입니다. 프로세스와 스레드 프로세스와 스레드는 둘다 "단위" 개념입니다. 프로세스란 프로그램이 실행되면서 운영체제에 의해 필요한 주소 공간, 메모리 등의 시스템 자원을 할당받고, 여러 작업을 처리하게 되지요. 이때의 작업 단위가 입니다. 스레드는 한 프로세스 내에서 작업을 분산해서 효율적으로 처리하는 실행의 단위입니다. 결국, 프로세스 하나에서 자원을 공유하면서 일련의 과정을 수행하는 것입니다. (멀티 스레드 환경으로 구성되어야 효율성 향상을 경험할 수있습니다.) 좀더 구체적으로 이야기하면, 💡 프로세스 먼저 프로세스가 실행되기 위해서는 메모리 할당이 이루어지고, 할당된 메모리 공간으로..

    링킹 (Dynamic Linking vs Static Linking)

    링킹 (Dynamic Linking vs Static Linking)

    이번 글에서는 링킹에 대해 알아보겠습니다. 링킹의 의미 우선 자바 코드를 컴파일(바이트코드로 변환)한 오브젝트 파일을 실행을 시켜야하는데 오브젝트 파일만으로는 실행시킬 수 없습니다. 그래서 실행시키기위해서 해당 코드에서 필요로 하는 다른 프로그램 혹은 외부 라이브러리들을 가져와 연결하는 과정이 링킹입니다. (작성한 코드에서 사용한 외부 라이브러리를 알 수 없으면 당연히 정상적으로 실행될 수 없겠지요) 링킹 과정을 거치고 나면 .exe 실행파일이 만들어집니다. 이러한 링킹을 담당하는 프로그램이 링커입니다. 링킹의 종류 이제 링킹의 종류 2가지를 알아봅시다. 정적 링킹(Static Linking)과 동적 링킹(Dynamic Linking)이 있습니다. 정적 링킹 정적 링킹이란 실행 가능한 파일을 만들 때 프..