Multimedia & Mobile Communications Lab.

Slides:



Advertisements
Similar presentations
TCP 서버/클라이언트 동작 원리 - (1) TCP 서버/클라이언트 예 웹 서버 웹 클라이언트 웹 클라이언트
Advertisements

Network Lab. Byoung-Son, Choi
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
13장 소켓.
Chapter 06. UDP 서버/클라이언트.
TCP/IP Socket Cover Slide 조태문.
Network Lab. Young-Chul Hwang
TCP Client/Server Program
Department of Computer Science and Engineering
Department of Computer Engineering
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
4장. 소켓 유형과 프로토콜 Network Lab. 이 원 구 1.
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
TCP Client/Server Program
Network Lab. Seoung Hyeon, Lee
Department of Computer Science and Engineering
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
인터넷 주소 변환 School of Electronics and Information. Kyung Hee University.
14장 소켓.
제 12장 I/O멀티플렉싱(Multiplexing)
제 14장 Multicast & Broadcast
Department of Computer Engineering
Department of Computer Engineering
Department of Computer Engineering
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 7장 소켓 연결의 우아한 종료 인공지능실험실 석사 2학기 이희재
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
Department of Computer Engineering
Chapter 21 Network Layer: ARP, ICMP (IGMP).
고급 입출력 함수 School of Electronics and Information. Kyung Hee University.
Homework 6… 12월 2일(금) 11:59pm까지 자신의 이름과 학번을 출력해 주는 유닉스/리눅스 네트워크 소켓 서버 프로그램 과 클라이언트 프로그램 을 작성해 보세요 참고 (실습1) Hello 프로그램 helloserver.c helloclient.c 컴파일.
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
Department of Computer Engineering
Chapter 06. UDP 서버/클라이언트.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 9장 소켓의 다양한 옵션 인공지능실험실 박사 1학기 장성만
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
School of Electronics and Information. Kyung Hee University.
Department of Computer Engineering
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Department of Computer Science and Engineering
13장 고급 입출력 함수 박사 4학기 최 성자.
TCP/IP Socket Programming…
Socket Address Structure and Byte Ordering Functions
Socket Address Structure and Byte Ordering Functions
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
소켓의 옵션 School of Electronics and Information. Kyung Hee University.
Department of Computer Engineering
Chapter 5 UDP Socket 소켓 프로그래밍.
Chapter 19 솔라리스 네트워크 관리 Solaris1 . TCP/IP 개요
Chapter 07. 소켓 옵션.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
School of Electronics and Information. Kyung Hee University.
Department of Computer Engineering
Network 네트워크 이론 및 실습 TCP / IP 4장.
Department of Computer Engineering
Department of Computer Engineering
Overlay Multicast 김 종 완 김 성 현
인터넷 주소변환 School of Electronics and Information. Kyung Hee University.
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
Chapter 27 Mobile IP.
Chapter 04. TCP 서버/클라이언트.
제 13 장 인터넷 그룹 관리 프로토콜 정보통신연구실.
Chapter 02. 윈도우 소켓 시작하기.
Department of Computer Engineering
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
argc, argv 의 사용방법 #include <stdio.h>
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
Department of Computer Engineering
Network Lab. Young-Chul Hwang
ARP.
Presentation transcript:

Multimedia & Mobile Communications Lab. Socket 4 DK Han dkhan@mmlab.snu.ac.kr Junghwan Song jhsong@mmlab.snu.ac.kr 2011-04-23 Multimedia & Mobile Communications Lab.

Outline TCP vs. UDP Multicast Broadcast Practice A user connect to server to uses resources in machine

TCP/IP Protocol Stack 인터넷 기반의 데이터 송수신을 목적으로 설계된 스택 큰 문제를 작게 나눠서 계층화한 결과 A user connect to server to uses resources in machine

TCP vs UDP A user connect to server to uses resources in machine

TCP vs UDP 구분 TCP UDP 신뢰성 Reliable 신뢰성을 위해 Ack, Checksum 사용 Unreliable 연결성 Connection-Oriented Connection이후 통신 가능 Connectionless Connection 과정 없음 재전송 재전송 요청함 Error 및 Packet Loss 탐지 재전송 없음 특징 Flow control을 위해 Window사용 고속데이터 전송 가능 용도 신뢰성이 필요한 통신 파일전송, 대부분의 APP. 총 패킷수가 적은 통신 동영상 및 음성 등 멀티미디어 통신 A user connect to server to uses resources in machine

UDP UDP 소켓 TCP는 1대1의 연결을 필요로 하지만, UDP는 연결의 개념이 없음 서버 소켓과 클라이언트 소켓의 구분이 없음 하나의 소켓으로 둘 이상의 영역과 데이터 송수신이 가능 A user connect to server to uses resources in machine

UDP UDP 소켓 sendto 함수 A user connect to server to uses resources in machine

UDP UDP 소켓 recvfrom함수 A user connect to server to uses resources in machine

Multicast 멀티캐스트 멀티캐스트 서버는 특정 멀티캐스트 그룹을 대상으로 데이터를 딱 한번 전송 딱 한번 정송하더라도 그룹에 속하는 클라이언트는 모두 데이터를 수신 멀티캐스트 그룹의 수는 IP주소 범위 내에서 얼마든지 추가가 가능 특정 멀티캐스트 그룹으로 전송되는 데이터를 수신하려면 해당 그룹에 가입 멀티캐스트는 연결의 개념이 없음 UDP 소켓 기반 A user connect to server to uses resources in machine

Multicast A user connect to server to uses resources in machine

Multicast TTL(Time To Live) 패킷을 얼마나 멀리 보낼 것인가를 결정 TTL은 정수로 표현 라우터를 하나 지날 때마다 1씩 감소 TTL이 0이 되면, 해당 패킷은 소멸 A user connect to server to uses resources in machine

Multicast TTL(Time To Live) 멀티캐스트를 위한 TTL설정 setsockopt함수 사용 TTL 설정과 관련된 프로토콜의 레벨은 IPPROTO_IP 옵션의 이름은 IP_MULTICAST_TTL A user connect to server to uses resources in machine

Multicast 그룹 가입 방법 소켓 옵션정보 변경을 통해 가능 프로토콜 레벨은 IPPROTO_IP 옵션의 이름은 IP_ADD_MEMBERSHIP A user connect to server to uses resources in machine

Multicast 그룹 가입 방법 Multicast address A user connect to server to uses resources in machine

Broadcast 브로드캐스트 동일한 네트워크 내에 존재하는 호스트에게 데이터를 전송하는 방법 데이터 전송의 대상이 호스트가 아닌 네트워크임 멀티캐스트와 마찬가지로 UDP소켓 기반 Directed Broadcast IP에서 네트워크 주소를 제외한 호스트 주소를 모두 1로 변경 후 전송 Local Broadcast 255.255.255.255로 데이터를 전송하면, 전송한 호스트가 속한 네트워크로 데이터 전송 A user connect to server to uses resources in machine

Broadcast 브로드캐스트 브로드캐스트를 위한 소켓 설정 SO_BROADCAST 옵션을 1로 변경 옵션의 설정, 전송에 사용되는 IP 주소 이외에는 일반적인 UDP 코드와 차이없음 A user connect to server to uses resources in machine

Multicast Practice 멀티캐스트 실습과정 1 sender, 2 receiver 조원과 역할 분담 Sender가 멀티캐스트 그룹 주소로 news.txt 파일 전송 UDP 소켓 생성 멀티캐스트 그룹에 파일 전송 Receiver는 멀티캐스트 그룹 가입 후 news.txt 파일 수신 멀티캐스트 그룹에 가입 파일 수신 실습시간 내 구현 TA에게 확인 후 수업 마침 A user connect to server to uses resources in machine

Multicast Practice 멀티캐스트 실습과정 Team Multicast IP address 1조 224.1.1.2 2조 224.1.1.3 3조 224.1.1.4 4조 224.1.1.5 5조 224.1.1.6 A user connect to server to uses resources in machine

<<sender.c>> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #define TTL 64 #define BUF_SIZE 30 void error_handling(char* message); int main(int argc, char* argv[]) { int send_sock; struct sockaddr_in mul_addr; int time_live = TTL; FILE* fp; char buf[BUF_SIZE]; if(argc != 3) printf("Usage : %s <Group IP> <PORT>\n", argv[0]); exit(1); } send_sock = socket(PF_INET, SOCK_DGRAM, 0); memset(&mul_addr, 0, sizeof(mul_addr)); mul_addr.sin_family = AF_INET; mul_addr.sin_addr.s_addr = inet_addr(argv[1]); //multicast IP mul_addr.sin_port=htons(atoi(argv[2]));

setsockopt(send_sock, IPPROTO_IP, IP_MULTICAST_TTL, (void setsockopt(send_sock, IPPROTO_IP, IP_MULTICAST_TTL, (void*)&time_live, sizeof(time_live)); if((fp = fopen("news.txt", "r")) == NULL) { error_handling("fopen() error"); } while(!feof(fp)) fgets(buf, BUF_SIZE, fp); sendto(send_sock, buf, strlen(buf), 0, (struct sockaddr*)&mul_addr, sizeof(mul_addr)); sleep(2); close(send_sock); return 0; void error_handling(char* message) fputs(message, stderr); fputc('\n', stderr); exit(1);

<<receiver.c>> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #define BUF_SIZE 30 void error_handling(char* message); int main(int argc, char** argv) { int recv_sock; int str_len; char buf[BUF_SIZE]; struct sockaddr_in addr; struct ip_mreq join_addr; if(argc != 3) printf("Usage : %s <GroupIP> <PORT>\n", argv[0]); } recv_sock = socket(PF_INET, SOCK_DGRAM, 0); memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = htonl(INADDR_ANY); addr.sin_port = htons(atoi(argv[2]));

if(bind(recv_sock, (struct sockaddr*)&addr, sizeof(addr)) == -1) { error_handling("bind() error"); } join_addr.imr_multiaddr.s_addr = inet_addr(argv[1]); join_addr.imr_interface.s_addr = htonl(INADDR_ANY); setsockopt(recv_sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void*)&join_addr, sizeof(join_addr)); while(1) str_len = recvfrom(recv_sock, buf, BUF_SIZE-1, 0, NULL, 0); if(str_len<0) break; buf[str_len] = 0; fputs(buf, stdout); close(recv_sock); return 0; void error_handling(char* message) fputs(message, stderr); fputc('\n', stderr); exit(1);

APPENDIX : setsockopt A user connect to server to uses resources in machine