[Java] 2020.12.03. day_30 Network
2020. 12. 3. 17:05ㆍWeb_Back-end/Java SE
◎ 컴퓨터 환경 변화
- | 컴퓨터 환경 변화 |
1. 중앙집중식 | 서버 - 데이터, 화면 표시, 업무처리 단말기 - 서버로 요청보냄 ⇋ 응답받기, 서버가 제공하는 기능 사용 |
2. C/S | 서버 - 데이터, 업무처리 클라이언트 - 화면처리 ,, 고사양화 |
3. Wep Internet 환경 | - |
4. RIA | - |
◎ Network
- | Network | |
- |
- | 데이터를 주고 받기 위해 만들어진 통신망 컴퓨터에 의해 작동한다 |
C/S (Client Server) 프로그래밍 | 원격지에 존재하는 컴퓨터끼리 자원을 주고받는 프로그램을 작성하는 것 - Network위에서 동작 |
|
OSI 7Layer를 사용 | (실제는 3단계모델인 TCP/IP Model을 사용한다) Reference Model : 단계를 세분화하여 네트워크 계층을 이해하기 좋게 만든 모델 (물리계층, 데이터링크, 네트워크, 전송계층, 세션계층, 표현계층, 응용계층) |
|
HUB : | Computer들이 연결하는곳 (더미허브, 스위치허브) | |
OSI 7Layer | ||
자바에서 코딩가능한계층 |
응용계층 Application Layer |
사용자가 사용하는 프로그램 |
표현계층 Presentation Layer |
입력값이 어떻게 변화되어 컴퓨터에게 보여질지 (암호화) | |
세션계층 Session Layer |
어떻게 연결할지 (호 단위) : 가상연결 | |
전송계층 Transport Layer |
실제연결 P2P | |
- | 네트워크계층 Network Layer |
길찾기 |
데이터링크계층 Datalink Layer |
MAC, Data를 media에 어떻게 link 해줄 것인지 | |
물리계층 Physical Layer |
media로 연결 (유/무선) |
○ Protocol
- | Protocol |
Protocol (전송규약) | 데이터를 전송하기 위해 미리 정의해둔 형식 자바에서는 TCP와 UDP를 사용할 수 있다 |
TCP Transmission Control Protocol Socket, ServerSocket |
▸ 전화로 많이 비교 ▸ 속도가 느리다 (체크 - 오류검출) ▸ 한번에 전송하는 크기가 일정하다 (1Packet : 8bit) ▸ 과금이 편하다 |
UDP User Datagram Protocol DatagramSocket, DatagramPacket |
▸ 우편으로 많이 비교 ▸ 속도가 빠르다 (체크X - 오류검출X) ▸ 패킷의 크기를 개발자가 설정할 수 있다 (과금이 어렵다) ▸ 데이터가 전달되지 않을 수 있다 (패킷이 꼬일 수 있다) ▸ 화상채팅, 게임 |
◎ Java Network 프로그램
- | Java Network 프로그램 |
- | 컴퓨터끼리 연결하는 프로그램 |
cmd 명령프롬프트에서 관리자권한으로 열기 netstat -ab 입력하면 지금 내 컴퓨터의 프로토콜주소와 상태를 볼 수 있다 |
|
java.net 패키지에 관련클래스가 제공 | |
TCP / UDP 프로토콜을 사용하는 프로그램만 작성할 수 있다 (Protocol 자체의 개발은 자바에서 할 수 없다) |
|
Socket 프로그램 (컴퓨터끼리 연결만 수행 : 데이터를 주고 받기 위해서는 IOStream을 사용) |
|
port | 데이터를 주고받기 위해 컴퓨터에서 여는 문 0~65535 사이의 포트를 연다 |
Server | ▸ port를 열고 접속자 소켓이 들어오기를 대기한다 ▸ 접속자소켓이 들어오면 접속자 소켓을 저장하고 통신할 수 있는 상태로 만든다 1. ServerSocket ss = new ServerSocket( 3000 ); //3000:port 으로 3000번 포트가 열린다(LISTEN) 3. Socket client = ss.accept(); 접속자 소켓이 들어오면 접속자 소켓을 받아들이는 일 |
Client | ▸ 임의의 포트를 열고, 서버에 접속하는 일 ▸ 소켓을 생성 - 지정한 ip address의 컴퓨터에 지정한 port로 접속시도 2.Socket s = new Socket( 서버ip, 서버 port ); 자신의 임의의 포트를 열고 정해진 ip컴퓨터의 포트로 접속시도 |
서버와 클라이언트를 연결하고 데이터를 주고받기 (Socket + Stream) | |
서버소켓이 열린다 | new ServerSocket(3000); //3000포트가 열린다 |
접속시도 | new Socket(서버ip, port); |
접속자소켓이 들어오면 접속자 소켓을 받아들이는 일 |
Socket client = s.accept(); |
'Web_Back-end > Java SE' 카테고리의 다른 글
[Java] 2020.12.04. day_31 실행가능한 jar 파일 만들기 (bat, jar) (0) | 2020.12.04 |
---|---|
[Java] 2020.12.04. day_31 방화벽 여는 방법 (0) | 2020.12.04 |
[Java] 2020.12.02. day_29 FileStream_출력스트림 , Object Stream_객체스트림 (0) | 2020.12.02 |
[Java] 2020.12.01. day_28 File class, File 조작, File Stream (0) | 2020.12.01 |
[Java] 2020.11.30. day_27 사용자정의 예외처리, IO(Input/Output)Stream (0) | 2020.11.30 |