ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA | 네트워킹 (Networking)
    programming/JAVA 2020. 6. 5. 23:24

     

     

    네트워킹 (Networking)


    두 대 이상의 컴퓨터를 연결하여 네트워크를 구성하는 것을 말한다. 손쉽게 데이터를 주고받거나 자원을 함께 공유하고자 하는 노력에서 시작되었다.

    자바에서 제공하는 java.net 패키지를 이용하여 온라인게임이나 메신저와 같은 인터넷을 이용한 다양한 네트워크 애플리케이션을 만들 수 있다.

     

     

    클라이언트/서버 ( client/server ) 


    컴퓨터간의 관계를 역할로 구분하는 개념이다.

     

    서버(Server): 서비스를 제공하는 컴퓨터를 말한다. (provider)

    클라이언트(Client): 서비스를 이용하는 컴퓨터를 말한다. (user)

     

    서버가 서비스를 제공하려면 서버프로그램이 있어야 하고 클라이언트가 서버에 연결하려면 클라이언트프로그램이 있어야 한다.

     

    제공하는 서비스종류에 따라 메일서버, 파일서버, 웹서버 등이 있다.

    네트워크를 구성할 때 전용서버를 두는 것을 서버기반 모델이라고 하고, 전용서버없이 각 클라이언트가 서버역할까지 동시에 수행하는 것을 P2P모델이라고 한다.

     

    서버기반 모델(server-based model) P2P 모델(peer-to-peer model)
    - 안정적인 서비스 제공이 가능하다.
    - 공유 데이터의 관리와 보안이 용이하다.
    - 서버구축비용과 관리비용이 든다.
    - 서버구축 및 운용비용을 절감할 수 있다.
    - 보안이 취약하다.
    - 자원의 활용을 극대화 할 수 있다.
    - 자원의 관리가 어렵다.

     

     

     

    IP 주소 (IP Address)


    컴퓨터를 구별하는데 사용되는 고유한 값으로 인터넷에 연결된 모든 컴퓨터는 IP주소를 갖는다. 4Byte(32 bit)로 구성되어 있고 (0.0.0.0 ~ 255.255.255.255) 범위의 숫자이다.

     

    IP주소는 네트워크 주소와 호스트주소로 구성되어 있다.

     

    이미지 출처: https://bombichun.tistory.com/entry/JAVA%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9Networking

     

     

    URL (Uniform Resource Location)


    인터넷에 존재하는 여러 서버들이 제공하는 자원에 접근할 수 있는 주소를 표현하기 위한 것으로 아래의 형태를 따른다.

     

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

    ex) http://www.java.com:89/sample/hello.html?referer=java#index1

     

    프로토콜 : 자원에 접근하기 위해 서버와 통신하는데 사용되는 통신 규약 (http)

    호스트명 : 자원을 제공하는 서버의 이름 (ex) www.naver.com

    포트번호 : 통신에 사용되는 서버의 포트번호

    경로명 : 접근하려는 자원이 저장된 서버상의 위치

    파일명 : 접근하려는 자원의 이름

    쿼리(query) : URL에서 ? 이후의 부분

    참조 : URL 에서 # 이후의 부분

     

     

     

     

    소켓 프로그래밍


    소켓을 이용한 통신 프로그래밍을 의미한다.

    소켓이란? 프로세스간의 통신에 사용되는 양쪽 끝단을 말한다.

    전화할 때 양쪽에 전화기가 필요한 것처럼 프로세스간의 통신에서도 양쪽에 소켓이 필요하다.

     

     

    TCP와 UDP


    TCP/IP 프코토콜에 포함된 프로토콜. OSI7계층의 전송계층에 해당한다.

     

    항목 TCP UDP
    연결방식 연결기반(connection-oriented)
    - 연결 후 통신 (전화기 생각!)
    - 1:1 통신방식
    비연결기반(connectionless-oriented)
    - 연결없이 통신 (소포 생각!)
    - 1:1, 1:n, n:n 통신방식
    특징 데이터의 경계를 구분안함(byte-stream)
    신뢰성 있는 데이터 전송
       - 데이터의 전송순서가 보장
       - 데이터의 수신여부를 확인
         (데이터가 손실되면 재전송)
       - 패킷을 관리할 필요가 없음
    UDP보다 전송 속도가 느림
    데이터의 경계를 구분함 (datagram)
    신뢰성 없는 데이터 전송
       - 데이터의 전송순서가 바뀔 수 있음
       - 데이터의 수신여부를 확인 안함
         (데이터가 손실되어도 알 수 없음)
       - 패킷을 관리해줘야 함
    TCP보다 전송속도가 빠름
    관련 클래스 Socket
    ServerSocket
    DatagramSocket
    DatagramPacket
    MulticastSocket

     

    TCP 는 신뢰있는 데이터 전송이 요구되는 통신에 적합하고,  UDP 는 데이터가 중간에 손실되어 좀 끊기더라도 빠른 전송이 필요할 때 적합하다. 또한 보낸 메세지를 순서대로 수신한다는 보장이 없기 때문에 뒤늦게 도착한 데이터는 무시하면 된다.

     

     

     

     

    TCP 소켓 프로그래밍


    이미지 출처: https://bombichun.tistory.com/entry/JAVA%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9Networking

     

     

     

     

     

    UDP 소켓 프로그래밍


    이미지 출처: https://bombichun.tistory.com/entry/JAVA%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9Networking

     

    UDP 통신에서 사용하는 소켓은 DatagramSocket이다.

    DatagramPacket은 헤더와 데이터로 구성되어 있으며, 헤더에는 DatagramPacket을 수신할 호스트의 정보가 저장되어 있다. 소포(Packet)에 수신할 상대편의 주소를 적어서 보내는 것과 같다고 이해하자 ! 

    그래서 DatagramPacket을 전송하면 DatagramPacket에 지정된 주소의 DatagramSocket에 도착한다.

     

     

     

     

     

     

     

     

    참고: https://bombichun.tistory.com/entry/JAVA%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9Networking

    'programming > JAVA' 카테고리의 다른 글

    JAVA | IntelliJ IDEA 설치하기  (0) 2020.12.16
    JAVA | Java SE 11 설치  (0) 2020.12.15
    JAVA | Applet (애플릿)  (0) 2020.06.03
    JAVA | AWT & Swing  (0) 2020.06.02
    JAVA | 스레드(Thread)  (0) 2020.05.30
Designed by Tistory.