본문 바로가기

수업

[20일차] 2021.01.06 네트워크 프로그래밍

1교시: 자바 언어로 어떻게 네트워크 프로그래밍을 할까? - 감만 잡아도 무관하다. 

OSI 모형

Client : 서버에 요청한다.

Server : 요청에 응답한다. 

 

Protocol: 규약

the system of rules and acceptable behaviour used at official ceremonies and occasions

 

OCCASION | Cambridge English Dictionary에서의 의미

occasion 의미, 정의, occasion의 정의: 1. a particular time, especially when something happens or has happened: 2. a special or formal…. 자세히 알아보기.

dictionary.cambridge.org

네트워킹 프로토콜을 구현하기 위해 프로토콜 소프트웨어 모듈은 기계의 운영 체제에 구현 된 프레임 워크와 인터페이스된다. 이 프레임 워크는 운영 체제의 네트워킹 기능을 구현한다. 프로토콜 알고리즘이 휴대용 프로그래밍 언어로 표현될 때 프로토콜 소프트웨어는 운영 체제에 독립적일 수 있다. 가장 잘 알려진 프레임 워크는 TCP / IP 모델과 OSI 모델이다.

 

네트워크를 사용하기 위해서는 기본 프레임워크가 제공된다. 

TCP/IP 모델과 OSI 모델이 있다. 

 

- HTTP: 가장 흔하게 사용하는 프로토콜

- OSI 모델을 단순화 한것이, TCP/IP 모델이다. 

- TCP 프로토콜을 베이스로 그 위에 올라가는 프로토콜이 응용 프로토콜이 HTTP이다. 

- UDP 프로토콜 기반으로 올라가는 응용프로토콜이 존재한다. 

- TCP 프로토콜을 기반으로 어떤 응용 어플리케이션을 만들 수 있다. 

- 전송 layer TCP 

 프로그램 간에 일련의 옥텟(자료)을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다. 클라이언트와 서버가 데이터를 송수신 할때, 안정적으로 순서대로 에러없이 교환할 수 있게 해준다. 

(안전하다) - 데이터의 안전성을 보장

데이터를 보내고, 데이터가 제대로 전달되었는지확인을 하게 되어 있다. 

단점: 처리속도가 느리다.

 

 

-UDP 프로토콜 : 데이터의 안전성을 보장하지 못한다. 데이터를 중간에 잃을 위험이 존재한다. 

장점> 처리 속도가 빠르다.

 

>>OSI 계층을 공부하세요. / TCP, UDP 정리하세요. 

 

OSI 계층을 단순화 한것이, TCP-IP이다.

Ip: Internet Protocol

 

깊이있게 공부하실 거면, 따로 공부하세요. 

 

프로토콜: TCP/ UDP 프로토콜 둘 중에 골라서 사용 가능. 이번 수업에서는 TCP 프로토콜을 이용함. (안전한 것이 우선이다.)

모든 컴퓨터에는 IP가 존재한다. PORT

IP: 네트워크에서 컴퓨터를 구분해주는 주소이다.  (빌딩 주소)

PORT: IP의 세부주소 (1층, 2층, 3층... 6층)   (호수) , 한 컴퓨터에서 쓸 수 있는 포트 번화 0~6535 사용이 가능하다. 

0~1024는 예약포트이다. (권장하지 않는다.) 이거보다 더 큰 포트 번호를 사용해야 한다. 사용자 포트

 

(1) 서버: 포트(Port: 항구)를 열기  //Serveer Socket 객체 생성 후, 포트를 매개 변수로 넣으면 된다.

(2) 서버: 클라이언트의 접속 기다리기 //accept메소드를 이용하면 된다.

(3) 클라이언트: 서버에 접속 // 커넥션(Connection)이라 부른다.

(3-1) 서버 IP와 서버 접속번호를 알아야 접속이 가능하다. 

(4) 소켓이 생성 (자동 생성 - 서버)

(5) 소켓 생성 (자동생성 - 클라이언트) //소켓: 네트워크의 끝 점. 종이컵 전화기의 종이컵의 역할. Connection end point

(6) 서버에게 데이터 송신

(6-1) 소켓을 통해, 데이터를 보내기 위해선 데이터 출력 스트림을 얻어야 한다. 소켓과 연결된 스트림은 OutputStream 이다. write메소드를 이용해, 데이터 쓰기가 가능하다. // OutputStream이 쓰기가, 어렵다면 가공을 하면 ㅚㄴ다. 

(7) 클라이언트에서 받은 데이터를 수신

(8)소켓과 연결된 입력 스트림

(8-1) 불편하다면, DataInputStream 사용하면 된다.

(9) 데이터 송신

(10) 접속 해제 // 연결 끊기, 소켓의 close() 메소드를 활용하면 된다.

 

한쪽에서 다른 데에서 받고, 받으면 다시 보내고 이렇게 데이터의 송수신이 양방향으로 이루어진다. 

 

오늘은 프로젝트를 두 개 만든다

1. 서버용

2. 클라이언트용

 


2교시

1. 네트워크의 프로그래밍에서는 예외가 중요하다. 

언제 어디에서 예외가 발생하는지가 중요하다.

존재하지 않는 IP - UnknownHost Exception

없는 Port - 

 

ConnectException: 서버가 켜지지도 않은 상태에서 접속을 하려고 할 때, 

TCP 프로토콜은 : 서버의 포트를 열고, 접속 기다리는 작업이 선수행된다. 

만약, 클라이언트가 먼저 접속을 하려 한다면 예외가 발생한다. 

예외처리에도 업캐스팅이 존재한다. ConnectExcpetion은 IO Excpetion의 자녀이다. 그래서 업캐스팅이 발생했다. 

접속을 하려하는데, 문제가 발생한 경우를 모두 지칭한다.

1) 잘못된 IP, 잘못된 Port 번호 

- 접속 실패의 모든 경우를 의미한다. 

ConnectExcpetion은 접속 자체가 되지 않는 경우를 지칭한다. 

 


ConnectException: 접속이 아예 되지 않음

SocketException: 접속을 성공했다가,강제로 연결이 끊어진 경우

 

SocketException: 부모 Exception

ConnectException: 자녀 Exception 

자식이 먼저 catch 되고, 부모가 catch되어야 한다. 

 

여러개의 catch가 있을 경우에는 자식의 exception이 부모보다 앞에 위치해야 한다. 

 


5교시

 

'수업' 카테고리의 다른 글

[19일차] 2021.01.05  (0) 2021.01.05
[17일차] 2021.01.04  (0) 2021.01.04
[2020.12.17] static  (0) 2020.12.17
[5일차 예습] 정렬  (0) 2020.12.13