두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것을 말한다.
클라이언트/서버(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 소켓 프로그래밍
- 서버 프로그램에서는 서버 소켓을 사용해서 서버 컴퓨터의 특정 포트에서 클라이언트의 연결요청을 처리할 준비를 한다.
- 클라이언트 프로그램은 접속할 서버의 IP주소와 포트 정보를 가지고 소켓을 생성해서 서버에 연결을 요청한다.
- 서버소켓은 클라이언트의 연결요청을 받으면 서버에 새로운 소켓을 생성해서 클라이언트의 소켓과 연결되도록 한다.
- 이제 클라이언트의 소켓과 새로 생성된 서버의 소켓은 서버소켓과 관계없이 일대일 통신을 한다.
[소켓]
프로세스간의 통신을 담당하며, InputStream과 OutputStream을 가지고 있다. 이 두 스트림을 통해 프로세스간의 통신(입출력)이 이루어진다.
[서버 소켓]
포트와 연결(bind)되어 외부의 연결요청을 기다리다 연결요청이 들어오면 소켓을 생성해서 소켓과 소켓간의 통신이 이루어지도록 한다. 한 포트에 하나의 서버 소켓만 연결할 수 있다. (프로토콜이 다르면 같은 포트를 공유할 수 있다.)
UDP 소켓 프로그래밍
데이터를 DatagramSocket에 담아서 전송한다.
DatagramSocket은 헤더와 데이터로 구성되어 있으며, 헤더에는 DatagramPacket을 수신할 호스트의 정보(호스트의 주소와 포트)가 저장되어 있다. DatagramPacket을 전송하면 DatagramPacket에 지정된 주소(호스트의 포트)의 DatagramSocket에 도착한다.