JAVA 36강_인터넷, 통신

YEONG EUN LEE (Chloe)·2024년 1월 9일

JAVA 기초

목록 보기
42/42

인터넷

: 지역(=국가)네트워크를 통신(신호를 주고 받는 것)으로 연결한 것
네트워크란: 여러대의 컴퓨터들을 통신회선으로 연결한 것. 그물망처럼 연결된 통신망을 말함

네트워크 종류:

  • PAN(Personal Area Network) : 가장 작은 규모의 네트워크, 근거리, 예시 : bluetooth
  • LAN(Local Area Network) : 근거리 영역 네트워크, 예시 : Wi-Fi -> 한건물 기준
  • MAN(Metropolita Area Network): 대도시 영역 네트워크. 예시 : 대학교내 통신망
  • WAN(Wide Area Network) : 광대역 네트워크. 예시 : 핸드폰 5G 망등
  • VAN(Value Added Network) : 공중 통신 사업자로부터 통신 회선을 임대하여 하나의 사설망을 구축하고 이를 통해 정보의 축적, 가공, 변환 처리등 부가가치를 첨가한 후 불특정 다수를 대상으로 서비스를 제공하는 통신망
    예시: 은행간 현금 인출기 공동이용 서비스, 신용카드 정보 시스템, 국내외 항공사간 항공권 예약 서비스

-ISDN (intergrated Services Digital Network) : 종합정보 통신망(=BISDN) 전화, 팩스, 데이터 통신, 비디오텍 등 통신관련 서비스를 종합하여 다루는 통합 서비스 디지털 통신망, 디지털 전송방식과 광섬유 케이블 사용.

  • 프로토콜(protocol) : 통신을 주고 받기 위한 통신 규칙, 컴퓨터와 컴퓨터도 서로 이해 할 수 있는 언어, 공용된 언어를 사용 해야 한다는 것

  • IP (Internet protocol address): 네트워크상에서 장치들이 서로 통신을 하기 위한 규칙에 필요한 서로를 식별하기 위한 고유 주소 또는 특수번호를 말함.(집주소처럼 컴퓨터 주소라고 보면 됨. 하나의 랜카드 당 한 개의 ip가 할당되어 있다.)
    -- 랜카드 : 네크워크를 사용하기 위한 어댑터 역할을 하는 장치

  • IP는 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는 지 보장하지 않는다. 전송과정에서 패킷이 손상될 수도 있고, 같은 호스트에서 전송한 패킷의 순서가 뒤죽박죽이 될 수도 있고, 같은 패킷이 두번 전송될 수도 있으며, 아예 캐핏이 사라질 수도 있기 때문에 패킷 전송과 정확한 순서를 보장하려면 TCP 프로토콜과 같은 IP의 상위 프로토콜을 이용해야 한다.

  • 전송 제어 프로토콜(Transmission Control Protocol, TCP, 문화어: 전송조종(제어)규약(규칙)) : 웹 브라우저들이 월드 와이드 웹(www 대부분 웹이라고 함)에서 서버에 연결할 때 사용되며, 이메일 전송이나 파일 전송에도 사용된다.

  • 포트(port) : 같은 IP에서 접근해야하는 프로그램이 여러개일 경우 해당 프로그램에 대해 접근하기 위해 부여된 프로그램주소값이라고 생각하면 된다.

  • 서버 : 서비스를 제공하는 프로그램을 의미함.

  • 클라이언트 ; 서비스를 요청하고 받는 프로그램을 의미함

  • 소캣(socket) 프로그램이 네트워크에서 데이터를 통신할 수 있도록 연결해주는 연결부

  • InetAddress 클래스
    : InetAddress 클래스는 IP 주소를 표현한 클래스임.
    : IP 주소 뿐만 아니라 도메인을 이요하여 IP 정보를 가져올 수도 있다.
    : 자바에서는 모든 IP 주소를 InetAddress 클래스를 사용한다.
    : default로 된 생성자가 하나 존재하나 객체 생성 불가
    : 호스트 이름과 호스트에 대응하는 IP 주소를 알 수 있는 메서드를 제공한다.

객체를 반환하는 메소드( 키워드가 모두 static 임)

:getAllByName(String host) : 매개변수 host에 대응되는 InetAddress[] 클래스 배열을 반환함
: getAddress(byte[] addr) : 매개변수 host, addr로 생성한 InetAddress 클래스 객체를 반환함
: getByAddress(String host, byte[] addr) : 매개변수 host, addr 로 생성한 InetAddress 클래스 객체를 반환함
: getByName(String host) : 매개변수 host에 대응되는 InetAddress 클래스 객체를 반환함
: getLocalHost() : 로컬호스트의 InetAddress 클래스 객체를 반환함
Localhost(로컬호스트)는 서버의 기능을 제공하는 자신의 컴퓨터를 의미한다.
IPv4에서의 IP 주소는 127.0.0.1이다 (32비트 표현)
** IPv6은 32비트의 IPv4의 값의 표현이 제한적이라 보완되어 나온 물리적 주소 표기방법임.(128비트)

메소드

  • getAddress() : InetAddress 클래스 객체의 실제 IP 주소를 바이트 배열로 반환
  • getHostAddress() : IP주소를 문자열로 반환
  • getHostName() : 호스트 이름을 문자열로 반환
  • toString() : ip주소를 String으로 오버라이딩한 메소드 "호스트이름/IP주소" 형식으로 값을 반환함. // 원래는 주소값을 반환하지만, toString() 재정의된 값을 반환함.

ServerSocket 클래스 (서버측):

  • java.net패키지에서 제공
  • 서버 프로그램을 개발할 때 쓰이는 클래스
  • 서버를 구동 시킬 때, 요청을 받기 위한 준비를 할 때 사용
  • 서버를 구동시키는 것이므로 ip 주소를 필요 없으며
    자신의 서버에 제대로 접근할수 있는 포트번호만 있으면된다.
    예시: ServerSocket echoServer = new ServerSocket(4000); //4000이 포트번호임
    // 사용하지 않는 포트 번호를 사용해야 함. 4000번대 5000번대 사용하는 프로그램이 없음.

Socket 클래스(클라이언트측/서버측);

  • java.net 패키지에서 제공 (네트워크 관련)
  • client에서 서버로 접속하거나 Server에서 요청을 accept(수락) 하는데 필요한 클래스
  • 서버에 접근을 해야하므로 해당 서버의 ip 주소와 해당 서버내의 프로그램이 부여받은 포트번호까지 필요하다
  • 예시: Socket socket = new Socket("127.0.0.1", 4000);
  • 클라이언트의 요청을 수락해야하므로 Socket으로 요청한 자료형과 일치되는 Socket자료형으로 accept(수락)해주어야 함.
    예시: Socket socket = echoServer.accept();

TCP/IP 송수신 과정

  1. 서버 클라이언트의 요청을 받기 위한 준비를 한다.(ServerSocket)
    예시 : Socket echoServer = new ServerSocket(4000); // 포트번호만 지정함.

  2. 클라이언트 : 서버에 접속 요청을 한다.(Socket)
    예시 : Socket socket = new Socket("127.0.0.1",4000); // 서버의 아이피 주소와 포트번호 지정.

  3. 서버 : 클라이언트의 요청을 받아 들인다.(accept)
    Socket socket = echoServer.accept();

  4. 클라이언트 : 서버에 메시지를 보낸다.(BufferedWriter)

  5. 서버 : 클라이언트가 보낸 데이터를 출력한다.(BufferedReader)

  6. 서버: 클라이언트에 메시지를 보낸다.(BufferedWriter)

  7. 클라이언트: 서버가 보낸 베시지를 출력한다.(BufferedReader)

  8. 서버, 클라이언트 모두 종료 : 종료한다.(socket.close())

0개의 댓글