728x90
반응형
SMALL

코딩/Network 22

[네트워크] IPPROTO_TCP 레벨 옵션

IPPROTO_TCP 레벨 옵션 TCP 데이터 전송 원리 TCP_NODELAY 용도 Nagle(네이글) 알고리즘 작동 여부 결정 Nagle(네이글) 알고리즘의 동작 방식 보낼 데이터가 MSS로 정의된 크기만큼 쌓이면 상대편에 무조건 보냄 보낼 데이터가 MSS보다 작으면 이전에 보낸 데이터에 대한 ACK가 오기를 기다림 ACK가 도착하면 보낼 데이터가 MSS보다 작더라도 상대편에 보냄 Nagle 알고리즘 장단점 장점 : 작은 패킷이 불필요하게 많이 생성되는 일을 방지해 네트워크 트래픽을 감소시킴 단점 : 데이터가 충분히 쌓일 때까지 또는 ACK가 도달할 때까지 대기하는 시간 때문에 응용프로그램의 반응 시간이 길어질 수 있음 사용 예 optval = 1 이면 NODELAY

코딩/Network 2023.06.06

[네트워크] 멀티캐스트, IPPROTO_IP, IPPROTO_IPV6 레벨 옵션

멀티캐스트 1 : n 통신 (point-to-multipoint) 하나의 발신지로부터 특정 그룹에게로 데이터 전송 발신지에서 하나의 패킷을 보내고, 네트워크(주로 라우터)쪽에서 이의 복사본을 여러 곳에 보냄 UDP 사용 실시간 다중 수신 응용에 주로 사용 ex) 영상회의, IPTV, game 등 장점 송신자는 한 번의 전송을 통하여 여러 발신자들에게 데이터를 전송하므로 네트워크 자원 낭비를 막을 수 있음 그룹에 속하지 않은 호스트는 영향을 받지 않으므로 전체 트래픽 증가가 브로드캐스트에 비하여 감소 단점 라우터가 멀티캐스트를 지원해야 가능함 멀티캐스트 주소 224.0.0.0 ~ 239.255.255.255 범위를 갖는 클래스 D의 IP를 사용함 멀티캐스트 특징 그룹 가입과 탈퇴가 자유롭고 그룹 구성원 모..

코딩/Network 2023.06.06

[네트워크] 소켓 옵션 / SOL_SOCKET 옵션

소켓 옵션 소켓 함수의 기본 동작을 변경 - 소켓 코드와 프로토콜 구현 코드를 세부적으로 제어 소켓 프로그래밍 모델 처리 주체에 따른 소켓 옵션의 종류 1. 소켓 코드가 처리하는 옵션 - 옵션을 설정하면 소켓 코드에서 해석하고 처리 2. 프로토콜 구현 코드가 처리하는 옵션 - 옵션을 설정하면 프로토콜 구현 코드에서 해석하고 처리 소켓 옵션 설정하기 int WSAAPI setsockopt( [in] SOCKET s, [in] int level, [in] int optname, [in] const char *optval, [in] int optlen ); [in] s 설정을 변경할 소켓 [in] level 옵션이 정의된 수준 [in] optname 설정할 옵션 이름 [in] optval 옵셜 설정에 값이 필..

코딩/Network 2023.06.06

[네트워크] 브로드캐스팅

목차 1.브로드캐스팅 2. 브로드캐스팅 데이터 보내기 위한 절차 브로드캐스팅 통신모델 유니캐스팅 (unicasting) : 한 개체가 다른 한 개체에 데이터를 보내는 모델 브로드캐스팅 (broadcasting) : 한 개체가 특정 네트워크에 속한 모든 개체에 데이 터를 보내는 모델 멀티캐스팅 (multicasting) : 동일 그룹에 가입한 모든 개체에 데이터를 보내는 모델 (개념적으로 브로드캐스팅은 멀티캐스팅의 특수한 경우 이다) 애니캐스팅 (anycasting) : 한 개체가 동일 그룹에 가입한 개체 중 가장 가까운 하나 에만 데이터를 보내면, 데이터를 받은 개체가 그룹에 속 한 나머지 개체에 데이터를 보내는 모델 브로드캐스팅 (broadcasting) 브로드캐스팅, 멀티캐스팅은 엄밀하게는 IP가 제..

코딩/Network 2023.06.06

[네트워크] UDP 서버-클라이언트

목차 1. UDP 서버-클라이언트 구조 2. UDP 서버-클라이언트 분석 UDP 서버-클라이언트 구조 TCP와 UDP 공통점 전송 계층 프로토콜 포트 번호를 이용해 주소를 지정 두 으용 프로그램이 TCP나 UDP를 이용해 통신하려면 반드시 포트 번호를 결정해야함 데이터 오류를 체크 TCP와 UDP는 헤더는 물론, 데이터에 대한 오류도 체크 Cf) IP계층은 헤더의 오류만 체크 = 단편화 UDP의 특징 연결 설정을 하지 않으므로 connect() 함수가 불필요함 프로토콜 수준에서 신뢰성 있는 데이터 전송을 보장하지 않으므로, 필요하다면 응용 프로그램 수준에서 신뢰성 있는 데이터 전송 기능을 구현해야 함 간단한 소켓 함수 호출 절차만 따르면 다자간 통신을 쉽게 구현할 수 있음 TCP와 달리 응용 프로그램이 ..

코딩/Network 2023.06.05

[네트워크] 멀티스레드 TCP서버/스레드 동기화/임계영역/이벤트

목차 1. 멀티스레드 TCP 서버 2. 스레드 동기화 3. 임계영역 4. 이벤트 멀티스레드 TCP 서버 기본형태 1. 클라이언트가 접속하면 accept() : accept()는 클라이언트와 통신할 소켓을 리턴 2. 클라이언트와 통신할 스레드 생성 CreateThread() : 이때 클라이언트와 통신할 소켓을 스레드에 인자로 넘겨줘야함 3. 스레드 함수는 인자로 전달된 소켓을 SOCKET 타입으로 저장 4. getpeername() 함수를 호출하여 클라이언트 주소 정보 획득 5. 클라이언트와 데이터 통신 #include "../../common.h" #include #define SERVERPORT 9000 #define BUFSIZE 512 //thread DWORD WINAPI ProcessClient..

코딩/Network 2023.06.05

[네트워크] 스레드 API, 스레드 제어

CPU 스케줄링 또는 스레드 스케줄링 윈도우 운영체제가 각 스레드에 CPU 할당 시간을 적절하기 분배하기 위한 정책 윈도우 운영체제의 스케줄링 기법 우선 순위 Priority에 기반함 우선 순위가 높은 스레드에 먼저 CPU 시간을 할당해줌 스레드 우선순위를 결정하는 요소 프로세스 우선순위를 우선순위 클래스, 스레드 우선순위를 우선순위 레벨이라 함 우선순위 클래스 프로세스의 속성 한 프로세스가 생선한 스레드는 우선순위 클래스가 동일 윈도우 운영체제가 제공하는 (1) 우선순위 클래스 REALTIME_PRIORITY_CLASS (실시간) HIGH_PRIORITY_CLASS (높음) ABOVE_NORMAL_PRIORITY_CLASS (높은 우선순위) NORMAL_PRIORITY_CLASS (보통) BELOW_N..

코딩/Network 2023.04.26

[네트워크] 멀티스레드

앞서 TCP 서버-클라이언트에서 발생하는 문제들 1) 다중 처리 문제 처음 연결한 클라이언트는 잘 동작하지만, 두 번 째 연결한 클라이언트는 동작하지 않음 (accept x) 2) 교착 상태 Deadlock 둘 이상의 프로세스 혹은 스레드가 서로의 작업이 끝나기를 기다리는 상태 *호출 순서를 정확하게 맞춰야 함 다중 처리 문제 해결 방법 1) 서버가 각 클라이언트와 통신하는 시간을 짧게 줄임 장점 : 구현이 쉽고 가장 적은 시스템 자원을 사용 단점 :대용량 데이터를 전송하는 응용프로그램에 적합하지 않음 2) 각 클라이언트를 스레드를 이용해 독립적으로 처리 : 멀티스레드 장점 : 소켓 입출력 모델에 비해 구현이 쉬움 단점 : 서버의 시스템 자원을 많이 사용함 3) 소켓 입출력 모델 사용 : 멀티 플렉싱 장..

코딩/Network 2023.04.15

[네트워크] 데이터 전송, 고정 길이, 가변 길이

응용 프로그램 프로토콜 ▶응용 프로그램 수준에서 주고받는 데이터의 형식과 의미, 처리 방식을 정의한 프로토콜 데이터 전송 시 고려할 사항 1. 메시지 경계 구분 a) 송신자는 항상 고정 길이 데이터를 보내고, 수신자는 항상 고정 길이 데이터를 읽는 경우 - 구현이 쉬움 - 짧은 데이터 전송 시 고정 길이만큼 보내지 않아서 불필요한 자원 낭비가 발생함 - 프로토콜 변경이 어려움 b) 송신자는 가변 길이 데이터를 보내면서 끝부분에 EOR (End Of Record)를 붙임, 수신자는 EOR이 나올 때까지 데이터를 읽음 - 데이터 길이를 알 수 없을 때 효과적임 - 송신자는 데이터 전송 후 마지막으로 EOR 전송 - 데이터 길이를 모르기 때문에 EOR이 나올 때까지 하나씩 읽어가야함, 성능문제가 생김 c) 송..

코딩/Network 2023.04.15

[네트워크] TCP 서버-클라이언트 분석

응용 프로그램 통신을 위해 결정해야 할 요소 (5가지) ▶프로토콜 : 통신 규약으로, 소켓을 생성할 때 결정 ▶지역 IP 주소와 지역 포트 번호 : 서버 또는 클라이언트 자신의 주소 ▶원격 IP 주소와 원격 포트 번호 : 서버 또는 클라이언트가 통신하는 상대의 주소 TCP 서버 소켓 호출 절차 1) socket() : 소켓 생성 및 사용 프로토콜 결정 2) bind() : 소켓의 지역 IP와 지역 포트 결정 3) listen() : 소켓의 상태를 LISTEN 상태로 변경 4) accept() : 클라이언트의 접속을 수용, 접속한 클라이언트와 통신할 수 있는 새로운 소켓 생성, 이 때 원격 IP와 원격 포트 번호가 결정됨 5) send() / recv() : 데이터 송수신 6) closesocket() :..

코딩/Network 2023.04.15
728x90
반응형
LIST