본문 바로가기
멀티캠퍼스/Spring

20230829 (화)

by 세크레투스 2023. 8. 29.
반응형
SMALL

<<복습>>

<프로그램 운영방법>

1. 상속

2. Runnable 인터페이스

- 생성 Thread t = new Thread();

- 기동 t.start();

class MyThread extends Thread {

    void run(){ ... }

}

 

<TCP/IP 프로토콜(규약 - 약속된 규칙)>

1. IP(Internet Protocol)

- 장치간의 메세지 전송

- 누구에게 보내는 것인지? (대상 식별)

- 대상식별 번호 부여 (4byte 정수로 넘버링 -> ip주소라고 부름)

- 최대 40억개의 넘버링이 가능하다.

- 식별당 0~255개까지 넣을 수 있다.

- 국제기구 IP관리 : Net id(국제기구에서 관리, network 식별) + host id(네트워크에서 관리)

 

2. ip : ip 주소로 장치간에 전송/수송 처리

- port 번호 : 같은 기기에서 네트워크를 식별하기 위한 번호, 2byte 정수, 0~64k

- 값이 분실, 오류(값 변경), 중복될 수 있다

- TCP 프로토콜 : 신뢰성을 확보할 수 있다.

- UDP 프로토콜 : 신뢰성은 없지만, 심플하기 때문에 속도가 빠름. (VOD, AOD 등에서 사용)

 

<<오늘 배울 내용 - 네트웍 프로그래밍>>

1.  컴퓨터의 ip 주소 확인하는 방법 :

- window: ipconfig

- linux, mac : ifconfig

- 도메인, 네임서버

- 대표적인 서버는 이름을 사용한다.

- 포트 : 네트워크를 통해 데이터를 주고받을 때 사용되는 가상의 출구

* 0 ~ 65535 범위의 정수 번호로 식별됨

 

2. 네트워크 통신 프로그램

- 통신 프로그램의 작성 방법

* 한 프로그램은 연결을 요청하고 다른 프로그램은 그 요청을 받아서 연결을 맺습니다.

* 그 연결을 통하여 주고 받습니다.

- 용어 설명

* 클라이언트 : 연결 요청

* 서버 : 연결 받음

 

3. InetAddress로 IP주소 얻기

- java.net.InetAddress

- IP주소 표현한 클래스

- 로컬 컴퓨터의 IP주소

- 도메인 이름을 DNS에서 검색한 후 IP 주소를 가져옴

 

- Localhost? : 현재 프로그램이 실행되는 컴퓨터

이클립스에서 IP 주소를 불러올 때, 초기화는 불가능함. (new InetAddress(); -> X)

 

4. TCP(Transmission ControlProtocol)

- 특징

* 연결 지향적 프로토콜 -> 시간소요

** 가상의 경로(통신채널)을 통해서만 메세지가 전송 = 연결

* 통신 선로 고정 -> 전송 속도 느려질 수 있음

* 데이터를 정확하고 안정적으로 전달 (신뢰성을 확보)

 

5. UDP(User Develper Program..?)

- 전송경로가 설정이 안되어있어서 그때그때마다 바뀔 수 있음.

- 심플하고, 바로바로 전송하기 때문에 속도가 빠름.

- 대신, 에러체크는 안함.

 

6. 소켓에 대해서

- 소켓(socket) : 프로그램 내에서 보았을 때의 데이터 통신 출입구

* java.net API

* 서버 소켓, 클라이언트 소켓 두 종류

** ServerSocket, Socket

 

- ServerSocket (접속을 기다리는 쪽)

* 서버 프로그램에서만 사용되는 소켓

* 연결 요청을 기다리다가, 연결 요청이 오면 연결을 맺고 또 다른 소켓을 생성

 

- Socket (접속 요구, Client 소켓이라고도 함)

* 클라이언트 프로그램과 서버 프로그램에서 모두 사용되는 소켓

* 실제 데이터 전송에 사용되는 것은 이 소켓임

* 서버 프로그램에서는 서버 소켓에 의해 생성됨

* 클라이언트 프로그램에서는 직접 생성해야 함

 

7. ServerSocket 생성과 연결 수락

- ServerSocket 생성과 포트 바인딩

* 생성자에 바인딩 포트 대입하고 객체 생성

- 연결 수락

* accept() 메소드는 클라이언트가 연결 요청 전까지 블로킹 대기

* 연결된 클라이언트 IP 주소 얻기

8. 소켓을 이용한 통신

- 소켓을 이용한 클라이언트 프로그램과 서버 프로그램의 통신 과정

- 서버 소켓을 생성하고 사용하는 방법

* ServerSocket 객체를 생성합니다.

ServerSocket serverSocker = new ServerSocket(9000);

* ServerSockt 객체에 대해 accept 메소드를 호출합니다.

Socket socket = serverSocket.accept(); // 서버 소켓으로 연결 요청이 들어오면 연결을 맺고, 클라이언트

* 서버 소켓을 모두 사용하고 난 후에는 닫아야 합니다.

socket.close();

- 기본 골격

* try-with-resource()를 사용하는 경우 서버 소켓을 자동으로 close()

try(ServerSocket server = new ServerSocket(포트번호){

Socket socket = server.accept(); //접속 대기

}

 

9. 소켓을 이용한 통신 : 클라이언트/서버 프로그램

- 클라이언트 소켓을 생성하고 사용하는 방법

* Socket 객체를 생성합니다.

- 서버주소와 서버포트번호를 잘 줬음에도 실행이 안되는 경우 : 서버프로그램이 아직 실행 안된 경우, 선로가 끊긴 경우

* 데이터 송수신에 사용할 입력 스트림 객체와 출력 스트림 객체를 얻습니다.

* write 메소드와 read 메소드를 호출하여 데이터 송신 또는 수신합니다.

==> int data에 리턴되는 값 : read한 크기

- 클라이언트 소켓을 닫습니다.

 

- 기본 골격

==> 여기서 중요한 것 : w.flush();

 

10. Echo 클라이언트/서버 프로그램 작성

- 지금부터 작성할 예제가 하는 일

* Echo Client/Echo Server

11. Echo서버 프로그램의 개선

- 앞의 echo 서버는 1번만 서비스함

- 반복문을 이용해서 계속 서비스하기(정상 종료 불가)

- 앞의 echo 서버는 동시성 지원하지 않음

* 동시 접속자가 잇을 경우 1개만 서비스되고 나머지는 대기

* 스레드를 통해 동시선 지원 : 스레드가 클라이언트와 통신

- 스레드를 이용한 통신 골격

12. Http 프로토콜

- 주요 특징

* 문자 기반(ASCII 문자) 프로토콜

* 디폴트로 80 포트 사용

* 클라이언트가 서버로 요청을 보내면 서버는 요청 내용을 클라이언트로 응답 후 접속 해제 -> 서버측에서 접속에 대한 상태 유지 하지 않음 : stateless

- 이후 접속 시에 누구인지, 이전에 어떤 작업을 했는지에 대한 상태 정보 없음.

13. HTTP Request

- 요청 라인(Request Line)

* HTTP 메서드 방식 및 요청 URL과 프로토콜 정보

- 요청 헤더(Request Header)

* 웹 브라우저 정보, 언어, 인코딩 방식, 요청 서버 정보 등 추가 정보

- 요청 본체(Request Body)

* 요청에 필요한 내용

14. HTTP Response

- 상태 라인 : 응답 상태 코드 및 프로토콜 정보

- 응답 헤더 : 응답 처리 날짜, 인코딩 방식, 요청 서버 정보 등과 같은 추가 정보

- 응답 본체 : 응답에 필요한 내용. 일반적으로 HTML 문서

15. HTTP 분석

- 패키지명 : http

- HTTP 프로토콜 클래스

* HttpHeader

* HttpRequest

* HttpResponse

- HTTP 클라이언트/서버 프로그램

* HttpClient

* HttpServer

- GET, POST 확인용 웹 페이지

* login.html

 

<<JSP>>

<URL>

1. Uniform Resource Locator (자원을 지칭하는 유일한 표기법)

프로토콜://호스트번호:포트번호/경로/파일명

- 프로토콜 : http:

- 호스트번호 : www.naver.com  

 

네이버

네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요

www.naver.com

- 포트번호 : 80

- 경로/파일명 : /index.html

- 브라우저 주소창에 가면 볼 수 있는 것.

- Locator : 위치정보를 나타냄.

 

2. Client와 Server 구조

3. HTTP Request

- 요청라인

- 요청헤더

- 요청본체

 

4. HTTP Response

- 상태라인

- 응답헤더

- 응답본체

 

5. 웹 어플리케이션이란?

- 인터넷을 기반으로 

- Java : JSP/Servlet

- Python : Django

- Node : Express

 

6. JSP/Servlet

- 파일에 대한 요청 => index.html =>  ㅇㅇㅇㅇ (파일명이 달라진다고 해서 요청방법이 달라지진 않는다.) (정적파일, static파일)

- 요청할때마다 내용이 달라지는 페이지  (ex - ~~~ /travel/10, ~~~ /travel/page=2) (동적 파일, dynamic 파일)

* JSP, Servlet... 등

7. 웹 컨테이너(Web Container)

- JSP와 Servlet 컴포넌트를 관리하는 역할

- 웹 컴포넌트는 시작점이 없음

- 이벤트(웹 브라우저의 요청) 방식으로 동작

- 클라이언트의 요청에 따라 웹 컴포넌트를 생성하고 제거하는 메커니즘을 제공

 

8. 웹 컴포넌트

 

9. 개발 환경 설정

 

10. 서블릿의 이해

- JSP/Servlet(작은)

 

==> Application의 Command의 역할을 함, Map으로 관리함.

 

<HelloServlet 작성하기>

1. URL 매핑 문자열 입력

- 반드시 /로 시작

- 웹 접속 URL

http://서버IP번호:포트번호:포트번호/컨텍스트명/URL매핑명

http://localhost/ServletTest/Hello

 

- JSP와 Servlet의 장단점

==> 그래서 html 작성할 때는 JSP, java 작성할때는 Servlet을 씀.

 

<서블릿 개요>

1. 서블릿

- 웹 컨테이너에 의해 관리

- 다양한 클라이언트 요청에 의해 컨텐츠로 응답 가능한 자바 기반의 웹 컴포넌트

반응형
LIST

'멀티캠퍼스 > Spring' 카테고리의 다른 글

230831(목)  (0) 2023.09.01
20230830 (수)  (0) 2023.08.30
230828 (월)  (0) 2023.08.29
20230817 (목)  (0) 2023.08.17
20230816 (수)  (0) 2023.08.16