목록2-2/네트워크 보안 (16)
브래의 슬기로운 코딩 생활
SOCKADDR_IN 구조체 멤버 sin_family: 타입: short 주소 체계를 지정합니다. 대부분의 경우 AF_INET을 사용하며, IPv4 주소 체계를 나타냅니다. sin_port: 타입: unsigned short 포트 번호를 지정합니다. 네트워크 연결에서 어떤 프로세스와 통신할지를 식별하는 데 사용됩니다. sin_addr: 타입: struct in_addr IP 주소를 저장하는 구조체입니다. struct in_addr는 다시 s_addr이라는 unsigned long 형 멤버를 포함하고 있습니다. sin_zero: 타입: char[8] 구조체의 크기를 맞추기 위한 더미 데이터입니다. 현재는 주로 사용되지 않지만, 예전에는 구조체 크기를 맞추기 위해 필요했습니다. 주소변환 관련 함수 주소체계 ..
Multiplex 서버 - poll 기법 - Poll 기법 폴링 함수 함수: poll() • 등록된 파일 기술자(FD: File Descriptor)를 이용하여 이벤트를 감지 • 해당 기술자의 입/출력 상태를 모니터링하여 결과를 기록 • 인자: – *fds : 모니터링하고자 할 파일기술자를 갖는 구조체변수들 – nfds : 파일기술자의 개수(구조체 변수의 개수) – timeout : 모니터링 시간(밀리초) • 결과 값: – 성공 : 0 또는 그 이상(이벤트의 개수) – 실패 : -1 구조체: struct pollfd poll() 함수의 파일기술자 모니티링용 구조체 • 구조체 멤버: – fd : 모니터링할 파일기술자 – events : 모니터링할 이벤트 종류 – revents : 발생한(감지된) 이벤트 타..
Multiplex 서버 - select 기법 - 다중 접속 서버 멀티플렉싱(Multiplexing) 데이터를 처리하는데 있어서 하나의 프로세스가 동시에 여러 개의 동작을 수행 블록킹(blocking) 현상 방지 종류: • 시간 분할(TDM: Time Division Multiplexing) – 시간을 슬롯(slot)이라는 개념으로 분류 – 슬롯의 크기만큼 각 주어진 일을 처리 – 대표적 예: select, poll 기법 • 이벤트 분할(EDM: Event Division Multiplexing) – 외부의 신호를 인식하여 그 신호에 등록된 일을 처리 – 주로 입/출력 처리에 선호 – 대표적 예: 인터럽트 멀티플렉스 서버 Vs. 멀티프로세스 서버 멀티프로세스 방식 • 클라이언트의 개수에 따라 독립적인 프로..
소켓 및 TCP 프로그래밍 - TCP 서버 – 클라이언트 응용 - 프로세스 생성(복사) 프로세스 생성 함수: fork() • 실행중인 프로세스로부터 새로운 프로세스를 생성 • 자신과 동일한 프로세스를 자식 프로세스로 생성 • 호출된 위치에서부터 자식프로세스가 실행됨 • 결과 값: – 성공(부모) : 자식프로세스의 ID – 성공(자식) : 0 – 실패 : -1 스레드 기법 스레드 생성 및 종료 함수 : pthread_create() • 프로세스내 새로운 스레드를 생성하고 실행 • 인자: – *thread : 스레드 변수 – *attr : 스레드의 속성을 제어 – *start_routine : 스레드용 함수 – *arg : 스레드 함수에 전달할 변수 함수 : pthread_join() • 자식 스레드의 종료..
TCP 프로그래밍 소켓 생성 및 TCP 클라이언트용 APIs 통신 모델 서버/클라이언트 모델 Server : 서비스 제공자 Client : 서비스 요청자 방식에 따른 서버의 종류 복잡성(서버 vs 클라이언트) - 서버는 일반적으로 클라이언트의 요청에 맞는 서비스를 제공 - 다양한 클라이언트의 요청에 대한 응답을 처리해야 함 - 서버는 클라이언트대비 복잡한 제어와 구조를 가짐 네트워크 프로그래밍 - 원거리 프로세스간 상호 통신을 위한 기법 - 운영체제는 원거리 프로세스간 통신을 위해 소켓(socket)을 지원 네트워크 시험 네트워크 시험 툴 명령어: nc {-options} [hostname] [port] • NC: Net Cat • 네트워크 시험을 위한 도구 – 일반적으로 프로그램 검증 도구(debugg..
네트워크용 기본 API 주소체계 변환 문자열형 주소의 32비트 정수형 주소로 변환 함수: inet_addr() • Dotted-Decimal Notation을 Big-Endian의 32비트 정수형 데이터로 변환하는 함수 인자값 • *cp : 문자열 형태의 IP 주소 값(“xxx.xxx.xxx.xxx”, 길이 ≤ 15) 결과값 • 성공: 4바이트 정수(Big-Endian) • 실패: INADDR_NONE (0xFFFFFFFF) 함수: inet_network() • Dotted-Decimal Notation을 호스트 데이터 형태의 32비트 정수형 데이터로 변환하는 함수 • 네트워크 사용을 위해서는 htonl() 함수 호출이 필요 인자값 • *cp : 문자열 형태의 IP 주소 값(“xxx.xxx.xxx.xxx..
방금 홈페이지에 중간고사에 대한 힌트가 나와서 그것을 토대로 정리해 볼까 한다. 자료, 정보, 지식, 지능 등에 대한 이해 필요 정보전송 시스템을 구성하는 항목들에 대한 이해 필요 전송기술 중점 학습 망구성(토폴로지) 이해 필요 데이터전송 방식에 대한 이해 베이스밴드 전송을 위한 주어진 값들에 대하여 특히 NRZ, RZ, 맨체스터 중 하나의 방식으로 변환하는 것을 물어봄 CRC 연산 능력 확인 프로토콜 기본 OSI 계층모델 엔디언 관련 이해 필요 (세부 2문제: 변환 함수, 주어진 데이터에 대한 특정 엔디언에서의 표현 값 질의) 오류제어 방식 이해 필요 DSDV 라우팅 테이블 작성 Link State 라우팅 테이블 작성 IP 패킷 구조에서 특정 항목 질의 상동 TCP 세그먼트 구조에서 특정 항목 질의 상..
UNIX 기본 프로그래밍 - 시간처리 함수 - 초 단위 시간 정보 추출 초단위 현재 시간 추출 함수 : time() • 현재 시각을 1970/01/01 00:00:00 +0000(UTC)을 기준으로 초 단위 값 추출 • UNIX 타임으로 통용 • time_t는 4바이트(현재)의 정수형 타입(int, int32_t)의 매크로 • 2038/01/19 03:14:07에 오버플로(Overflow) 발생 인자: • *tloc : 시각정보가 저장될 변수(NULL이면 저장 안함) 결과 값: • 성공 : 현재 시간(초단위) • 실패 : -1 시간 표시 형식 변경 표시 형식 변경 함수 : localtime() • 주어진 초 단위 시각정보를 구조체 tm 타입 정보로 변환 • 정적 영역(static memory)을 사용하여..
계정 환경 설정 로그인 정보 명령: passwd • 현재 로그인한 계정의 비밀번호를 설정 기본 명령어들 - 경로 변경: cd [경로] - 파일 생성: touch [파일명] - 파일 복사: cp [원본] [대상] - 파일 삭제: rm [파일명] - 파일 이동: mv [원본] [대상] 파일 내용 보기 명령들 명령어: cat [파일명] - 지정한 파일의 내용을 화면에 출력 명령어: more [파일명] - 지정한 파일의 내용을 화면에 출력 - 화면 단위로 출력(페이지 넘김: 스페이스바키) 명령어: tail [-###] [파일명] - 지정한 파일에 대하여 뒤에서 ###(숫자)의 행만큼 출력 명령어: head [-###] [파일명] - 지정한 파일에 대하여 앞에서 ###(숫자)의 행만큼 출력 텍스트 파일 에디터 V..
TCP/IP 개요 - TCP/IP : Transmission Control Protocol / Internet Protocol - DoD(미국방성)에서 정의한 모델 • ARPANET 프로젝트의 결과물 - OSI 7 계층 모델과 유사 • OSI 보다 먼저 정의 • 현재 가장 많이 사용되고 있음 - 인터넷에서 사용되고 있으며 다양한 네트워크와 상호 접속이 가능 TCP/IP 계층 구조 TCP/IP 계층 구조 OSI 계층 모델에 대응되는 상호 통신을 위한 각 계층별 프로토콜을 정의 응용(Application)은 OSI 계층 모델에서 5계층 이상을 모두 포함 3 & 4 계층은 운영체제에서 처리 1 & 2 계층은 이더넷(Ethernet) 장치 및 디바이스 드라이버(device driver)에서 처리 • 2 계층의 ..