-
23/11/21 네트워크 프로그래밍 # 브로드 캐스팅Computer Engineering 2023. 11. 21. 16:51
파일 : 12 주차
BroadCasting
- 브로드캐스팅 ( Broadcasting ) : 불특정 다수에게 방송
특정 네트워크에 연결된 모든 호스트에게 한 번에 동일한 메시지를 전송하는 기법 : UDP 소켓 사용
브로드 캐스트 주소 사용 ( 로컬 네트워크 호스트에게만 전송 )
브로드 캐스트 주소 = 네트워크 주소 : 255
192.168.0.255 또는 '<broadcast>'2가지 형태의 옵션이 필요하다.
브로드 캐스트는 송수신 후 다시 데이터 송수신이 가능하도록 setsockopt() 함수의 SO_REUSEADDR 옵션 설정
브로드 캐스트 송신 프로그램에서 SO_BROADCAST 옵션 설정소켓 옵션 설정 방법
- setsocketopt(level, optname, value)Setsocketopt() 메소드에서 SOL_SOCKET 관련 option
SO_BROADCAST Bool 브로드 캐스트 사용 간으 여부
SO_RCV_BUF INT 수신 버퍼 크기 지정
SO_DONTLINGER 소켓 닫을 때 남은 데이터 모두 전송
SO_DONTROUTE 라우팅 없이 직접 인터페이스로 전송 : 모든 데이터는 라우터 통해 보내는데, 여기서는 라우터없이 알아서 인터페이스로 보내라 하는 것
SO_KEEPALIVE 일정시간마다 연결 상태 체크
SO_REUSEADDR Bool 사용된 주소 재지정멀티캐스트는 그룹이 떨어져있어도 됨
Setsockopt() 메소드에서 IPPROTO_IP 관련 option
IP_DROP_MEMBERSHIP 멀티캐스트 그룹 탈퇴 : ip_mreg
IP_ADD_MEMBERSHIP 멀티캐스트 그룹에 가입 자료형 : ip_mreg
IP_MULTICAST_LOOP 루프 백 자료형 : 0,1
IP_MULTICAST_TTL 생존기간 unit8 : 거쳐가는 네트워크의 개수 , 어느정도 지나도 못찾으면 그냥 버려라 하는 것
IP_MAX_MEMBERSHIPS int 최대 멀티캐스트 그룹 수브로드캐스트 보내고 싶은 네트워크 주소에다가 지정,
내가 속한 것에 보낼때는 broadcast라고 쓰면 됨.두 가지 옵션, 보내는 사람 브로드캐스트값 참, 송수신은 reuseadd 옵션을 참으로 지정, setsocketopt() 메소드 이용해서 지정하면 됨
1024 버퍼 크기 , 덩어리데이터가 옴과 동시에 누가보냈는가 정보, . .
오늘의 실습 < 브로드 캐스팅 > 브로드캐스트 송신프로그램, 수신프로그램
from socket import * addr=('<broadcast>',10000) #브로드캐스트 주소 #브로드 캐스트를 위한 소켓 설정 sock=socket(AF_INET,SOCK_DGRAM) sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) sock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) #브로드캐스트 옵션 while True: smsg=input('broadcast message:') sock.sendto(smsg.encode(),(addr))
# 수신 프로그램 #broadcast_server.py from socket import * sock=socket(AF_INET, SOCK_DGRAM) # 브로드캐스팅을 위해 UDP 소켓 사용 sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) # 주소 재사용 sock.bind(('',10000)) while True: msg, addr = sock.recvfrom(1024) #receive message print(msg.decode())
IP 주소 : 네트워크 id + 호스트 id(호스트아이디는 모두 0인 경우 모두 1인 경우)
서브넷 마스크 : IP Address에서 첫비트부터 어디까지가 네트워크 부분인가 알려주는 역할- 멀티 캐스팅 ( Multicasting ) : 특정 다수 에게 한 번에 보내는 것. 다른네트워크사용자도 전송 가능
멀티플 유니캐스트 : 똑같은 걸 한사람씩 보내는 것, 여러번 보내는 것 , 얘는 멀티와 반대- 한 번에 특정 그룹의 사용자에게 메시지를 전송하는 방식
- 다른 서브 네트워크 사용자에게도 전송 가능
- 특정 IP 주소 사용하여 멀티캐스트 그룹 지정
- 패킷을 멀티캐스트 그룹으로 전송하면 그룹에 가입된 장치들이 패킷을 수신
- 패킷을 한 번만 라우터로 전송하면 라우터에서 각 컴퓨터로 패킷을 전송
- UDP 프로토콜을 사용하며, 멀티캐스트 주소는 Class D
- 최상위 4비트가 '1110' 이므로 224.~ 239.255.255.255 범위- 파이썬 struct 모듈 사용법 : 자세히 몰라도 됨 : 시험 안내실 각
'Computer Engineering' 카테고리의 다른 글
23/11/23 네트워크 프로그래밍 #멀티캐스트 실습 (0) 2023.11.23 교착상태(데드락)이란? (0) 2023.06.18 프로세스의 상태와 계층 구조 (0) 2023.06.07