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

Module

Package

inheritance

java.lang.Object java.net.InetAddress

Class Description

Note

All Implemented Interfaces: Serializable Direct Known Subclasses: Inet4Address, Inet6Address

Type Signature

public class InetAddress extends Object implements Serializable

Block

인터넷 프로토콜(IP) 주소를 나타내는 클래스

Note

Since

1.0

2.2. URL 클래스

Title
Class URL

Module

Package

inheritance

java.lang.Object java.net.URL

Class Description

Note

All Implemented Interfaces: Serializable

Type Signature

public final class URL extends Object implements Serializable

Block

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

Note

Since

1.0

2.3. URLConnection 클래스

Title
Class URLConnection

Module

Package

inheritance

java.lang.Object java.net.URLConnection

Class Description

Note

Direct Known Subclasses: HttpURLConnection, JarURLConnection

Type Signature

public abstract class URLConnection extends Object

Block

- 애플리케이션과 URL 간의 통신 링크를 나타내는 모든 클래스의 수퍼클래스 - 이 클래스의 인스턴스는 URL이 참조하는 리소스에서 읽고 쓰는 데 모두 사용

Note

Since

1.0

2.4. Socket 클래스

Title
Class Socket

Module

Package

inheritance

java.lang.Object java.net.Socket

Class Description

Note

All Implemented Interfaces: Closeable, AutoCloseable Direct Known Subclasses: SSLSocket

Type Signature

public class Socket extends Object implements Closeable

Block

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

Note

Since

1.0

2.5. ServerSocket 클래스

Title
Class ServerSocket

Module

Package

inheritance

java.lang.Object java.net.ServerSocket

Class Description

Note

All Implemented Interfaces: Closeable, AutoCloseable Direct Known Subclasses: SSLServerSocket

Type Signature

public class ServerSocket extends Object implements Closeable

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