Network Programming(1)

Slides:



Advertisements
Similar presentations
6 장. 네트워크 개론 네트워크 장비, 프로토콜, 통신망. 개요 네트워크란 ? 네트워크의 종류 데이터전송방식 네트워크 장비 프로토콜의 종류 IP 주소체계 네트워크 토폴로지 통신망 네트워크진단 명령어.
Advertisements

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www. nms4you.com 1 AMAN2002 추가 기능 실습 Chapter 13:
Chap15 네트워킹 Section 1 : 네트워킹의 개요와 java.net 패키지 Section 2 : 인터넷 주소와 URL
任員 在·不在 案內 시스템.
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
28강 JAVA 입출력(I/O) 알아보기 - 입출력(I/O) 이란? - JAVA 입출력 API(Input~, Output~)
Java Socket 통신 이개혁 정대준.
Chapter 03. 네트워크 보안 : 길을 지배하려는 자에 대한 저항
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
2 장 인터넷의 구성 및 접속.
3 장 인터넷 서비스.
Network Lab. Yong bae, Kim
10장. 메일 서버의 설치와 운영.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
정보활용 능력과정 경일대학교 컴퓨터공학과 김 현성
8장. 네트워크 프로그래밍 /*컴퓨터 네트워크 프로그래밍 -김화종 저- 참조 */
Chapter 06. 프로토콜.
멀티 디바이스 컨텐츠 제공을 위한 안드로이드 동기화 시스템
제14장 원격 메소드 호출 김 기 환. 조 명 휘.
22 장 프로세스간 전달 : UDP와 TCP 22.1 프로세스간 전달 22.2 사용자 데이터그램 프로토콜
Dept. of Computer Engineering, Hannam Univ. Won Goo Lee
5 익셉션 처리.
서버의 종류와 기능 환경공학과 권진희.
Network 네트워크 이론 및 실습 TCP / IP 4장.
10. About TCP / IP SPARCS 08 우성필.
Internet 및 EC 관련 기술들.
Chapter 02 네트워크에 대한 이해.
NAC Test 시나리오 내부단말 통제 보안 BMT 시나리오
JAVA 프로그래밍 12장 네트워킹(Networking).
10장 SafeTalk 시스템 소프트웨어 연구실 성순화 이재일
자바 5.0 프로그래밍.
17장 네트워크 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
명품 JAVA Programming 제 16 장 네트워크.
Processing resulting output
Hadoop 김연왕
Chapter 05 목록화.
세미나.. NETWORK??!! 저자 : 장경칩 도전하라 창조의 세계로(SINCE 1992) - 장경칩.
Access Control Lists Access Control List
Network Programming Version 2.1.
Department of Computer Engineering
중간 결과 보고 ( Server & Client )
3부 해킹 전 정보 획득 Chapter 6. 풋프린팅과 스캔
TCP/IP와 인터넷 제 1 장 인터넷 개요 및 역사.
주소록 프로그램.
JDBC (Java Database Connectivity)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
입출력 CHAPTER 12 Section 1 java.io 패키지 개요 Section 2 파일과 디렉터리
P2P를 연결을 위한 여러기술 휴즈플로우 이재동 예전에 간략하게 크로스 플랫폼 p2p를 이야기한적이 있었는데요
네트워크와 소켓 프로그래밍 Chapter 01. * 학습목표 TCP/IP 프로토콜의 동작 원리를 개관 소켓의 기본 개념을 이해
멀티 쓰레드 기반의 채팅 프로그램 문성영 김현진 학번 이름 장용하 차희진 연구제안서.
OSI 모델 OSI 모델의 개념과 필요성 OSI 모델의 데이터 전송 과정 OSI 모델 7계층 한빛미디어(주)
Part 04-3 Windows 2000 Server IIS Outlook Express 도메인 사용 관리자
Transmission Control Protocol (TCP)
User Datagram Protocol (UDP)
Chapter 04. OSI 참조 모델.
TCP/IP 네트워크 구조 TCP/IP 개요 TCP/IP 프로토콜 한빛미디어(주).
MAIL CLIENT 김창우 윤성훈 이경재.
IP변경 요청 올더게이트.
myfood.com 상명대 맛집 홈페이지 구축 제안서
Chapter 16 Socket Interface.
기술가정 2학년 2학기 4.컴퓨터와 생활 > 2) 인터넷의 활용 > 1/7 인터넷이란 무엇일까.
자바 5.0 프로그래밍.
Internet Computing KUT Youn-Hee Han
제 11장 User Datagram Protocol(UDP)
웹 기획 강의(8) PowerYouth.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
Part TCP / IP 1. TCP / IP 프로토콜 2. 기본 프로토콜.
Internet 인공지능연구실
Department of Computer Engineering
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

Network Programming(1)

Network의 기본 사항(1) 통신의 3대 요소 TCP (Transmission Control Protocol) 가장 많이 사용하는 통신 방식. 전화 통신과 유사 양방향의 stream 통신을 제공하는, 신뢰성 있는 연결 지향형 통신 방식 양방향 : client와 server가 동시에 존재해야만 통신이 이루어진다는 의미 신뢰성 : 양단에서 data를 주고 받을 때 data의 유실없이 정확히 주고 받을 수 있다는 의미. 문제가 있으면 문제가 있다고 data를 전송하는 쪽에 패킷을 보낸다. 연결 지향형(connection oriented) : client와 server가 연결이 이루어져야 통신이 가능하다는 의미

Network의 기본 사항(2) UDP (User Datagram Protocol) 비신뢰적, 비연결지향형 통신 우리가 TV를 시청하는 방식과 유사 비신뢰적: 통신 중에 data가 유실될 수 있다는 의미. TV를 볼 때 방송국 사정으로 잡신호가 들어가 화면이 고르지 않을 때가 있다. 그러나, 너무 오랫동안 그렇지 않다면 TV를 보는데 지장이 없다. 즉, data가 조금 유실되더라도 큰 문제가 되는 것은 아니다라는 말이다. 비연결지향형 : client와 server가 연결이 되지 않은 상태에서도 data를 보낼 수 있음. 우리집 TV가 고장났다고 해서 방송국에서 방송을 중단하는 것은 아니다. 방송국에서는 무조건 data를 전송하고 data를 받고 안받고는 별도의 문제이다. 우리가 TV를 볼 때 방송국 사정으로 잡신호가 들어가 화면이 조금 흔들리거나 "지지지지"하는 소리가 날 수 있다. 즉, TV에 정확한 data가 전달되지 못한 경우이다. 그러나 TV를 보는데는 전혀 지장없다. 물론 너무 오랫동안 그렇다면 문제가 되겠지만... 즉, data가 조금 유실되더라도 큰 문제가 되는 것은 아니다라는 말이다. 생각해 보라. 우리집 TV가 고장났다고 해서 MBC 9시 News 방송이 중단되는 것은 아니다. 우리집 TV가 고장이 났건 안났건 방송국에서는 무조건 data를 전송한다. data를 받고 안받고는 나중의(별도의) 문제인 것이다. 여러 면에서 UDP 통신과 TCP 통신은 매우 다르다.

Socket(1) Socket이란? 서버와 클라이언트가 서로 특정한 규약을 사용하여 데이터를 전송하기 위한 논리적인 연결 방식 여러 통신 programming 방식 중의 하나 java에서 사용되는 TCP나 UDP 통신은 모두 socket을 이용한 통신이다. 이 socket이라는 것을 이용해서 양단(server, client)이 서로 통신한다

Socket(2) output stream에 data를 write했다면(ⓐ부분) 그 data는 server의 socket으로 이동하게 된다.(ⓑ부분) 이미 socket은 client의 socket과 연결되어 있기 때문에 server socket으로 온 data는 자동적으로 network을 타고 client의 socket으로(ⓒ부분) 넘어간다. client에서는 자신의 socket에서 input stream을 획득한 후, 그 input stream으로부터 data를 읽어 들인다. (ⓓ부분)

TCP network program(1) Server에 접속하기 위해 필요한 것 IP address, port number TCP/IP 프로토콜은 주어진 호스트 컴퓨터 내에서 여러 곳의 목적지로 데이터를 전송하기 위하여 서로 다른 포트를 사용합니다. 하나의 호스트는 여러 개의 어플리케이션을 동시에 접속할 수 있습니다. 한 클라이언트 컴퓨터가 특정 어플리케이션을 사용하기 위하여 호스트에 연결 할 경우, 그 어플리케이션에 접속할 포트가 사용됩니다. Port number : 한 server가 가질 수 있는 port 번호는 일반적으로 0 ~ 65535 . 그 중 0 ~ 1024 까지는 reserved(예약된) port이다. 따라서 0 ~ 1024까지는 System용으로 사용되기 때문에 일반적으로 programmer가 사용하지 않는다.

TCP network program(2) 잘 알려진 port number의 예 20 - FTP traffic (데이터) 23 - Telnet traffic 25 - SMTP (Simple Mail Transfer Protocol) traffic 80 - HTTP traffic 109 - POP2 (Post Office Protocol) traffic 110 - POP3 traffic 137 - NetBIOS 이름 서버 traffic 138 - NetBIOS 데이터그램 traffic 139 - NetBIOS 세션 traffic 161 - SNMP traffic 2049 - NFSD traffic 원래는 web browser에서 http://borame.cs.pusan.ac.kr에 접속하려면, http:// borame.cs.pusan.ac.kr:80을 써야 하지만, http는 port number가 80 default로 되어 있기 때문에, 포트 번호를 쓰지 않아도 된다. SMTP(Simple Mail Transfer Protocol) 란? 보내는 메일서버, Outgoing Mail Server 라고도 하며 어떠한 곳에 메일을 보낼때 사용하는 프로토콜입니다.네스케이프 메신저나 아웃룩 익스프레스 같은 각종 메일 클라이언트 프로그램을 이용하여 누군가 에게 e-mail을 보내면 그 메일은 SMTP 서버(보내는 메일 서버, Outgoing mailserver)로 일단 전송되며 이 SMTP 서버에서 "sendmail" 이라는 메일 서버 프로그램이 작동하여 해당 메일 주소로 메일을 보내게 되는 것입니다. 일반적으로 웹호스팅업체에서는 스팸메일 방지로 보내는 메일서버 (SMTP)를 지원하지 않고 있습니다. 마찬가지 알림넷에서도 SMTP를 지원하지 않고 있으니 ISP(인터넷 서비스 제공)업체를 이용하고 계시는 고객, 현재 모뎀이나 전용선을 통해 하이텔이나 데이콤,신비로등의 ISP업체를 통하여 인터넷을 이용하고 계시는 고객은 해당 SMTP(보내는 메일서버)를 입력하면 됩니다. POP(Post Office Protocol) 은? 메일 서버에 저장되어 있는 메일을 아웃룩 익스프레스나 네스케이프 메신저와 같은 메일 클라이언트 프로그램을 이용하여 자신의 컴퓨터로 가져오는 역할을 하는 프로토콜입니다. (받는메일서버)알림넷에서 발급받은 메일은 POP를 지원 하므로 받는 메일서버는 자신의 도메인을 입력 합니다.

TCP network program(3) 여러 port number를 쓰는 이유 한 개의 IP Address를 동시에 여러 명이 접속할 수 있게 해 준다

TCP network program(4) - server import java.net.*; import java.io.*;   public class MyServer {             public static void main(String args[]) throws Exception {                         ServerSocket serverSocket = null;   Socket newSocket = null;                         String reply = "저의 이름은 Server입니다.";   OutputStream os;  DataOutputStream dos;                                   serverSocket = new ServerSocket(1111); //server가 1111번 port를 열고 client의 접속을 기다리겠다                         while (true) {                                       newSocket = serverSocket.accept(); // client를 기다림. demon                                      System.out.println("누군가가 접속했습니다.");                                      os = newSocket.getOutputStream();     dos = new DataOutputStream (os);                                      dos.writeUTF(reply); // UTF는 유니코드 표준 변환 포맷(Unicode Standard Transformation Format)                                      dos.close();      newSocket.close(); // server는 client가 접속한 socket을 일방적으로 끊어버렸다.                          }        } }

TCP network program(5) 6 line과 7 line에서도 socket을 선언하고, 이 socket들의 이름이 다른 이유는? server라는 것은 동시에 여러 client를 수용할 수 있어야 한다. 따라서 위의 그림처럼 Server가 여러 client의 접속을 처리할 수 있도록 ServerSocket이라는 것을 둔다. 이것은 일종의 listener역할을 한다 ServerSocket과 client의 Socket과 접속이 이루어지면 ServerSocket은 새로운 일반 Socket을 하나 생성하여 client의 요청을 그 쪽으로 돌린다(ⓑ 부분). 그리고 나서 ServerSocket은 다른 client의 요청을 계속 기다린다. 이런 방식을 이용하기 때문에 server에서는 여러 client의 요청을 처리할 수 있는 것이다.(demon)

TCP network program(6) - client import java.net.*; import java.io.*;    public class MyClient {               public static void main(String args[]) throws IOException {                           Socket newSocket;        InputStream is;         DataInputStream dis;      String receive = null;                           newSocket = new Socket(“***IP address***", 1111);                           is = newSocket.getInputStream();                           dis = new DataInputStream(is);                           receive = new String (dis.readUTF());                           System.out.println(receive);                           dis.close();                           newSocket.close();               } }