CS

· CS
IP란IP(Internet Protocol)은 데이터를 전달하는 방법을 정의하는 프로토콜입니다. 데이터를 보내고 받는 주소를 할당하고 데이터를 목적지까지 전달하기 위해서 사용됩니다.IP 주소는 네트워크 상에서 각 기기를 식별하는 고유한 숫자 조합입니다. TCP란TCP(Transmission Control Protocol)은 데이터를 안전하고 순서대로 전달하기 위한 프로토콜입니다. 데이터의 분할과 재조립, 오류 검출 및 수정, 흐름 제어 등의 기능을 제공합니다.TCP/IP 모델TCP/IP는 인터넷에서 쓰이는 프로토콜의 모임으로 The Internet Protocol Suite라고도 불립니다. HTTP/TCP/IP 등의 프로토콜들이 TCP/IP 모델에 속합니다. TCP/IP 모델은 인터넷과 대부분의 네트워크..
· CS
OSI 7 계층OSI 7 계층은 네트워크 통신의 구조를 7개의 계층으로 나누어 설명하는 개념적 모델입니다. ISO(International Organization of Standardization, 국제 표준 기구)에서 제정한 표준으로 컴퓨터 네트워크의 복잡한 통신 과정을 총 7가지 계층으로 나누어 각 계층의 역할을 명확히 하고 네트워크 프로토콜을 설계하고 분석하는 데 사용됩니다. OSI 7 계층 표준이 만들어지기 전에는, 서로 다른 네트워크 통신 절차를 사용하는 회사의 장비 간에는 통신이 원활하지 않았습니다. 이를 해결하기 위해 ISO가 개입하여 등장했습니다.OSI 7 계층 구성OSI 7 계층은 컴퓨터 간의 통신을 위한 전기적 신호 변환을 담당하는 Physical Layer부터, 사용자와의 직접적인 상..
· CS
BSD 소켓BSD 소켓은 기본적으로 네트워크 프로그램을 작성 시에 사용되는 인터페이스이며, 주목적은 네트워크 상에서 서로 다른 컴퓨터에 간에 데이터를 주고받을 수 있도록 해주는 일종의 소프트웨어 도구입니다. 👆🤓BSD 소켓에서의 BSD는 Berkeley Software Distribution의 약자로 Unix 운영 체제의 한 버전에서 비롯되었습니다. BSD 소켓은 줄여서 그냥 소켓(Socket)이라고도 부릅니다! 우리가 흔히 말하는 웹소켓 통신, 소켓 통신 모두 이 BSD 소켓을 말하는 것이죠! 이 소켓을 통해서 TCP/IP 통신이 가능하게 됩니다.  통신을 위한 소켓의 다양한 기능(listen, bind, accept, recv 등)을 제공하는 것을 BSD 소켓 API라고 합니다. 이 소켓 API는..
· CS
C언어의 컴파일 과정먼저 C언어의 컴파일 과정은 아래와 같습니다. 1. C언어로 작성된 소스코드를 전처리(Preprocessing) 과정을 거칩니다.- 전처리 과정에서 #define으로 정의된 매크로를 실제 값으로 치환하고, #include에 따라 파일을 소스코드에 포함하고, 주석을 제거하는 등의 작업이 진행됩니다. 2. 전처리 과정을 거친 소스코드를 컴파일러를 통해 어셈블리어로 변환(Compilation)합니다.- 소스 코드를 구문 분석하고 구문 트리를 생성합니다.- 구문 트리를 바탕으로 중간 코드를 생성하고, 중간 코드 최적화 진행 후 어셈블리어로 변환합니다. 3. 어셈블러가 어셈블리어를 기계어 코드(목적 파일)로 변환(Assemble)합니다.- 어셈블리어 명령어를 해석하여 기계어 명령어(인스트럭션)..
· CS
가상화란가상화란 하드웨어, 소프트웨어를 시뮬레이팅 하는 과정입니다. 가상화의 대상은 저장소, 네트워크, 서버, 애플리케이션이 될 수 있습니다. 설명 한 줄로는 이해가 잘 안 되니 좀 더 자세히 가상화의 개념에 대해 알아봅시다. 기존의 전통적인 비즈니스/서비스 운영 방법은 하나의 기계 혹은 컴퓨터에 하나의 애플리케이션을 운영하는 방법이었습니다. 예를 들어 이메일 서비스는 윈도우 기반의 서버 컴퓨터에서 운영하고, 데이터베이스 서비스는 유닉스 기반의 서버 컴퓨터에서 운영하고, 웹 사이트 운영은 리눅스 기반의 서버 컴퓨터에서 운영하는 식이죠. 하나의 물리적인 서버로 앞서 설명한 세 가지 서비스를 모두 운영할 수 있도록 하는 방법이 바로 가상화입니다. 아래의 그림과 같이 가상화를 통해 각 세 가지 서비스를 소프트..
· CS
포인터포인터란 C언어에서 메모리 주소를 가리킬 때 사용되는 사용되는 변수입니다. 일반적으로 C언어에서 사용되지만, 많은 언어가 C언어에서 파생/발전되었기 때문에 메모리 주소를 다루는 대부분의 언어가 사용하는 개념이라고 이해하시면 편할 것 같습니다.  🔴포인터를 직접 사용/활용할 수 있는 언어: C, C++, 파스칼, 어셈블리어 등 하위 레벨까지 제어할 수 있는 언어🔵포인터가 숨겨져서 직접 사용할 수 없는 언어: 자바, 파이썬, 자바스크립트, C#, 코틀린 등 📝포인터를 잘못 사용할 경우 메모리 누수, 버퍼 오버플로우 등의 문제들이 발생할 수 있습니다. 따라서 자바와 같은 언어에서는 GC(가비지 컬렉션) 등의 자동 메모리 관리 기법을 사용하여 메모리 해제와 할당을 프로그래머가 하는 것이 아닌, 시스템..
pseudocoder_
'CS' 카테고리의 글 목록