TCP/IP Protocol - JAVA

50 %
50 %
Information about TCP/IP Protocol - JAVA

Published on February 23, 2016

Author: CooddyCoobook

Source: slideshare.net

1. TCP/IP Protocol 제작자 : 쿠디(cooddy) 제작자 Blog : Tistory Blog : http://cooddy.tistory.com/

2. TCP/IP Protocol • 프로토콜(Protocol) : 통신 규칙 • 현재 TCP/IP Protocol이 주류 • TCP/IP Protocol이란? • TCP/IP Protocol이란 TCP프로토콜 + IP프로토콜을 함께 부르는 용어 • IP 프로토콜은 네트워크에 연결된 개개의 컴퓨터에 유일한 주소를 붙이는 규칙을 정의한 프로토콜 • IP 프로토콜에 의해 컴퓨터에 붙여지는 주소를 IP 주소(IP address)라고 함 • IP주소는 인터넷 통신 서비스 회사에 비용을 지불하고 할당 • 집에서 개인적으로 인터넷 통신 서비스에 가입할 때는 보통 하나의 IP 주소를 할당 • IP주소 확인을 위해서는 윈도우의 경우 cmd 창에서 “ipconfig” 를 치면 나옴 • IP주소 • 고정IP주소 : 컴퓨터 재부팅해도 항상 같은 IP주소가 나옴 • 유동IP주소 : 컴퓨터를 재부팅하면 다른 IP주소가 나옴 • IP주소는 컴퓨터들을 유일하게 식별하기 때문에 통신 프로그램이 대상 컴퓨터를 찾을 때 IP주소를 이용 • But, 통신 프로그램이 실질적으로 데이터를 교환하는 대상은 컴퓨터가 아닌 프로그램이기 때 문에, 네트워크 통신을 하기 위해서는 상대 컴퓨터에서 작동 중인 여러 프로그램들 중 하나를 식별해야 함 •  식별은 OS에서 관리하는 포트(Port)를 통해 가능

3. TCP/IP Protocol • 포트(Port)란? • 네트워크를 통해 데이터를 주고받는 가상의 출입구 • TCP/IP를 지원하는 OS에서는 포트마다 번호를 붙여서 관리 • 번호는 0~65535범위 • IP 주소와 함께 포트번호를 사용하면 통신할 컴퓨터의 프로그램을 찾을 수 있음 • 같은 포트를 여러 프로그램이 사용하려고 하면 안 됨 • 통신 프로그램을 작성할 때는 다른 프로그램이 사용하고 있는 포트 번호를 확인 • 포트번호 확인법 • OS에서 ‘netstat’ 명령을 실행해서 확인 • 주의점 • 0~1023 까지는 시스템이 사용하는 포트번호 • 1024 이상의 포트 번호 중 하나를 선택해야 함 • 도메인(Domain) • 숫자로 구성된 IP주소는 기억이 어렵기 때문에 도메인 이름을 등록해서 IP 주소 대신 사용하기도 함 • 이런 이름은 도메인을 관리하는 공인 기관에 대가를 지불하고 등록 해야 함

4. TCP/IP Protocol을 이용한 데이터 교환 • TCP/IP 프로토콜로 통신하는 두 프로그램은 데이터 교환전에 먼저 연결(Connection)을 맺어야 함 • 연결을 맺기 위해선 한 프로그램은 포트를 열어놓고 연결 요청이 오기를 기다려야 함  서버 프로그램 • 그리고 다른 프로그램은 그 포트로 연결 요청을 보내야 함  클라이언트 프로그램 클라이언트 프로그램 서버 프로그램 1) 포트를 열어놓고 연결 요청이 들어오기를 기다림 2) 서버에게 연결 요청 포 트 포 트 3) 연결이 맺어지면 연결 통로를 통해 데이터를 주고받을 수 있음

5. TCP/IP 통신 프로그램의 작성 방법 • 서버와 클라이언트는 연결을 맺을 때도 포트를 사용해야 하고, 데이터를 교환 시에도 포트를 사 용해야 함 • But, 포트는 운영체제 관점에서 보았을 때 데이터 통신 출입구이고, 프로그램 안에서는 직접 사용 할 수 없음 • JAVA 프로그램에서는 포트 사용을 위해 소켓(Socket)을 사용 • 클라이언트 소켓 & 서버 소켓 • 서버소켓 • 서버 프로그램에서만 사용되는 소켓 • 이 소켓은 포트를 통해 연결 요청이 오기를 기다리다가, 연결 요청이 오면 클라이언트와 연결을 맺고 또 다른 소켓(클라이언트 소켓)을 만듬 • 실제로 데이터 전송에 사용되는 것은 이 새롭게 만들어진 소켓(클라이언트 소켓)임 • 클라이언트 소켓 • 서버 프로그램으로 연결 요청을 하는 일과 데이터 전송을 하는 일을 둘 다 함

6. TCP/IP 통신 프로그램의 작성 방법 클라이언트 프로그램 서버 프로그램 1) 서버 소켓을 통해 연결 요청이 들어오기를 기다림 2) 서버에게 연결 요청 포 트 포 트 소 켓 서버 소켓 클라이언트 프로그램 서버 프로그램 3) 서버 프로그램은 서버 소켓이 만든 소켓을 통해 데이터를 주고 받음 4) 클라이언트 프로그램은 연결 요청에 사용한 소켓을 통해 데이터를 주고 받음 포 트 포 트 소 켓 서버 소켓 소 켓 소켓을 이용한 클라이언트 프로그램과 서버 프로그램의 통신 과정

7. 클라이언트/서버 프로그램의 작성 • 서버 소켓과 클라이언트 소켓은 자바 프로그램 안에서 모두 객체로 표현 • 서버 소켓 : java.net Package에 있는 ServerSocket 클래스 • 클라이언트 소켓 : java.net Package에 있는 Socket 클래스 • 서버 소켓을 생성하고 사용하는 방법 • 서버 소켓을 생성할 때는 생성자 파라미터로 포트 번호를 넘겨주어야 함 • 이때 넘겨주는 포트 번호는 다른 프로그램이 사용하지 않는 포트 번호라야 함 • ServerSocket serverSocket = new ServerSocket(9000); • accept() 함수 • ServerSocket 객체의 함수, 클라이언트로부터 연결 요청이 오기를 기다리는 기능 • Socket socket = serverSocket.accept(); • accept 함수는 포트를 열어두고 연결 요청이 오기를 기다리다가, 연결 요청이 들어오면 클라이언트 프로그램과 연결을 맺고 그 후 그 결과를 가지고 클라 이언트 소켓을 생성하여 리턴 포트 번호 서버 소켓으로 연결 요청이 들어오면 연결을 맺고, 클라이언트 소켓을 생성해서 리턴하는 함수

8. 클라이언트/서버 프로그램의 작성 • 클라이언트 소켓을 생성하고 사용하는 방법 • Socket 클래스의 생성자를 이용하여 클라이언트 소켓을 직접 생성해야 함 • 파라미터(인자)로는 서버 프로그램이 있는 컴퓨터의 IP주소와 포트 번호를 넘겨주어야 함 • Socket socket = new Socket(“219.153.21.14”, 9000); • Socket 클래스의 생성자를 호출하면 이 생성자 안에서 서버 프로그램으로 연결 요청이 전송되고, 그 결과 클라이언트 프로그램과 서버 프로그램의 연결이 맺어짐 • 클라이언트와 서버 프로그램은 소켓을 생성하는 방법은 다르지만, 일단 클라이언트 소켓이 생성 되고 난 다음에 그 소켓을 가지고 데이터를 주고받는 방법은 동일 • ※ 클라이언트 소켓을 생성할 때는 클라이언트 프로그램이 사용할 포트 번호를 넘겨줄 필요 없음 • 클라이언트 소켓이 생성되는 과정에서 OS로부터 사용되지 않는 포트 번호를 자동으로 할당받기 때문 서버 프로그램이 열어 놓은 포트 번호 서버 프로그램이 있는 컴퓨터 IP 주소

9. InputStream/OutputStream • getInputStream()/getOutputStream() • getInputStream() : 메시지 수신에 사용할 입력 스트림 리턴(InputStream을 가져오는(get) 함수) • InputStream in = socket.getInputStream(); • getOutputStream() : 메시지 송신에 사용할 출력 스트림 리턴(OutputStream을 가져오는(get) 함수) • OutputStream out = socket.getOutputStream(); • out.write(data);  파라미터로 넘겨준 데이터를 송신 • int data = in.read();  수신된 데이터를 읽어서 리턴 • close() 함수 : 데이터의 전송을 모두 마친 다음에는 클라이언트 소켓을 닫아야 함 • socket.close(); • serverSocket.close();  서버 소켓도 마찬가지로 close 함수를 호출해서 닫을 수 있음 • ※ 소켓을 사용하고 나서 닫지 않으면, 운영체제로부터 할당받은 포트번호가 해제되지 않기 때문 에 다른 프로그램이 그 포트 번호를 사용할 수 없는 상태로 남아 있게 됨

10. 클라이언트/서버 프로그램 작성하기 TCP/IP 프로토콜에서는 데이터 전송의 기본 단위가 바이트이기 때문에, 문자 데이터를 전송하기 위해 송신할 문자를 바이트 타입으로 바꾸고, 수신된 바이트를 문자 타입으로 바꾸는 과정이 필요

11. InputStreamReader/OutputStreamReader Class(java.io) • InputStreamReader/OutputStreamReader • 앞에서 송신 할 때 문자열을 바이트 배열로 치환하고 수신할 때 바이트 배열을 문자열로 치환 하였음 • 이를 자동으로 해주는 클래스가 바로 InputStreamReader/OutputStreamReader • InputStreamReader Class • 입력된 바이트 스트림을 문자 스트림으로 바꿔주는 클래스 • 생성자에 소켓으로 부터 얻은 InputStream 객체를 넘겨주면, 네트워크로 수신된 데이터를 문자 스트림 형태로 읽을 수 있는 InputStreamReader 객체가 생성(데이터 배열  문자열) • InputStreamReader reader = new InputStreamReader(InputStream 객체); • OutputStreamReader Class • 문자열  바이트 배열로 바꿔주는 클래스 • But, 출력하는 데이터가 주로 문자열일 경우  PrintWriter 클래스를 사용하는 것이 더욱 편리 • PrinterWriter writer = new PrinterWriter(OutputStream 객체); • 이렇게 생성한 PrintWriter객체를 가지고 println(), print(), printf() 메소드를 호출하면 파라미터로 넘겨준 문자열이 바이트 스트림으로 변환되어 네트워크 로 전송

12. InputStreamReader/OutputStreamReader Class(java.io) • [CODE] [Client] [Server] 수신 받기 위한 버퍼

Add a comment

Related pages

TCP/IP protocol stack implementation using Java | Oracle ...

... such as JNode use TCP/IP protocol stacks implemented using Java. ... That definition does not allow for a TCP/IP stack implementation.
Read more

Advanced Java Programming TCP/IP networking in Java

Lee John Morris Advanced Java Programming Unit One: Networking Gareth Lee Department of Electrical and Electronic Engineering, University of Western Australia
Read more

TCP/IP UDP - Medien Wiki - Bauhaus-Universität Weimar ...

0-255: TCP/IP [[TCP/IP UDP]] Internet protocol suite-Anwendungen (System, reserviert) ... JAVA Socket . ServerSocket serverSocket = new ServerSocket (port
Read more

TCP/IP Protocol Architecture

TCP/IP protocols map to a four-layer conceptual model known as the DARPA model, named after the U.S. government agency that initially developed TCP/IP.
Read more

Network Protocol « Java - Programming Tutorials and ...

Network Protocol « Java. Java; Network Protocol; Network Protocol / Authenticator 7: Base64 Encoding 5: Compressed Connection 1: Crawler 3: DatagramPacket ...
Read more

TCP/IP : Java Glossary - Canadian Mind Products ...

TCP/IP : Java Glossary * ... However, they force the TCP/IP protocol to check if the other end is still alive. These are not part of the TCP/IP protocol.
Read more

Was sind Ports und Sockets? - Ask Doc TCP-IP!

protocol: UDP, TCP, IP, ICMP sockfd: das ist die Integer Zahl, die auf einen Socket Call zurückgegeben wird. Wie ein File Handle. Einen Socket an eine ...
Read more

Transmission Control Protocol – Wikipedia

Das Transmission Control Protocol (TCP, engl., zu deutsch Übertragungssteuerungsprotokoll) ist ein Netzwerkprotokoll, das definiert, auf welche Art und ...
Read more

TCP/IP Tutorial and Technical Overview - IBM Redbooks

TCP/IP Tutorial and Technical Overview December 2006 International Technical Support Organization GG24-3376-07
Read more