basic/java 이론

day 20 - Network, java.net, 소켓프로그래밍

못지(Motji) 2021. 5. 21. 15:01

Network

  • 네트워크 Networt : 데이터를 전송할 수 있는 통신망, 전자장비들의 집합
  • 노드 Node :네트워크에 연결된 장치들
  • 호스트 Host : 노드에게 하나 이상의 서비스를 제공해주는 노드
  • Protocol : 약속, 데이터 전송 규약
    대표적인 표준 프로토콜의 예) ▸ 인터넷에서 사용하는 TCP/IP

✔ 네크워크 유형

  • LAN Local Area Network
    통신 프로토콜 : Ethernet FashEthernet GigaEthernet
    통신 주소 : Mac-address
  • WAN Wide Area Network
    내부 > 외부 통신 할때
    통신 프로토콜 : IPv4
    통신 주소 : IP address

💡 OSI7계층

모든 네트워크 통신에서 생기는 여러가지 충돌문제를 완화하기 위해 국제 표준기구(IOS)에서 표준화된 네트워크 구조를 제시한 기본 모델

7 응용층  
6 표현층  
5 세션층  
4 전송층  
3 네트워크층  
2 데이터링크층  
1 물리층  

✔ IP Address (Internet Protocol Address)

통신을 하는 모든 기계는 네트워크상에서 유일하게 자신을 식별할 수 있는 "고유 주소"를 갖고 있다.

IP주소는 32비트의 이진수로 구성, 보통 8비트씩 4부분으로 나누어 십진수로 표현 (0~255)

 

http://www.naver.com

http:// IP : PORT / project name(contextRoot)

숫자로 된 주소는 기억하기 어려우므로 www.naver.com과 같은 문자열로 구성된 도메인 이름으로 바꿔 사용한다.

 

IPv4 : 4개의 숫자로 구성된 32비트의 ip 버전 4가 사용되고 있으나

IPv6 : 128비트 ip버전 6

 

✔ Port

  • 데이터를 주고 받는 통로
  • 여러개의 서비스를 해줄때 서로 충돌이 나지 않도록 포트를 구분해서 만들어 놓음
  • 포트 번호는 개발자가 임의로 선택 사용할 수 있으나 기존 응용프로그램에서 사용하는 번호나 시스템 포트번호는 피하는 것이 좋음
    잘 알려진 포트번호 : HTTP:80, FTP:21, Telnet:23 등
    (0~1023 사이 번호를 가지며, 사용자 지정은 이 범위 피해서 선택하도록)

📌CMD

ip 주소 확인 : ipconfig -all

port 확인 : netstat -a

 

✔ 데이터 전송 방식

IP 프로토콜 위에서 동작

  • TCP Transimission Control Protocol
    ▹연결형 서비스를 제공
    ▹신뢰성 높음
  • UDP User Datagram Protocol
    ▹비연결형 서비스 제공
    ▹빠른 전송이지만 신뢰성 떨어짐
    ▹스트리밍 서비스

java.net 

InetAddress Class

📑 java api 바로가기 ▸ InetAddress

자바에서 IP를 다루기 위한 클래스

URL Uniform Resource Location Class

자바에서 URL을 다루기 위한 클래스

프로토콜://호스트명(ip):포트번호/경로명/파일명? 쿼리스트링 #참조

https://post.naver.com/viewer/postView.nhn?volumeNo=31497840&memberNo=20215483&navigationType=push

:전체 URL

viewer/postView.nhn?volumeNo=31497840&memberNo=20215483&navigationType=push > URI

viewer : 최상위 폴더

컨텐츠 띄워주는 이름


소켓 프로그래밍

  • 소켓을 이용한 통신 프로그램
  • 소켓 : 통신을 하는 두 응용프로그램 간의 통신 링크의 각 끝난(endpoint)
  • TCP/IP 프로토콜을 따르며, TCP/UDP방식이 있다.

✔ TCP 소켓

클라이언트(요청자)와 서버(제공자) 간의 1:1 통신

통신은 서버가 먼저 클라이언트의 접속을 기다리고, 클라이언트에서 서버에 접속하면, 그때부터 서로 데이터를 주고 받을 수 있음

☑구조

클라이언트 서버
  [ServerSocket]
(1) listener = new ServerSocket(서버port);
|
대기탐
[Socket]
clientSocket = new Socket(서버ip, 서버port)   접속시도 --->
(2) Socket socket = listener.accept();
|
  [Socket]
(4) clientSocket.getOutputStream() socket.getInputStream();
소켓스트림을 이용하여 데이터 입출력 양방향 데이터 주고 받기
|
clientSocket.close();
|
socket.close();