프로그래밍/리눅스 프로그래밍 51

[VIM] 1. VIM 을 이용한 코드 정리 정규 표현식

하도 까먹어서 적어둠... 1. , 뒤 공백 추가 1,$s/ ,/,/g 1,$s/,/, /g 2. 라인끝 공백 제거 %s/\s\+$//e 3. tab을 공백 2개로 변경 1,%s/\t/ /g 4. 들여쓰기 맞추기 1,$s/) {/){/g 1,$s/){/) {/g 5. 주석 간격 변경1,$s/\; \//\; \//g 6. 함수 공백 제거 1,$s/( /(/g 1,$s/ )/)/g 1,$s/ (/(/g 7. if 문뒤 공백 추가 1,$s/if (/if(/g 1,$s/if(/if (/g 1,$s/for(/for (/g 1,$s/ ;/;/g 8. else 맞추기 1,$s/} else{/}else{/g 1,$s/}else {/}else{/g 1,$s/}else{/} else {/g 9. 여러 정규표 현식 입력 방..

[byteordering] big endian vs little endian

[byteordering] big endian vs little endian 1. Byte Ordering이란? - 데이터를 메모리 어떠한 순서로 저장 할 지를 정의한 것이다. - 입력 데이터 : 12345678 1) Big Endian - 숫자 데이터(12345678)를 기준으로 설명 하면 자리수 단위가 높은 단위에서 작은 자리수 단위 방향으로 메모리에 순차적으로 저장한다. 2) Little Endian - 숫자 데이터(12345678)를 기준으로 설명 하면 자리수 단위가 낮은 단위에서 높은 자리수 단위 방향으로 저장한다. 2. Byte Ordering을 알아야 하는 이유?? - network 상의 데이터 전송 순서와 host(시스템을 칭한다)상의 데이터 저장 순서가 다르기 때문이다. - 이렇기 때문에..

[OPENSSL-1.0.2] SSL 연결 코드 구현

[OPENSSL-1.0.2] SSL 연결 코드 구현 1. SSL 연결 개요. - 일반 TCP 연결을 암호화로 감싸는 것이다. 2. SSL연결 내부 연결 성립 절차 1) TCP handshake(TCP 통신을 연결하는 과정을 진행) - TCP 3-way hand shake 진행 2) SSL handshake(SSL 통신을 연결하는 관정을 진행) - 클라이언트는 암호 목록 및 임의 값을 보냅니다. - 서버가 암호를 선택합니다. - 서버는 공개 키와 임의이 값과 함께 인증서를 보냅니다. - 클라이언트는 서버 인증서를 확인하고 클라이언트 개인 키로 암호화 된 개인 키 - 서버는 개인 키를 수락하고 자신의 개인 키를 보냅니다. 3. OpeSSL Server 코딩 1) OpenSSL 초기화 (1) 모든 알고리즘 불..

[OPENSSL-1.0.2] 코드로 알아보는 SSL 통신이해

[OPENSSL-1.0.2] 코드로 알아보는 SSL/TLS 통신이해 1. SSL 통신을 위해 필요한 구조체 1) SSL_CTX(SSL Context)(전역 구조체) (1) Global context 구조체 (2) SSL_CTX는 SSL 응용프로그램당 1개면 충분합니다. (3) SSL 구조체들에 대한 기본값을 저장하며, 연결을 위해 만들어집니다. (4) 연결과 세션에 대한 기본 정보를 갖고 있습니다. - SSL 연결 개수, 재협상, 세션 재개 (5) ssl.h 에 정의 되어 있습니다. - 버전별 정의 - OpenSSL_1_0_2 - 선언 - ssl/ssl.h : typedef struct ssl_st SSL; - OpenSSL_1_1_1-stable cadb6f0e32 - 선언 - include/opens..

[프로세스간 통신] IPC(inter process communication) 종류

[프로세스간 통신] IPC(inter process communication) 종류 (Linux) IPC의 종류 1) PIPE 2) Named PIPE 3) Message Queue 4) Shared Memory 5) Memory Map 6) socket IPC 별 사용 시기 및 특징 IPC 종류 PIPE Named PIPE Mesage Queue Shared Memory Memory Map Socket 사용 시기 부모 자식 간 단 방향 통신 시 다른 프로세스와 단 방향 통신 시 다른 프로세스와 단 방향 통신 시 다른 프로세스와 양 방향 통신 시 다른 프로세스와 양 방향 통신 시 다른 시스템간 양 방향 통신 시 공유 매개체 파일 파일 메모리 메모리 파일+메모리 소켓 통신 단위 Stream Stream 구..

[Segfault] Core가 없을때 dmesg로 죽은 원일 분석 하기

[Segfault] Core가 없을때 dmesg로 죽은 원일 분석 하기 1. dmesg 정보로 정보 수집 - 코어가 남지 않았을 경우 모든 Core로그는 dmesg에 남는다. - 수행 명령어#dmesg - 추출 가능 정본는 다음과 같다. 항목 정보 값 1 프로그램 명 segfault_test 이고 pid 는 959 이다. 2 죽은 원인 segmentfault가 발생하여 죽음 3 죽을 때 참조한 주소 잘못된 참조 주소 0 ( 0은 NULL 값을 참조 했음을 의미 한다) 4 죽었을때 실행된 명령어 주소 죽었을 당시 실행된 명령어 0x400541 5 죽었을때 스택 주소 죽었을 당시의 스택 주소 6 에러 코드 에러 코드 7 offset 정보 Offset 정보 2. dmesg의 정보를 활용하여 어떤 명령어를 수행..

[Makefile] Linux Makefile이란??

Makefile이란? 1. Makefile의 정의 - linux상에서 반복 적으로 발생하는 컴파일을 쉽게하기위해서 사용하는 make 프로그램의 설정 파일이다. - Makefile을 통하여 library 및 컴파일 환경을 관리 할수 있다. 2. Makefile의 기본 구조 - 파일명 : Makefile - 기본 구조는 다음과 같이 매크로 정의, 룰 , 명령어로 되어있다. 3. Makefile의 매크로 정의란 무엇인가? - Makefile에서 미리 정의 되어있는 환경 변수라고 생각하면된다. - 2. 기본 구조에서 CC = gcc 에서 CC가 매크로이다. 4. Makefile에서의 매크로의 종류 - makefile에서 미리 정의된 매크로 확인 방법 #make -p - 주요 매크로 설명 매크로 명 용도 DEFS..

[Segfault] 기초 편 : Linux의 Segmentation Fault(Segfault) 분석 방법

[Segfault] 기초 편 : Linux의 Segmentation Fault(Segfault) 분석 방법 1. Segmentation Fault(이하:Segfault) 정의 - 프로그램이 동작 중 잘못된 주소를 참조할 때 발생하는 오류이다. 2. 대표적인 Segmentation Fault(Segfault) 발생 조건 1) 읽기 전용 메모리 영역에 데이터를 쓰려고 할 때 2) 운영 체제 메모리 영역 또는 보호된 메모리 데이터를 쓰려고 할 때 3) 잘못된 메모리 영역을 접근하려고 할 때 Ex) NULL, -1, 등등 3. Segfault가 발생시 발생하는 에러 메시지 - 화면상 내용(알 수 있는 정보가 없다) - Segmentation fault라고 뜬다. - demsg 상내용(알 수 있는 정보가 좀 더 ..