Chapter 4 UDP 소켓 사용법

Similar documents
본 강의에 들어가기 전

본 강의에 들어가기 전

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드]

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to TCP/IP Sockets: C Version

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

vi 사용법

2009년 상반기 사업계획

제1장 Unix란 무엇인가?

본 강의에 들어가기 전

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to TCP/IP Sockets: C Version

슬라이드 1

SMB_ICMP_UDP(huichang).PDF

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

TCP.IP.ppt

슬라이드 1

제1장 Unix란 무엇인가?

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft Word - Network Programming_NewVersion_01_.docx

Microsoft PowerPoint - 09-CE-23-윈도우 소켓

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt

슬라이드 1

Sena Device Server Serial/IP TM Version

SYN flooding

Microsoft PowerPoint - Lecture_Note_2.ppt [Compatibility Mode]

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A

자바-11장N'1-502

Microsoft PowerPoint - 06-CompSys-16-Socket.ppt

UDP Flooding Attack 공격과 방어

PowerPoint 프레젠테이션

Switching

제20회_해킹방지워크샵_(이재석)

bn2019_2

Microsoft Word doc

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

슬라이드 1

Microsoft PowerPoint - 15-EmbedSW-10-Socket

슬라이드 1

Microsoft PowerPoint PythonGUI-socket

PowerPoint 프레젠테이션

2. 인터네트워킹 서로떨어져있는각각의수많은네트워크들을연결하여하나의네트워크처럼연결하여사용할수있도록해주는것 3. 인터네트워킹에필요한장비 1 리피터 (Repeater) - 데이터가전송되는동안케이블에서신호의손실인감쇄 (Attenuation) 현상이발생하는데, 리피터는감쇄되는신

Microsoft Word - NAT_1_.doc

<43B7CE20BECBBEC6BAB8B4C220BCD2C4CFC7C1B7CEB1D7B7A1B9D62E687770>

hd132x_k_v1r3_Final_.PDF

9장 윈도우 소켓 프로그래밍

TTA Journal No.157_서체변경.indd

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

hd1300_k_v1r2_Final_.PDF

<4D F736F F D204B FC7C1B7CEB1D7B7A55FC0AFB4D0BDBA20B1E2B9DD20BCD2C4CF20C7C1B7CEB1D7B7A1B9D65FC0CCC8A3BCBA2E646F63>

Microsoft PowerPoint _TCP_IP

Microsoft Word - KPMC-400,401 SW 사용 설명서

IPv6 적용

소프트웨어 융합 개론

슬라이드 제목 없음

[Brochure] KOR_TunA

Windows 8에서 BioStar 1 설치하기

Microsoft PowerPoint - tem_5

01....b

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾

2007백서-001-특집

00목차

(291)본문7

Network Programming

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Subnet Address Internet Network G Network Network class B networ

서비스) 와서버( 관리대상서버) 간에자격증명을사용하여서로의 ID 를확인하고서로주고받는데이터를검사하고암호화하는프로세스 이다. 높은인증수준은일반적으로성능의저하를가져올수있지만높은 수준의보안과데이터무결성을제공한다. 기본값 - 관리대상서버에설정되어있는 DCOM 인증수준기본 값을

Network Programming

전송계층프로토콜 TCP(Transmission Control Protocol) 전송계층에서동작하는연결지향형 (connectionoriented) 프로토콜 데이터의흐름을관리하고, 데이터가정확한지검증하며통신 쓰리웨이핸드셰이킹 (three-way handshaking) 을통

The OSI Model

10. 시스템 프로그래밍

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

Network Programming

일반적인 네트워크의 구성은 다음과 같다

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

RHEV 2.2 인증서 만료 확인 및 갱신

TTA Verified : HomeGateway :, : (NEtwork Testing Team)

6주차.key

2009년 상반기 사업계획

Microsoft PowerPoint C-구조체

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C


Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - chap06-2pointer.ppt

gnu-lee-oop-kor-lec06-3-chap7

Microsoft PowerPoint UnixNetProg.ppt [호환 모드]

PowerPoint Presentation

PowerPoint 프레젠테이션

Transcription:

Chapter 4 UDP 소켓사용법

개요 소켓이란 (Unix 소켓 ) 소켓의구조 소켓의유형 UDP 에대한이해 교재 Chapter 4.1 UDP 클라이언트 교재 Chapter 4.2 UDP 서버 교재 Chapter 4.3 UDP 소켓을이용한 송신및수신

소켓이란? Socket 은통신을위한끝점 (endpoint) 을생성하여파일에대한 open 과유사한방식으로기술자 (descriptor) 을반환한다. 소켓매개변수는인터넷도메인 (TCP/IP), Novell 의 IPX 또는 listen 과 accept 또는 select 를호출하여클라이언트는일반적으로 bind 와 connect 를호출한다. 유닉스도메인소켓 은실제네트워크프로토콜을나타내지는않으며, 다만동일머신상의소켓에접속할수있다. 표준유닉스에서는 1024 미만의.TCP 와 UDP 지역포트 (port) 넘버로의바인딩 (binding) 은루트권한을가져야하며모든프로세스는 1024 또는그이상의바인딩되어있지않은포트넘버에바인드할수있는것이보통이다.

소켓의구조소켓이라함은지역적으로한컴퓨터에서네트워크를통하여다른컴퓨터로의연결을이루게하여주는전달자의역할을담당한다. 이런전달자의역할을수행하기위해서소켓은켳가지데이터필드를포함하여야하며, 이는소켓이이루고있는기본구성요소가된다. (1) Family (2) Type (3) Protocol sin_len sin_len sin_family sin_port Local Socket Address sin_addr sin_zero sin_len sin_len sin_family sin_port Remote Socket Address sin_addr sin_zero 소켓구조체의구성

(1) Family 존재하는프로토콜그룹중의하나를선택하여어떤유형의프로토콜에따라소켓이진행될것인지를정해줄수있는필드이다. Family Protocol AF_UNIX AF_INET AF_INET6 AF_NS AF_ISO AF_IPX AF_APPLETALK 프로토콜상수설명 유닉스기본파일체계소켓 IPV4 IPV6 Xerox ISO Novell IPX Appletalk DOS Family 프로토콜상수

(2) Type 소켓은연결지향형 (SOCK_STREAM), 비연결형 (SOCK_DGRAM), 저수준프로토콜제어 (SOCK_RAW) 의세가지연결에대한 Type 을설정할수있다. 각각의타입에따라연결되는소켓의특징을결정한다. Type SOCK_STREAM SOCK_DGRAM SOCK_RAW 각 Type 상수게대한설명 TCP ( 스트림소켓 ) UDP ( 데이터그램소켓 ) RAW 소켓 소켓타입상수 (3) Protocol 기반전송기법이하나이상의프로토콜에서요청된소켓형태를제공하는경우에는소켓을위해특정프로토콜을선택할수있다. 일반적으로 Raw 소켓을제외하고는 0 으로설정된다.

소켓의유형 애플리케이션 Stream 소켓인터페이스 Datagram 소켓인터페이스 Raw 소켓 인터페이스 TCP TCP UDP UDP IP IP 물리물리계층과계층과데이터데이터링크링크계층

Stream 소켓 Stream 소켓은 TCP 를사용한연결형프로토콜이다. TCP 는인터넷을통해다른애프리케이션과의연결 (connect) 을위해한쌍의 Stream 소켓을사용한다. 따라서데이터의전송은원격지소켓과의연결후이루어진다. 우리의일상생활에서는전화의개념과비슷하다. Datagram 소켓 Datagram 소켓은 UDP 를사용한비연결형프로토콜이다. UDP 는인터넷을통해다른애플리케이션에게메시지를보내기위해한쌍의 Datagram 소켓을사용한다. TCP 와는달리연결과정이없기때문에보낼때마다도착지의주소가필요하다. 또한전송에대한신뢰성이없기때문에신뢰성을유지하기위해서는타임아웃을이용한적절한응답확인절차가필료하다. Datagram 에대한쉬운이해는우리생활에서편지와비슷하다. Raw 소켓 _bygin 새로운소켓을만들때사용 Raw 소켓은 ICMP(Internet Control Message Protocol) 또는 OSPF (Open Shortest Path First : 일종의라우팅프로토콜 ) 같은저수준의프로토콜을액세스할수있도록해준다. TCP 와 UDP 가아닌 IP 계층을직접이용한다. Raw 소켓은루트 (root) 만이쓸수있고, 새로운프로토콜을만들때사용하는소켓이다.

UDP(User Datagram Protocol) 다른계층의주소체계 ( 포트 ) 를 IP 계층위에추가하고전송중에발생할수있는데이터훼손을감지하고훼손된데이터그램을제거한다. 생성되자마자한 UDP 소켓은메시지들을어떤임의의주소로 / 주소로부터, 또이어서여러다른주소들로 / 주소들로부터송 / 수신하는데사용할수있다. UDP 가제공하는종단간전송서비스가최선형 (best effort) 이라는것이다. 즉 UDP 소켓에의해보내진한메시지가목적지에도착하는것에대한보장이없다. 이사실은 UDP 소켓을사용하는프로그램은메시지의유실이나순서바뀜에대한대비책이있어야한다는것을의미한다.

UDPEchoClient.c 소켓생성및설정 If ((sock = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) DieWithError( socket socket() failed ); 하나의에코데이터그램을보냄 memset(&echoservaddr,, 0, sizeof(echoservaddr)); echoservaddr.sin_family = AF_INET; echoservaddr.sin_addr.s_addr = inet_addr(servip); echoservaddr.sin_port = htons(echoservport);

If (sendto(sock( sendto(sock, echostring, echostringlen,, 0,(struct sockaddr *) &echoservaddr, sizeof(echoservaddr))!= echostringlen) DieWithError ( sendto () sent a different number of bytes than expected ); 에코응답을받고출력 1. 메시지받음 fromsize = sizeof(fromaddr); If ((respstringlen = recvfrom(sock, echobuffer,, ECHOMAX, 0, (struct sockaddr *) &fromaddr& fromaddr,, &fromsize& fromsize))!= echostringlen) DiewithError( recvfrom recvfrom() failed ); 2. 메시지발신지조사 If (echoservaddr.sin_addr.s_addr(!= fromaddr.sin_addr.s_addr) { fprintf(stderr, Error: received a packet from unknow source. n ); exit (1); } 3. 받은스트링인쇄 echobuffer [respstringlen]] = 0 ; Printf ( Received: %s n,% echobuffer);

UDPEchoServer.c 소켓생성및설정 상수의어떤값이라도수용 echoservaddr.sin_addr.s_addr = htonl(inaddr_any); Echoclient.c echoservaddr.sin_addr.s_addr = inet_addr(servip); 서버 IP 주소입력

for (;;) { cliaddrlen = sizeof(echocltaddr); if ((recvmsgsize = recvfrom(sock, echobuffer, ECHOMAX, 0, (struct( sockaddr *) &echoclntaddr, &cliaddrlen)) < 0) DieWithError( recvfrom recvfrom() failed ); printf( Handling client %s n,% inet_ntoa(echoclntaddr.sin_addr)); } if (sendto(sock( sendto(sock, echobuffer, recvmsgsize,, 0, (struct( sockaddr *) &echoclntaddr, sizeof(echoclntaddr))!= recvmsgsize) DieWithError( sendto sendto() sent a different number of bytes than expected );

UDP 소켓을이용한송신및수신 TCP 와 UDP 의중요한차이점 : UDP 는메시지경계를유지한다 - Client 에서 send to() 로송신한데이터는 server 에서 recvfrom() 으로받아서다시 client 로되돌려준다. 이것은 client 의주소를 sendto() 로송신하기때문에그주소를다시 recvfrom() 으로돌려준다. 즉서로다른 recvfrom() 의호출은 sendto() 로부터의호출이아닌각각의 sendto() 로부터데이터가반환된다 - UDP 소켓은연결을필요치않으므로여러다른메세지들이들어올수있는데, 이메세지들은 FIFO(first first-in in first- out) 의수신버퍼에저장되기때문에각각의메세지들을구분할수있는메시지경계가필요하다. 이것은발신지주소로써구분할수있다.

TCP 와는다르게 UDP 는오류회복기능이없다. -이것은 TCP 처럼버퍼에자료를저장하고나서보내는것이아니라 sendto() 가호출된시점에메시지전송을위해하부채널로넘겨져이미떠났다는것을말한다. - recvfrom() 가호출이되었을때, 충분히큰버퍼가잡혀있지않다면그이상의데이터들은수신측에아무런통지없이사라질것이다. - recvfrom() 으로부터반환될수있는최대데이터량 : 65,507 bytes 이것은하나의 UDP 에의해운반될수있는가장큰용량이다.