개발/서버 네트워크
-
강의노트 - 네트워크 프로그래밍개발/서버 네트워크 2023. 8. 3. 16:53
소켓 프로그래밍 TCP 통신 때 커널의 Send/Recv 버퍼를 사용 버퍼 내의 데이터는 구별되지 않는다. 클라이언트가 100바이트 10 개를 보내면 서버가 한 번에 받을 때 1000바이트 한 개로 인식할 수 있다 버퍼 크기가 초과되거나, 여러 데이터가 합쳐지지 않도록 하는 처리가 필요하다. TCP 연결형 연결을 위해 할당되는 논리적인 경로가 있다 전송 순서가 보장된다 경계(Boundary)의 개념이 없다 Hello World = He lloW orld 데이터가 어떻게 분리되거나, 합쳐질 지 알 수 없음 신뢰성 높음 분실 시 재전송 속도 느림(상대적) UDP 비연결형 연결이라는 개념이 없다 전송 순서가 보장되지 않는다 경계(Boundary)의 개념이 있다 속도를 제외한 UDP의 장점! 데이터가 분리되거나..
-
강의노트 - 메모리 관리개발/서버 네트워크 2023. 8. 3. 16:46
Reference Counting 참조 횟수 계산 방식 - 위키백과, 우리 모두의 백과사전 참조 횟수 계산 방식 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 참조 횟수 계산 방식(reference counting)은 메모리를 제어하는 방법 중 하나로, 쓰레기 수집의 한 방식이다. 구성 방식은 단순하다. 어떤 한 동적 단위(객체, Object)가 ko.wikipedia.org 레퍼선스 개수를 RefCountable 클래스를 만들고, SmartPointer 클래스를 추가하여 Wrapping 이미 만들어진 클래스를 대상으로는 사용할 수 없다 스마트 포인터 객체 소멸 시 자동으로 삭제되는 포인터 C++11 이전에는 auto_ptr 순환(Cycle) 문제 서로를 참조하는 스마트 포인터가 ..
-
강의노트 - 멀티스레드 프로그래밍개발/서버 네트워크 2023. 8. 3. 16:37
DLL 동적 연결 라이브러리 실행파일에 포함되지 않아 같이 관리해야 한다 정적 라이브러리(lib) 실행파일에 포함된다 dll, lib C, C++ 외부 라이브러리(dll, lib) 사용하기 Import Dynamic or Static Library By Visual Studio 목차 mosquitto나 ifcplusplused 같은 오픈소스를 Build 하기 위해 많은 노력을 했었는데 그 과정에서 얻게 된 지식을 공유하기 위해 작성하였습니다. dll, lib dll과 li wnsgml972.github.io 쓰레드 생성 #include std::thread t1(Function); C++ Chapter 19.3 : std::thread와 멀티쓰레딩 기초 C++ Chapter 19.3 : std::thre..
-
5. I/O Completion Ports (IOCP)개발/서버 네트워크 2023. 8. 3. 15:42
IOCP = 입출력 완료 포트 Overlapped I/O 모델의 확장 Winsows API의 커널 오브젝트 포트. 입출력 완료 시점의 통지를 전담하는 포트이다. IOCP 생성 시, 입출력 요청 처리만을 담당하는 큐 오브젝트가 생성된다. CreateCompletionPort CP 객체를 생성할 때, 소켓 핸들을 CP 객체에 등록할 때 사용된다. 할당된 IOCP의 알림이 있을 때까지 IOCP 스레드는 blocked 상태. Worker 스레드를 생성한 IOCP에 등록한다. CreateCompletionPort 3. Worker 스레드가 비동기 입출력을 시작한다. 4. I/O 작업이 완료된다. 5. IOCP가 작업 완료 신호를 받는다. 6. IOCP 스레드중 하나가 깨어나 callback을 실행한다. (LIFO..
-
4. OverLapped I/O개발/서버 네트워크 2023. 8. 3. 15:34
Windows API의 비동기 입출력 방식 하나의 스레드 내에 2개 이상의 데이터 전송을 중첩시킨다. OverLapped I/O ****= 중첩된 입출력 Windows NT 3.0(1993) 에 추가된 API WSASend()와 WSARecv() 등 비동기 입출력 함수를 사용할 수 있다. 비동기 함수를 사용하기 위해 OVERLAPPED 구조체를 I/O 함수에 전달해야 한다. 입출력 작업이 다른 작업과 중첩되어(동시에) 처리된다. 비동기 입출력 방식 = I/O요청 후 응답을 기다리지 않는다 논-블로킹 소켓을 사용 바로 완료되지 않아도 PENDING(미처리)을 반환. 완료될 때 이벤트가 발생한다. 비동기 함수 호출은 APC 큐를 사용한다. Asynchronous Procedure Calls queue Win..
-
2. Windows Socket API(WSA, Winsock)개발/서버 네트워크 2023. 8. 3. 15:30
Windows TCP/IP 와 응용 프로그램 사이의 통신 방식을 정의한 API Network Socket 연결 / send(), recv() / close() 컴퓨터 네트워크를 경유하는 프로세스 사이 통신의 종착점(Endpoint) 인터넷을 통해 데이터를 전송하는 데 사용할 수 있는 연결 지점을 식별하는 데 사용. 소켓은 네트워크 속 프로세스들 사이에, 데이터를 교환하고 연결하기 위한 약속. 네트워크 통신을 위한 프로그램이 소켓을 생성하고, 소켓을 통해 데이터를 교환한다. TCP/IP가 인터넷의 표준으로 자리 잡으면서, 주로 인터넷 소켓을 가리킨다. 인터넷 소켓은 전송 프로토콜(TCP/UDP), IP 주소, 포트 번호 세 가지로 구별된다. 이외에 데이터그램 소켓, 스트림 소켓 등이 있다. Unix에서는 ..
-
1. TCP/IP개발/서버 네트워크 2023. 8. 3. 15:26
컴퓨터는 특정 규칙이나 프로토콜을 사용하여 순서대로 데이터를 전송 및 수신한다. TCP/IP는 컴퓨터 사이의 통신 표준 및 네트워크의 연결에 대한 자세한 규칙을 지정하는 프로토콜의 모음(Suite)이다. 그 중 인터넷에서 중요하고 많이 쓰이는 두 프로토콜의 이름을 따 TCP/IP가 되었다. 인터넷 프로토콜 스위트라고도 부른다. TCP 전송 제어 프로토콜 두 포트 사이 가상의 연결을 관리하고, 데이터를 교환할 수 있게 한다. 전달받은 패킷을 재조립하고, 손실된 패킷이 있다면 다시 전송받는다. IP 인터넷 프로토콜 인터넷의 주소 체계로서 소스 장치에서 대상 장치로 정보 패킷을 전달한다. 패킷 순서를 보장하거나, 오류를 검사하지 않는다 TCP 등 다른 프로토콜이 필요하다.