728x90
멀티캐스트
- 멀티캐스트 서버는 특정 멀티캐스트 그룹을 대상으로 데이터를 1회 전송
- 1회 전송해도 그룹에 속하는 클라이언트는 모두 데이터를 수신
- 멀티캐스트 그룹의 수는 IP 주소 범위 내에서 얼마든지 추가 가능
- 데이터를 수신하려면 해당 그룹에 가입하면됨
- 멀티캐스트는 연결의 개념이 존재하지 않기 때문에 UDP 소켓이 기반임
TTL(time to live)
- 패킷을 얼마나 멀리 보낼것인가
- 정수로 표현, 라우터를 하나 거칠 때마다 1씩 감소
- TTL이 0되면 해당 패킷은 소멸
send_sock(socket(PF_INET, SOCK_DRAAM, 0);
setsockopt(send_sock, IPPROTO_IP, IP_MULTICAST_TTL, *, * );
위는 멀티 캐스트 설정
TTL 설정 : IPPROTO_IP
옵션 이름 : IP_MULTICAT_TTL
setsockopt(recv_sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, * , * );
멀티 캐스트 그룹 가입
struct ip_mreq{
struct in_addr imr_multiaddr;
struct in_addr imr_interface;
}
가입한 멀티 캐스트 그룹은 구조체로 표현

sender에서는 특정 멀티캐스트 그룹을 향해 파일에 저장된 데이터 전송

receiver가 멀티캐스트 그룹에 가입을 하는 순간 데이터 수신
브로드캐스트
- 동일한 네트워크 내에 존재하는 호스트에게 데이터 전송
- 데이터 전송 대상은 호스트가 아닌 네트워크
- udp 소켓 기반
- ip에서 네트워크 주소를 제외한 호스트 주소를 모두 1로 해서 전송하면, 해당 네트워크로 데이터가 전송 -> directed 브로드캐스트
- 255.255.255.255로 데이터를 전송하면, 전송한 호스트가 속한 네트워크로 데이터가 전송 -> local 브로드캐스트
send_sock=socket(PF_INET, SOCK_DGRAM, 0);
setsocket(send_sock, SOL_SOCEKT, SO_BROADCAST, *, *);
브로드캐스트 설정
브로드캐스트가 가능하려면, SO_BROADCAT 옵션정보를 1로 변경해야한다

브로드캐스트 sender, 일반적 udp 프로그램과 차이가 없음

브로드캐스트 receiver, 마찬가지로 일반적 udp receiver와 동일
브로드캐스트와 멀티캐스트의 차이
브로드캐스트 -> 모든 네트워크에 데이터 전송
멀티캐스트 -> 특정 가입 호스트에만 데이터 전송
728x90
'네트워크' 카테고리의 다른 글
[네트워크] HTTP (0) | 2023.06.12 |
---|---|
[네트워크] 쓰레드, 멀티 쓰레드 (0) | 2023.06.11 |
[네트워크] IO 멀티플렉싱 (0) | 2023.06.11 |
[네트워크] 시그널 핸들링 (0) | 2023.06.11 |
[네트워크] send&recv, readv&writev 입출력 함수 (0) | 2022.11.29 |