16장

1. 네트워킹의 기본 개념

  • 네트워킹(networking): 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크(network)를 구성하는 것

  • 클라이언트/서버: 컴퓨터 간의 관계를 역할로 구분

    • 서버(Server): 서비스를 제공하는 컴퓨터(내지는 컴퓨터 프로그램)

    • 클라이언트(Client): 서비스를 사용하는 컴퓨터(내지는 컴퓨터 프로그램)

    • 서버 기반 모델(server-based model): 네트워크를 구성할 때 전용 서버를 두는 모델

    • P2P 모델(Peer-to-peer model) 각 클라이언트가 서버 역할을 동시에 수행하는 모델

  • IP 주소(IP address): 컴퓨터를 식별하기 위해 사용하는 고유한 값

  • URL(Uniform Resource Locater, 통합 자원 식별자): 인터넷에 존재하는 리소스에 접근할 수 있는 주소

    • 프로토콜(Protocol): 리소스에 접근하기 위해 서버와 통신하는데 사용하는 통신 규약

    • 호스트명(Hose name): 자원을 제공하는 서버의 이름

    • 포트번호(Port number): 통신에 사용하는 서버의 포트 번호

    • 경로명(Locater): 접근하려는 리소스가 저장된 서버의 위치

    • 파일명(File name): 접근하려는 자원의 이름

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

    • 참조(anchor): URL에서 '#' 이후 부분

  • 소켓 프로그래밍: 소켓을 이용한 통신 프로그래밍

1.1. 네트워크 주소와 호스트 주소 식별

png

2. java.net 클래스의 하위 클래스

2.1. InetAddress 클래스

Title
Class InetAddress

2.2. URL 클래스

Title
Class URL

inheritance

Class Description

Note

All Implemented Interfaces: Serializablearrow-up-right

Type Signature

public final class URL extends Objectarrow-up-right implements Serializablearrow-up-right

Block

WWW의 'resource'를 가리키는 포인터인 URL을 나타내는 클래스

Note

Since

1.0

2.3. URLConnection 클래스

2.4. Socket 클래스

Title
Class Socket

inheritance

Class Description

Note

All Implemented Interfaces: Closeablearrow-up-right, AutoCloseablearrow-up-right Direct Known Subclasses: SSLSocketarrow-up-right

Type Signature

public class Socket extends Objectarrow-up-right implements Closeablearrow-up-right

Block

- 클라이언트 소켓(그냥 "소켓"이라고도 함)을 구현하는 클래스 - 소켓의 실제 작업은 SocketImpl 클래스의 인스턴스가 수행

Note

Since

1.0

2.5. ServerSocket 클래스

Title
Class ServerSocket

inheritance

java.lang.Objectarrow-up-right java.net.ServerSocket

Class Description

Note

All Implemented Interfaces: Closeablearrow-up-right, AutoCloseablearrow-up-right Direct Known Subclasses: SSLServerSocketarrow-up-right

Type Signature

public class ServerSocket extends Objectarrow-up-right implements Closeablearrow-up-right

Block

- 서버 소켓을 구현하는 클래스 - 네트워크를 통해 들어오는 요청을 기다리고 요청에 따른 연산을 수행한 후 결과 반환

Note

Since

1.0

3. 소켓 프로그래밍

3.1. TCP와 UDP

항목
TCP
UDP

연결방식

연결 기반(connection-oriented) - 연결 후 통신(전화기) - 1:1 통신방식

비연결기반(connectionless-oriented) - 연결 없이 통신(소포) - 1:1, 1:n, n:n 통신 방식

특징

데이터의 경계를 구분하지 않음(byte-stream) 신뢰성 있는 데이터 전송 - 데이터의 전송 순서 보장 - 데이터의 수신 여부 확인 (손실되면 재전송) UDP보다 전송 속도가 느림

데이터의 경계 구분(datagram) 신뢰성 없는 데이터 전송 - 데이터의 전송 순서가 바뀔 수 있음 - 데이터 수신 여부 확인(x) (데이터 손실 알 수 없음) - 패킷 관리 필요 TCP보다 전송 속도가 빠름

관련 클래스

- Socket - ServerSocket

- DatagramSocket - DatagramPacket - MulticaseSocket

3.2. TCP와 UDP 소켓 프로그래밍 예시

png
png

참고 자료

  • 자바의 정석 - 도우출판

Last updated