ye._.veloper

네트워크(Network) 본문

Network

네트워크(Network)

ye._.veloper 2023. 1. 11. 23:41

 

# 네트워크란 ?

   · 여러 대의 컴퓨터를 통신 회선으로 연결한 것

     ➡ ex. 홈 네트워크, 지역 네트워크, 인터넷 등

 

☁ Server & Client

   · 네트워크로 연결된 컴퓨터 간의 관계를 역할(role)로 구분한 개념

        - Server : 서비스를 제공하는 프로그램 , Client의 연결을 수락하고 요청 내용을 처리 후 응답을 보내는 역할

        - Client : 서비스를 받는 프로그램 , 네트워크 데이터를 필요로 하는 모든 어플리케이션이 해당된다.

 

☁ IP 주소

   · 네트워크 상에서 컴퓨터를 식별하는 번호

       - 네트워크 Adaptor(랜카드)마다 할당되어 있다.

 

☁ 포트(Port)

   · 같은 컴퓨터 내에서 프로그램을 식별하는 번호

      - Client는 서버 연결 요청 시 IP 주소와 Port 번호를 알아야 한다.


# InetAddress Class

   · IP 주소를 다루기 위해 Java에서 제공하는 Class

☁ Socket Programming

   · Socket을 이용한 통신 프로그래밍

 

☁ Socket

   · Process 간의 통신에 사용되는 양쪽 끝 단

 

☁ TCP

   · data 전송 속도가 느리지만, 정확하고 안정적으로 전달할 수 있는 연결 지향적 프로토콜

 

☁ UDP

   · data 전송 속도가 빠르지만, 신뢰성 없는 data를 전송하는 비연결 지향적 프로토콜

 

☁ TCP Socket Programming

   · Client와 Server 간의 1 : 1 소켓 통신

      - 서버가 먼저 실행되어 클라이언트의 요청을 기다려야 하고, 서버용 프로그램과 클라이언트용 프로그램을 따로 구현해야 한다.

      - Java에서는 TCP Socket Programming을 위해 java.net 패키지에서 ServerSocket과 Socket 클래스를 제공

☁ Server용 TCP Socket Programming 순서

      ① server의 port 번호를 정한다.

      ② server용 socket 객체를 생성한다.

      ③ client 쪽에서 접속 요청이 오길 대기한다.

      ④ 접속 요청이 오면 요청 수락 후, 해당 client에 대한 socket 객체를 생성한다.

      ⑤ 연결된 client와 입출력 stream을 생성한다.

      ⑥ 보조 stream을 통해 성능을 개선한다.

      ⑦ stream을 통해 읽고 쓴다.

      ⑧ 통신 종료

 

☁ Client용 TCP Socket Programming 순서

      ① server의 IP 주소와 server가 정한 port 번호를 매개변수로 하여 client용 socket 객체를 생성한다.

      ② server와 입출력 stream을 연다.

      ③ 보조 stream을 통해 성능을 개선한다.

      ④ stream을 통해 읽고 쓴다.

      ⑤ 통신 종료

 

☁ UDP Socket Programming

  · UDP는 연결 지향적이지 않기 때문에, 연결 요청을 받아줄 server socket이 필요하지 않다.

     - java.net 패키지에서 제공하는 두 개의 DatagramSocket간에 DatagramPacket으로 변환된 데이터를 주고 받는다.

 
☁ Server용 UDP Socket Programming 순서

 

      ① server의 port 번호를 정한다.

      ② DatagramSocket 객체를 생성한다.

      ③ 연결한 client IP 주소를 가진 InetAddress 객체를 생성한다.

      ④ 전송할 메시지를 byte[]로 바꾼다.

      ⑤ 전송할 메시지를 DatagramPacket 객체에 담는다.

      ⑥ 보조 stream을 통해 성능을 개선한다.

      ⑦ socket reference를 사용하여 메시지를 전송한다.

      ⑧ socket 닫기

 

 

☁ Client용 UDP Socket Programming 순서

      ① server가 보낸 메시지를 받을 byte[]를 준비한다

      ② DatagramSocket 객체를 생성한다.

      ③ 메시지를 받을 DatagramPacket 객체를 준비한다.

      ④ byte[]로 받은 메시지를 String으로 바꿔 출력한다.

      ⑤ socket 닫기

 

Comments