아줌마의 국비학원생활

[21일차] 네트워크 프로그래밍 구현

citygray 2023. 5. 16. 15:54

네트워크

  • 서버 : 서비스를 제공
  • 클라이언트 : 서비스를 요청

IP주소 : 컴퓨터 주소

  • 해당 컴퓨터를 찾을대 필요한 주소
  • IP 주소확인 : 명령프롬프트에서 ipconfig

포트번호 : 프로세스 주소

  • 컴퓨터 에서 해당 프로세스를 찾을때 필요한 번호
    • 웹브라우저 HTTP 포트 : 80
    • 메일서버 SMTP : 25
    • FTP 포트 : 21
    • 오라클 포트 :1521

도메인 네임

  • DNS 서버 : 도메인 네임을 IP주소로 변환해 주는 서버
  • 자바는 IP주소를 다루도록 InetAddress클래스 제공

InetAddress 클래스

InetAddress ita = InetAddress.getByName("URL값");
  • getByName(String hostName) : 전달받은 이름(hostName)으로 지정된 컴퓨터의 InetAddress겍체를 반환

  • getAllByName(String hostName) : 객체를 배열로 반환

  • getAddress() : IP주소를 나타내는 4개의 바이트 배열로 반환

  • getHostAddress() : 호스트의 IP주소를 문자열로 반환

  • getHostName() : 호스트의 이름 문자열로 반환

URL클래스 : 입력만

  • URL 클래스는 URL을 이용하여 연결 및 입력 스트림을 형성
    URL url = new URL("http://www.hantit.co.kr/")
    InputStream is = url.openStream();

URL Connection: 입출력 가능

URLEncoder, URLDecoder클래스

  • URLEncoder클래스는 데이터를 웹서버에서 요구하는 자료형으로 변환하는 역활을 한다.

프로토콜

  • 서버와 통신하기 위한 규약
  • 패킷 : 데이터를 주고 받을때 이 데이터를 일정 크리로 쪼개져서 패킷이라는 형태의 틀에 담겨져서 이동하낟.
  • TCP,UDP 차이점: TCP 안전성 보장, UDP 안전성 비보장,빠름

TCP/IP

  • 연결지향
  • 신뢰성
  • 순서보장
  • 연결과정이 필요해 느림

TCP 이용한 통신절차

  1. 서버는 서버소켓을 사용해서 서버컴퓨터의 특정포트에서 클라이언트의 연결 요청을 처리할 준비를 한다.
    즉 서버는 먼저 실행 되어서 클라이언트의 연결을 기다린다.

  2. 클라이언트는 연결할 서버의 IP와 포트번호로 소켓을 생성해서 서버에 연결을 요청한다.
    TCP프로토콜이 연결 지향이라서 데이터 전송 전 반드시 연결과정이 있다.

  3. 서버 소켓은 클라이언트의 요청을 받으면 새로운 소켓을 생성해서 클라이언트의 소켓과 연결되도록 한다.
    이제 클라이언트와 소켓과 새로 생성된 서버의 소켓은 원래 서버소켓과 관계없이 1:1 통신이 가능해진다.

  4. 서버는 클라이언트가 보낸 데이터를 받아서 처리한다.

  5. 서버는 처리한 데이터를 클라이언트에 보낸다.

  6. 클라이언트는 서버가 보낸 데이터를 받아서 적절하게 처리한다.

TCP 소켓클래스

  • ServerSocket 클래스 : 서버에서 사용하는 클래스 포트와 연결되어 외부의 연결요청을 기다린다.연결요청이 오면 소켓을 새로 생성해준다.
  • Socket 클래스 : 서버,클라이언트 모두 사용, 프로세스 간의 통신을 담당한다. 입력스트림과 출력스트림을 사용하여 통신

소켓을 이용한 서버 제작

  1. 서버 소켓 생성
    ServerSoker serverSocker = new ServerSocket(5550);
  • 이미 사용 중인 포트 번호를 지정하면 오류 발생
  1. 클라이언트로 부터 접속 기다림
    Socket socket = serverSocker.accept();
  • accept() 메소드는 연결 요청이 오면 새로운 Socket객체 반환
  • 서버에서 클라이언트와의 데이터 통신은 새로 만들어진 Socket객체를 통해서 이루어짐
  1. 네트워크 입출력 스트림 생성
  2. 송신과 수긴
  3. 네트워크 접속 종료
  4. 서버 응용 프로그램 종료

UDP

  • 비연결지향
  • 손실있음
  • 실시간 멀티미디어 데이터 처리
  • 연결작업이 없어서 빠름