728x90
반응형
SMALL

카테고리 72

[네트워크] DNS와 도메인, IP 주소 변환 함수

도메인 이름 ▶IP 주소처럼 호스트나 라우터의 고유한 식별자 ▶IP 주소보다 기억하고 사용하기 쉬움 ▶도메인 이름을 반드시 숫자 형태의 IP 주소로 변환해야 함 도메인 이름 ↔ IP 주소 변환 함수 도메인 이름 -> IP 주소 :gethostbyname IP 주소 -> 도메인 이름 : gethostbyaddr "192.108.0.3" -> char 형 hostent 구조체 1) hostent 구조체 IPv4를 사용하는 경우 2) hostent 구조체 IPv6를 사용하는 경우 도메인, IP 변환 사용자 정의 함수 DNS와 이름 변환 함수 실습 #include "../../Common.h" #define TESTNAME "www.sch.ac.kr" bool GetIPAddr(const char* name, ..

코딩/Network 2023.04.15

[네트워크] IP 주소 변환 함수

IP 주소 입력 ▶네트워크 프로그램에서 IP 주소를 입력받을 때는 명령행 인수를 사용하거나 운영체제가 제공하는 입력용 컨트롤을 이용 ▶이때 IP 주소를 32비트(IPv4) 또는 128비트(IPv6) 숫자로 변환해야 함 IP 주소 변환 함수 inet_pton [in] Family [in] pszAddrString 변환할 IP주소의 텍스트를 포함하는 문자열에 대한 포인터 [out] pAddrBuf IP 주소의 숫자 이진 표현을 저장할 버퍼에 대한 포인터 inet_ntop [in] pAddr 문자열로 변환할 네트워크 바이트의 IP 주소에 대한 포인터 [out] pStringBuf IP 주소의 NULL로 종료된 문자열 표현을 저장할 버퍼에 대한 포인터 [in] StringBufSize 입력 시 pStringBu..

코딩/Network 2023.04.14

[네트워크] 바이트 정렬 함수

바이트 정렬 ▶메모리에 데이터를 저장할 때 바이트의 배치 순서 - 빅 엔디언 (Big-endian) : 최상위 바이트 (MSB, Most Significant Byte)부터 차례로 저장 - 리틀 엔디언 (Little-endian) : 최하위 바이트 (LSB, Least Significant Byte)부터 차례로 저장 *시스템에서 사용하는 바이트 정렬은 CPU와 운영체제에 따라 다르므로 이기종 간의 데이터를 교환할 때는 고려 해야함 바이트 정렬 방식을 고려해야 하는 이유 바이트 정렬 방식을 고려해야 하는 경우 1. 네트워크 프로토콜 구현을 위해 필요한 정보 (a) IP 주소 → 빅 엔디언 (b) 포트 번호 → 빅엔디언 빅엔디언 = 네트워크 바이트 정렬 2. 응용 프로그램이 주고 받는 데이터 (c) 빅 엔디..

코딩/Network 2023.04.14

[네트워크] 소켓 주소 구조체

소켓 주소 구조체 ▶네트워크 프로그램에서 필요한 주소 정보를 담는 구조체 ▶다양한 소켓 함수의 인수로 사용 ▶프로토콜 체계에 따라 다양한 소켓 주소 구조체가 존재 ▶기본형은 sockaddr 구조체 #include struct sockaddr { unsigned shortsa_family;// address family charsa_data[14];// socket address (variable-length data) }; sockaddr 구조체 ▶응용 프로그램이 사용할 프로토콜의 종류에 따라 별도의 소켓 주소 구조체가 정의되어 있음 - TCP/IP → sockaddr_in{} 또는 sockaddr_in6{} TCP/IP 프로토콜을 위한 소켓 주소 구조체는 IP 버전에 따라 두 종류 제공 -블루투스 → ..

코딩/Network 2023.04.14

[네트워크] 소켓 생성과 닫기

윈속 생성과 닫기 소켓 생성 ▶사용자가 요청한 프로토콜을 사용해 통신할 수 있도록 내부적을 리소스를 할당하고, 이에 접근할 수 있는 일종의 핸들 값인 소켓 디스크립터를 리턴 //소켓 생성 SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); 주소지정방식 (주소체계) -> int af 소켓 타입 -> int type ▶사용할 프로토콜의 특성 프로토콜 ▶주소 체계와 소켓 타입이 같더라도 해당 프로토콜이 두 개 이상 존재할 경우 프로토콜을 명시적으로 지정 소켓 닫기 ▶소켓을 닫고 관련 리소르를 운영체제에 반환 소켓 생성과 닫기 실습

코딩/Network 2023.04.14

[네트워크] 윈도우 소켓 오류 처리

Secure Coding ▶오류 및 예외 처리는 취약점과 정보 유출을 방지하기 위해 안전한 방법으로 구현해야 함 ▶오류 및 예외 처리는 일반적으로 모든 소프트웨어 제품의 일부 ▶부주의한 절차로 보안 취약성이 야기될 수 있다 -> 소프트웨어가 입력 오류로 작동이 멈춤으로써 서비스 거부 공격을 허용할 수 있고, 오류메시지가 기밀 데이터를 노출할 수 있다 오류처리의 모범 사례 안전하게 실패해라! 시스템을 안전하지 않은 상태로 두지 마라 구체적인 오류 메시지를 사용하되 지나치게 자세하게 표시하지 마라 비밀 정보를 공개하지 않는 방법으로 예외 처리를 적용하라 로그 데이터를 덮어쓰지 못하도록 해라 감사 절차를 정의하고 시행하라! 오류 처리 ▶함수 호출 시 오류를 체크하여 사용자에게 구체적인인 오류 내용을 알려주는 ..

코딩/Network 2023.04.14

[네트워크] 윈도우 소켓 (윈속)

소켓 ▶네트워크 프로그래밍 인터페이스 ▶윈도우용 소켓 = 윈도우 소켓(윈속) ▶API 호출을 통해 작동 - 모듈화 - Application layer → Kernel layer - 커널 레이어의 동작을 알 필요가 없음 소켓의 3가지 관점 1) 데이터 타입 2) 통신 종단점 3) 네트워크 프로그래밍 인터페이스 1. 소켓 데이터 타입 ▶파일 디스크립터 or 핸들과 유사한 개념 ▶생성과 설정 과정이 끝나면, 운영체제의 통신 관련 정보를 참조해 다양한 작업을 편리하게 할 수 있는 데이터 타입통신을 위한 요소 ▶사용할 프로토콜 (TCP or UDP) ▶송식측 IP와 port ▶수신측 IP와 port 2. 통신 종단점 ▶응용 프로그램은 자신의 소켓이 상대편의 소켓과 연결된 것으로 데이터를 주고 받음 = 통신의 종단..

코딩/Network 2023.04.13

[네트워크] 데이터 전송 원리, 패킷, IP주소, 도메인

데이터 전송 원리 패킷이란? 제어정보 + 데이터 ▶각 프로토콜에서 정의한 제어 정보(IP주소, 포트번호, 오류체크 코드 등) + 데이터 ▶제어 정보의 위치에 따라 앞쪽에 붙는 헤더와 뒤쪽에 붙는 트레일러로 구분 패킷 전송 형태 ▶계층별 각 계층은 동일 위치의 상대 계층과 통신하는 것으로 간주 인터넷 - 응용 계층, 전송 계층 하부 계층이 제공하는 가상적인 연결을 사용해 동작 - 인터넷 계층 IP 주소와 라우팅 기능을 이용해 패킷 전송 경로 결정 - 네트워크 접근 계층 물리 주소를 사용해 실제 패킷 전송 * 물리주소는 패킷이 라우터를 통과할 때마다 다음 지점의 물리주소로 계속 변경됨 IP 주소, 포트 번호 TCP/IP 프로토콜로 통신할 때는 IP주소와 포트번호를 사용함 IP 주소 ▶인터넷에 있는 호스트와 ..

코딩/Network 2023.04.13
728x90
반응형
LIST