Learn/KH정보교육원

[KH정보교육원 당산] 17일차 ( 네트워크 , URL, Socket)

Dahoon06 2021. 4. 1. 16:51
728x90
반응형

서버(Server)와 클라이언트(Client)

=> 두 컴퓨터의 사이에 있어 서비스를 이용하는 사용자와 서비스를 제공하는 역할.

     // 사용하는 쪽 : 클라이언트

         제공하는 쪽 : 서버

Request : 클라이언트가 웹 브라우저를 사용하여 사용하고자 하는 페이지를 서버에 요청하는 과정

 

Response : 서버에서 요청받은 프로세스를 처리하기 위해 검색하고 해당 결과를 웹 브라우저에 송신

=> 웹 브라우저는 응답받은 정보를 일정 형식에 따라 화면에 표현 => HTML Tag 

                             ㄴ> HTML//XML

종류 설명
Web Server 웹 브라우저와 HTTP프로토콜을 사용하여 사용자의 요구에 따른 특정 서비스를 제공하는 서버
Mail Server 인터넷을 통해 사용자 간의 전자 우편을 주고 받는 서비스를 제공
FTP Server 서버 내에 파일을 업로드, 다운로드할 수 있도록 파일 관리 기능을 제공
Telent Server Terminal,텍스트로만 이루어진 창에서 특정 명령어를 통해 원격지 서버를 접속,관리
DataBase Server Data를 저장하고,원격지에서 접속할 경우 권한에 따라 열람,추가,수정,삭제 기능을 처리한다.

 

 

우리가 배울것 => Web Server : Tomcat

                         DataBase Server : Oracle

                         FTP Server : Git Hub

 


Web Application

=> 인터넷(외부통신), 인트라넷(내부통신) 통해 웹브라우저를 이용 ( 브라우저가 없으면 실행 불가능 )

: PC에 굳이 설치를 하지 않아도 온라인 상에서 배포가 가능 하므로 유지관리하기 편함

 

Web Application 기본 구조

 

 

웹앱 => 웹 브라우저용 어플리케이션

  ㄴ> PC, Mobile 기기 구분 없이 실행가능하다.(웹브라우저만 있다면)

  ㄴ> 발전 버전 : 클라우드 => AWS(Amazon Web Service), 세일즈포스, 에저(MS) => 데이터저장 + 솔루션

 

대표 브라우저 : 익스플로어,엣지(MS), 크롬(Google), 사파리(Apple)

                    크롬 기반 브라우저 : 웨일(naver), 삼성인터넷(samsung)

                    그밖의 : 파이어폭스, 오페라 (점유율이 낮음)

 

*브라우저와 홈페이지는 다른 개념!!

 

웹 표준 : 모든 브라우저에서 동일한 모습을 보이기 위한 규격

=> HTML5 / CSS3 / JavaScript

 

Web Server

=> 사용자에게 HTML페이지나,jpg,png같은 이미지HTTP 프로토콜(표준 프로토콜)을 통해 웹 브라우저에 제공하는 서버, 정적 (또는 동적) 인 요소들을 화면에 보여주는 역할

 

Apache : Tomcat( 환경설정 => XML문서로, 서버관련 데이터 => server.jar)

    ㄴ> Apache Software Foundation 에서 만든 서버로 HTTP 통신에 대한 여러 라이브러리를 제공

 

WAS : Web Application Server

사용자가 요청한 서비스의 결과를 스크립트 언어 등으로 가공하여 생성한 동적 페이지를 사용자에게 보여주는 역할

 

Tomcat

: Servlet과 JSP를 통한 동적인 웹 문서를 처리하기 위해 만든 웹 애플리케이션 서버

 

wlidfly => SpringFramWork으로 대체 중

: Jboss라고도 불리며, 톰캣이 제공하는 servlet container 뿐만 아니라, EJB container 를 별도로 제공하여 폭넓은 서비스를 구현

 

JEUS => 대형 컴퓨터( 기본 운영체제 UNIX/XENIX ) 흔히 서버 컴퓨터

: 국산 WAS, 대용량의 데이터 트랜잭션을 고성능으로 처리하며 개발 및 운영에 관한 기술 지원이 뛰어나다.

 


네트워크

클라이언트(Client)와 서버(Server)

=> 서버 : 클라이언트에게 네트워크를 통해 서비스를 제공하는 시스템

     클라이언트 : 서비스를 사용하는 사용자(시스템)

 

네트워크 관련 클래스

 

InetAddress Class  => 인터넷 주소에 관항 정보를 다루는 클래스

  ㄴ> Inet => Internet의 약자

: 생성자가 따로 없으며, InetAddress클래스의 정적(static) 메소드에서 정보를 받아오는 형식으로 사용

=> 클래스의 생성자는 하나만 존재하지만, 기본생성자의 접근제한자가 default 이기 때문에 new 연산자 객체를 생성할 수 없다.

 

package java.net;   

 

public class InetAddress {

 

          InetAddress(){   // default 생성자

 

         }

}

 

- 주요 메소드 -

리턴타입 / 메소드 설명
byte[]    getAddress() IP주소를 byte배열로 반환
static InetAddress[] // getAllByName(String host) 도메인명(host)에 지정된 모든 호스트의 IP주소를 배열로 반환
static InetAddress  getByAddress(byte[] addr) byte 배열을 통해 IP주소를 얻음
static InetAddress  getByName(String host) 도메인명(host)을 통해 IP주소 얻음
String  getHostAddress() 호스트의 IP주소를 반환
String  getHostName() 호스트의 이름을 반환
static InetAddress  getLocalHost() 지역호스트의 IP주소 반환
boolean  isMulticatAddress() 멀티캐스트 주소인지 확인
boolean  isLoopbackAddress() loopback 주소인지 확인

 

URL Class

:URL이란 인터넷의 접근 가능한 자원의 주소를 표현하는 형식

 

형식 => 프로토콜, 인터넷 주소, 포트 번호, 파일 경로 등을 사용해 표현

           

예시)    프로토콜://인터넷주소[:포트번호][/디렉토리[/파일이름]][?쿼리스트링]

            http :// about.kbs.co.kr [ ] <= 생략 가능하기에 괄호로 묶여있는것

            http : // localhost : 8080<-포트번호 / index.html<-파일명

            http : // localhost : 8080<-포트번호 / log<-디렉토리명 / login.html<-파일명

            http : // localhost : 8080<-포트번호 / log<-디렉토리명 / login.html<-파일명 ? id = qweqwe & pw = asfs

                                                                                                            id pw : 파라미터(parameter)명

                                                                                                  qweqwe asfs : 파라미터(parameter) 값

localhost => 127.0.0.

 

프로토콜 : 자원에 접근하기 위해 서버와 통신에 사용되는 통신규약 (보통 http / 보안이 필요할때 https )
인터넷주소(IP) : 자원을 제공하는 서버의 주소(이름)
포트번호 : 통신에 사용되는 서버의 포트번호
디렉토리(폴더), 파일이름 : 자원이 저장되어 있는 서버상의 위치
쿼리스트링 : ‘?’ 문자 뒤에 오는 통신에서 사용되는 매개변수
                      요청대상파일 ? 파라미터명 = 파라미터값
                      요청대상 파일 ? 파라미터명 = 파라미터값 & 파라미터명 = 파라미터값 & ...
* 파라미터값은 항상 문자열로 전달

 

 

URL Class 생성자

생성자 설명
URL(String protocol, String host, int port, String file) protocol : 프로토콜
host : 컴퓨터 이름
port : 포트 번호
file : URL에 존재하는 자원(파일)의 이름
urlString : 모든 요소를 포함한 문자열
URL(String protocol, String host, String file)
URL(String urlString

 

 

URL Class 메소드 

 

메소드 설명
String getFile()  URL 파일 이름 반환
String getHost()  URL 호스트 이름 반환
String getPort() URL 포트 이름 반환
String getProtocol()  URL 프로토콜 이름 반환
String toExternalForm()  전체 URL 문자열 반환
URLConnection openConnection()  URL 연결 후 URLConnection 객체 반환
InputStream openStream()  URL 정보를 읽기 위한 InputStream 객체 반환

 

 

 

URL메소드 사용 예시

 

출력값

 

 

URL Connection Class

: 어플리케이션과 URL간의 통신 연결을 위한 작업을 하는 클래스

URL내용을 읽어오거나, URL 주소에 GET/POST 메소드 형식으로 데이터를 전달할 때 사용

추상클래스로써 자신의 객체를 생성할 수 없고 URL openConnection()을 통해 사용

 

URL -> openConnection() -> URLConnection -> getInputStream -> InputStream(내용읽기) 순으로 처리

 

URLConnection을 이용하면 입력 스트림과 출력 스트림 모두 개설할 수 있다

 

 

URLConnection 메소드 예시

 

500개 문자 출력

 


TCP

 

Socket

: 네트워크에 연결된 컴퓨터간에 데이터를 주고 받을 때 사용하는 도구(소프트웨터 개발 도구)

"자바"에서는 TCP 소켓 통신 (외부 통신)=> Socket Class, ServerSocket Class 제공

                 UDP 통신(내부통신) => DatagramPacket Class, DatagramSocket Class 제공

 

 

Socket 주요 생성자

생성자 설명
Socket(InetAddress address, int port 주어진 IP address와 포트를 가지고 소켓 생성
Socket(String host, int port) 주어진 host와 포트를 가지고 소켓 생성

 * socket 객체 생성 시 2가지 예외 발생

 

1. Host를 찾을 수 없거나 Port가 열려 있지 않은 경우 UnknownHostException 예외 발생
2. Network 실패나 방화벽 때문에 서버에 접근할 수 없을 때 IOException 예외 발생

 

 

Socket 주요 메소드

메소드 설명
InetAddress getInetAddress() InetAddress로 IP주소 반환
InputStream getInputStream()  입력 스트림 반환
InetAddress getLocalAddress() 로컬 주소 반환
int getPort()  포트 반환
boolean isClosed()  소켓이 닫혀있으면 true, 열려있으면 false 반환
boolean isConnected()  소켓이 연결되어 있으면 true, 비 연결이면 false 반환
void setSoTimeout(int itmeout)  소켓 객체의 timeout시간을 설정
void close()  객체 닫기

 

ServerSocket Class

: TCP 서버 소켓을 의미

클라이언트의 TCP연결을 받기 위해서는 ServerSocket클래스의 객체를 생성해야한다.

 

생성자 설명
ServerSocket(int port)  주어진 포트로 서버소켓 생성
ServerSocket(int port, int backlog)  주어진 포트로 서버소켓을 생성하고 연결 대기 큐의 크기를 지정

 

ServerSocket 메소드

 

메소드 설명
Socket accept() 클라이언트의 연결 요청이 들어올 때까지 대기하다가 연결 수립이 되면 클라이언트와 통신 가능한 Socket 객체를 반환
void close() ServerSocket 닫기
int getLocalPort()  청취하고 있는 Port 번호 반환
int getSoTimeout() accept()  메소드가 유효할 수 있는 시간을 반환. 0이면 무한대
boolean isClosed()  객체가 닫혀있는지 여부 반환
void setSoTimeout(int timeout) accept()  메소드가 유효할 수 있는 시간을 설정

 

 

실습)

 

데이터를 보내고 받는 연습

 

 

 

입력된 값을 받는 메소드
값을 보내는 메소드

 

서버를 담당하는 클래스
클라이언트를 담당하는 클래스

 

반드시 서버를 먼저 실행 시키고 클라이언트 실행!!

 

출력값

입력값 주고 받기 

728x90
반응형