네트워크 프로그래밍 및 실습
MultiCAst
Multicast UDP 통신을 사용한다. 멀티 캐스트와 브로드캐스트/유니캐스트는 범위만 다름 멀티캐스트 : 인터넷 공간에 가상의 범위를 지정하고, 가상의 범위에 통신을 했을때, 그 가상의 공간에 접속되어 있는 Client와 통신하는 방법. 접속한 대상은 데이터를 전송 받을 수 있음. 통신을 받든 안 받든 무조건 가상 공간에 데이터를 쏘아 올리는 형태임 - 멀티캐스트 주소 : 224.0.0.0 ~ 239.255.255.255 (239로 시작하는 IP는 내부 지정용 예약 IP임) 브로드캐스트 : 멀티 캐스트와 방식은 동일하지만. 단일 네트워크 범위에 범위가 정해 짐. 즉 C 클래스 단에서만 데이터를 방출 시킴
Multicast 멀티 캐스트 가상 공간은 위 IP 주소 대임, D Class IP 주소 타입임 멀티 캐스트는 데이터가 중간에 손실 될 수 있고, 도달 순서가 바뀔수 있음 멀티캐스트 방식의 경우, 패킷은 라우터를 거쳐 이동함, 결국 라우터는 멀티캐스트를 지원해야 함. 즉 라우터, 호스트 모두 IGMP(Internet Group Management Protocl)을 지원해야 함
Multicast 예제 방송 서버 및 클라이언트 구현
MulticastSokcet DatagramSock과 유사함 (UDP) (특정 Ip class를 사용하지만, Multicast는 C Class 네트워크 범위를 사용함) constructs MulticastSocket() : 인위적인 UTP 포트 지정함, 아무거나 사용 MulticastSocket(int) : 포트 번호 지정 (UTP 포트임) --> 일반적으로 사용 MulticastSocket(SocketAddress) : 특정 주소 및 포트 번호 지정 Method getTimeToLive() : 위 소켓에서 나간 데이터가 어느 정도 만큼 살아 있을 것인가 - TTL : 라우터나 게이트웨어를 빠져나갈때 마다 줄어 드는 값 (0~255) - 라우터 빠져나가면 1씩 줄어듬 만약 1 인 경우 현 네트워크 대를 빠져 나갈 수 없다.
MulticastSokcet joinGroup(InetAddress) : 연결 가능 상태에서 join Group으로 가입을 해야 통신이 가능함 joinGroup(SocketAddress, NetworkInterface) : 위 와 동일하고 특정 interface 지정함 leaveGroup(InetAddress) : Join된 그룹 상태에서 탈퇴함 (더 이상 통신 X ) - 연결은 지속적으로 되어 있음. Close() 해야 연결 종료됨 setTimeToLive(int) : 데이터 살아 있는 살아 있는 정도 (0 ~ 255 사이로 지정 - TTL 값) - 만약 설정을 1로 하면 사내 네트워크에만 데이터가 전송됨
잘 사용되지 않는 메서드들 네트워크 카드가 여러개 일 경우 컨트롤 시 사용 getInterface() : 현재 접속되어 있는 주소 리턴 --> InetAddress 타입 - 네트워크 카드가 여러개 일 경우 사용함, 특정 카드 지정하고 접속 주소 지정, 확인함 - 어떤 네트워크 카드를 사용하여 연결하는가 getLoopbackMode() : Loop back이 지원하는가 (기본 : false) - true일 경우 네트워크 연결 작업을 되돌릴 수 있음 getNetworkInterface() : 현재 Network와 연결된 interface 알아냄 setInterface(InetAddress) : 특정 연결 주소 지정 (특정 카드 지정) - 네트워크 카드가 여러개 일 경우 사용함, 특정 카드 지정하고 접속 주소 지정, 확인함 setLoopbackMode(boolean) : Loop back 지원 setNetworkInterface(NetworkInterface) : 특정 Network Interface와 연결함
멀티캐스트 데이터 송신 방법 1. DatagramPacket 클래스 객체로 전송할 데이터 생성 2. D 클래스 주소에 대한 MulticastSocket 클래스 생성 3. 해당 소켓의 포트 번호를 선택해 Join 함 4. send() method로 데이터 전송함 5. 데이터 전송이 끝나면 leave하여 그룹 벗어남 (종료
데이터 송신법
멀티캐스트 데이터 수신 방법 1. 데이터 전송 받을 최대 공간(65508 byte) atagramPacket클래스 객체 생성 2. 접속하고자 하는 D 클래스 그룹 설정하여 MulticastSocket 객체 생성함 3. 원하는 곳의 포트에 Join 함 (생략 못함) 4. receive() method로 데이터를 읽어 들임 5. 원하는 데이터 읽은 후 leave 하여 그룹 벗어남 6. close()하여 작업 종료함
멀티캐스트 데이터 수신 방법
Thank you -*