network programming version 2.1

14
Network Network Programming Programming Version 2.1 Version 2.1

Upload: helki

Post on 28-Jan-2016

59 views

Category:

Documents


0 download

DESCRIPTION

Network Programming Version 2.1. 학습목표. 소켓 프로그래밍의 개념을 이해한다 . 소켓을 사용하여 네트워크 프로그램을 구현할 수 있다. 1. 소켓 프로그래밍 개요. TCP/IP 프로토콜계층. TCP 응용프로그램. FTP, HTTP, Telnet, SMTP. UDP 응용프로그램. NFS, TFTP. 응용계층. 트랜스포트 계층. TCP. UDP. RARP. ARP. IP. ICMP. 인터넷계층. Hardware Interface. 네트워크 액세스계층. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Network Programming Version 2.1

Network Network

ProgrammingProgrammingVersion 2.1Version 2.1

Page 2: Network Programming Version 2.1

학습목표

소켓 프로그래밍의 개념을 이해한다 .

소켓을 사용하여 네트워크 프로그램을 구현할 수 있다 .

Page 3: Network Programming Version 2.1

응용계층

트랜스포트계층

인터넷계층

네트워크액세스계층

TCP응용프로그램

FTP, HTTP, Telnet, SMTP

UDP응용프로그램

NFS,TFTP

TCP UDP

RARP ARP IP ICMP

HardwareInterface

응용계층 (Application): 응용프로그램계층 , Telnet, FTP, SMTP, HTTP 등 전송방법 규정트랜스포트계층 (Transport) : 네트워크 종단 간 데이터전송을 지원하는 계층 (TCP/UDP 방식 )

인터넷계층 (Internetwork) : 인터넷 layer 로 불리며 IP,ICMP,ARP 등의 프로토콜로 구성네트워크 액세스계층 (Network Interface) : 데이터링크 레이어라고 불리며 , IEEE 802.2,ATM, X25 등의 전송방식을 포함

TCP/IP 프로토콜계층1. 소켓 프로그래밍 개요

Page 4: Network Programming Version 2.1

TCP 와 UDP 전송방식TCP/IP 프로토콜은 연결 지향방식인 TCP (Transmission Control Protocol) 와 비연결 지향방식인 UDP (User Datagram Protocol) 로 구성

신뢰성 100% 신뢰성 보장 신뢰성 없음

네트워크부하 많음 상대적으로 적음

사용 예 ) 신뢰성이 요구되는 FTP, Telnet, SMTP, POP3, HTTP 등에 사용

대용량 미디어 파일 전송( 물리적으로 100% 신뢰할 수 있는 케이블 )

TCP 방식 UDP 방식

TCP 방식 소켓프로그래밍 예

IPEndPoint ipep = new IPEndPoint (IPAddress.Any, 9999);Socket newsock = new Socket (AddressFamily.InterNetwork,SocketType.Stream,

ProtocolType.Tcp);Newsock.Bind (ipep);Newsock.Listen(10);Socket client = newsock.Accept ();

UDP 방식 소켓프로그래밍 예

IPEndPoint ipep = new IPEndPoint (IPAddress.Any, 9999);Socket newsock = new Socket (AddressFamily.InterNetwork,SocketType.Dgram,

ProtocolType.Udp);Newsock.Bind (ipep);

1. 소켓 프로그래밍 개요

Page 5: Network Programming Version 2.1

System.Net 네임스페이스

IP 주소관련 클래스

IPAddress IP 주소를 나타내는 클래스

IPHostEntry 하나의 호스트에 대한 상세 정보를 제공하는 클래스

Dns 호스트 이름을 IP 주소로 변환할 때 사용하는 클래스

IPEndPoint IP 주소와 포트로 네트워크 종단점 정보를 가져오는 클래스

클래스 설 명

IPAddress 클래스

IPAddress 클래스는 주로 맴버메소드인 Parse() 를 이용해 IP 주소를 문자열 형태로 입력 ex)IPAddress addr = IPAddress.Parse(“192.168.0.1”);

네 개의 예약필드를 포함하고 있음 .

Any 로컬시스템에서 사용할 수 있는 IP 주소를 나타낼 때

Broadcast 로컬 네트워크의 IP 브로드캐스트 주소를 나타낼 때

Loopback 시스템의 루프백 주소를 나타낼 때

None 시스템에 네트워크 인터페이스가 없음을 나타낼 때

예약 필드명 설 명

1. 소켓 프로그래밍 개요

Page 6: Network Programming Version 2.1

1. 소켓 프로그래밍 개요

using System;using System.Net;

class IPTest{

static void Main(string[] args){ IPAddress ex1 = IPAddress.Parse(“211.179.124.1”); IPAddress ex2 = IPAddress.Any; IPAddress ex3 = IPAddress.Broadcast; IPAddress ex4 = IPAddress. Loopback; IPAddress ex5 = IPAddress. None;

Console.WriteLine(“{0}={1}”, “ex1”, ex1); Console.WriteLine(“{0}={1}”, “ex2(Any)”, ex2);

Console.WriteLine(“{0}={1}”, “ex3(Broadcast)”, ex3); Console.WriteLine(“{0}={1}”, “ex4(Loopback)”, ex4); Console.WriteLine(“{0}={1}”, “ex5(None)”, ex5); }

}

사용 예 ) - 콘솔프로그램

Page 7: Network Programming Version 2.1

1. 소켓 프로그래밍 개요

//IPEndPoint 는 로컬주소를 바인드 하거나 소켓과 원격 주소를 연결할 때 사용 .

using System;using System.Net;

class ExIPEndPoint{

static void Main(string[] args){ IPAddress ex = IPAddress.Parse(“211.179.124.1”); IPEndPoint ie = new IPEndPoint(ex, 8000); Console.WriteLine(“ToString() : {0}”, ie.ToString());

Console.WriteLine(“AddressFamily : {0}”, ie.AddressFamily); Console.WriteLine(“Address : {0}”, ie.Port); Console.WriteLine(“MaxPort:{0} MinPort:{1}”, IPEndPoint.MaxPort,

IPEndPoint.MinPort); }

}

IPEndPoint 클래스

Page 8: Network Programming Version 2.1

2. 소켓 사용하기

Socket 생성 (System.Net.Sockets)

Socket sock = new Socket(AddressFamily af, SocketType st,

ProtocolType pt;)

Dgram Udp 비 연결 통신 (UDP) 통신

Stream Tcp 연결 지향 통신 (TCP) 통신

Raw Icmp ICMP(Internet Control Message Protocol)

Raw Raw 패킷 통신

ProtocolType 설 명SocketType

Page 9: Network Programming Version 2.1

3. Socket 클래스를 이용한 바이트 단위 채팅 프로그램

• Server

IPEndPoint ipep = new IPEndPoint(IPAddress.Any,7000); //7000 번포트열기

Socket server = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

server.Bind (ipep); // 채팅서버 바인딩 server.Listen (10); // 최대 10 개의 클라이언트 접속 대기 Socket client = server.Accept (); // 클라이언트 접속처리

• Client

IPEndPoint ipep = new IpEndPoint (IPAddress.Parse(ip), 7000);// 접속할 IP

Socket client = new Socket (AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);

client.Connect (ipep); // ip 에 해당하는 컴퓨터 7000 포트로 접속시도

Page 10: Network Programming Version 2.1

4. NetworkStream 클래스 이용 문자열 기반 채팅프로그램• Server

IPEndPoint ipep = new IPEndPoint (IPAddress.Any,7000); //7000 번포트열기

Socket server = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

server.Bind (ipep); // 채팅서버 바인딩 server.Listen(10); // 클라이언트 접속 대기 Socket client = server.Accept (); // 클라이언트 접속처리 NetworkStream stream = new NetworkStream (client); // 네트워크스트림 StreamReader reader = new StreamReader (stream); // 읽기 스트림 StreamWriter writer = new StreamWriter (stream); // 쓰기 스트림 string msg = reader.ReadLine (); // 상대방이 보낸 메시지 읽어오기 writer.WriteLine (); // 상대방에게 문자열단위로 데이터 보내기 writer.Flush (); // 버퍼에 있는 내용을 모두 전송

Page 11: Network Programming Version 2.1

4. NetworkStream 클래스 이용 문자열 기반 채팅프로그램

• Client

IPEndPoint ipep = new IpEndPoint (IPAddress.Parse(ip), 7000); // 접속할 IP

Socket client = new Socket (AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);

client.Connect (ipep) ; //ip 에 해당하는 컴퓨터 7000 포트로 접속시도

NetworkStream stream = new NetworkStream (client); // 네트워크스트림

StreamReader reader = new StreamReader (stream); // 읽기스트림 StreamWriter writer = new StreamWriter (stream); // 쓰기 스트림

string msg = reader.ReadLine (); // 상대방이 보낸 메시지 읽어오기 writer.WriteLine (); // 상대방에게 문자열단위로 데이터 보내기 writer.Flush (); // 버퍼에 있는 내용을 모두 전송

Page 12: Network Programming Version 2.1

5. C# 헬퍼 클래스를 이용한 채팅 프로그램 작성

• Server TcpListener server = new TcpListener(7000); //7000 번 포트 열기 server.Start(); // 서버프로그램 실행 TcpClient client = server.AcceptTcpClient(); // 클라이언트 접속대기 NetworkStream stream = client.GetStream(); StreamReader reader = new StreamReader(stream); StreamWriter writer = new StreamWriter(stream); string msg = reader.ReadLine(); writer.WriteLine(); writer.Flush();

• Client TcpClient client = new TcpClient(ip, 7000); NetworkStream stream = client.GetStream();

StreamReader reader = new StreamReader(stream); StreamWriter writer = new StreamWriter(stream);

string msg = reader.ReadLine(); writer.WriteLine(); writer.Flush();

Page 13: Network Programming Version 2.1

6. 활용 예제

인터넷 웹 브라우저 만들기특정 컴퓨터의 활성화된 포트번호 검사WebInfo ( 웹서버에 GET /index.html HTTP/1.0\r\n\n 전송 )

웹사이트분석 프로그램 (WebRequest/WebResponse)

파일 전송 프로그램 ( 소켓 채팅기반 )CTOC_FILE_TRANS_INFO ( 전송할 파일정보 )

CTOC_FILE_TRANS_YES ( 파일 전송 수락 )

CTOC_FILE_TRANS_NO ( 파일 전송 거부 )

7500 포트이용

이모티콘 채팅 프로그램파일전송 /이모티콘멀티채팅SMTP 프로토콜을 이용한 전자메일

Page 14: Network Programming Version 2.1