[자바의 정석] Ch16 네트워킹

Seri·2024년 7월 21일
1

두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것을 말한다.

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

  • 클라이언트: 서비스를 사용하는 컴퓨터
  • 서버: 서비스를 제공하는 컴퓨터
  • 서비스: 서버가 클라이언트로부터 요청받은 작업을 처리하여 그 결과를 제공하는 것. 파일서버, 메일서버, 어플리케이션 서버 등이 있다.

[모델]
서버기반 모델(server-based model)

  • 안정적인 서비스의 제공이 가능하다.
  • 공유 데이터의 관리와 보안이 용이하다.
  • 서버구축비용과 관리비용이 든다.

P2P 모델(peer-to-peer model)

  • 서버구축 및 운용비용을 절감할 수 있다.
  • 자원의 활용을 극대화할 수 있다.
  • 자원의 관리가 어렵다.
  • 보안이 취약하다.

IP 주소

컴퓨토를 구별하는데 사용되는 고유한 값으로 인터넷에 연결된 모든 컴퓨터는 IP 주소를 갖는다.

  • 4byte의 정수로 구성되어 있다.
  • 4개의 정수가 마침표를 구분자로 표현된다.
  • 각각의 값은 부호없는 1byte값, 즉 0~255 사이의 정수이다.

URL

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

  • 프로토콜: 자원에 접근하기 위해 서버와 통신하는데 사용되는 통신규약(http)
  • 호스트명: 자원을 제공하는 서버의 이름
  • 포트번호: 통신에 사용되는 서버의 포트번호
  • 경로명: 접근하려는 자원이 저장된 서버상의 위치
  • 파일명: 접근하려는 자원의 이름
  • 쿼리: URL에서 '?'이후의 부분
  • 참조: URL에서 '#'이후의 부분

소켓 프로그래밍

  • 소켓: 프로세스간의 통신에 사용되는 양쪽 끝단

TCP, UDP

TCP/UDP 프로토콜은 이기종 시스템간의 통신을 위한 표준 프로토콜로 프로토콜의 집합이다. 모두 TCP/IP 프로토콜에 포함되어 있으며 OSI 7계층의 전송계층에 해당하는 프로토콜이다.

[TCP]

  • 연결기반(연결 후 통신, 1:1 통신방식) ex) 전화
  • 데이터의 경계를 구분 안함
  • 신뢰성 있는 데이터 전송
  • UDP보다 전송속도가 느림

[UDP]

  • 비연결기반(연결없이 통신, 1:1, 1:n, n:n 통신방식) ex) 소포
  • 데이터의 경계를 구분함
  • 신뢰성 없는 데이터 전송
  • TCP보다 전송속도가 빠름

TCP 소켓 프로그래밍

  1. 서버 프로그램에서는 서버 소켓을 사용해서 서버 컴퓨터의 특정 포트에서 클라이언트의 연결요청을 처리할 준비를 한다.
  2. 클라이언트 프로그램은 접속할 서버의 IP주소와 포트 정보를 가지고 소켓을 생성해서 서버에 연결을 요청한다.
  3. 서버소켓은 클라이언트의 연결요청을 받으면 서버에 새로운 소켓을 생성해서 클라이언트의 소켓과 연결되도록 한다.
  4. 이제 클라이언트의 소켓과 새로 생성된 서버의 소켓은 서버소켓과 관계없이 일대일 통신을 한다.

[소켓]
프로세스간의 통신을 담당하며, InputStream과 OutputStream을 가지고 있다. 이 두 스트림을 통해 프로세스간의 통신(입출력)이 이루어진다.

[서버 소켓]
포트와 연결(bind)되어 외부의 연결요청을 기다리다 연결요청이 들어오면 소켓을 생성해서 소켓과 소켓간의 통신이 이루어지도록 한다. 한 포트에 하나의 서버 소켓만 연결할 수 있다. (프로토콜이 다르면 같은 포트를 공유할 수 있다.)

UDP 소켓 프로그래밍

데이터를 DatagramSocket에 담아서 전송한다.
DatagramSocket은 헤더와 데이터로 구성되어 있으며, 헤더에는 DatagramPacket을 수신할 호스트의 정보(호스트의 주소와 포트)가 저장되어 있다. DatagramPacket을 전송하면 DatagramPacket에 지정된 주소(호스트의 포트)의 DatagramSocket에 도착한다.

profile
🎤 📷 ❄️ 🌊

0개의 댓글