네크워킹
- 네트워킹 : 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것
클라이언트 / 서버
- 클라이언트/서버는 컴퓨터간의 관계를 역할로 구분하는 개념
- 서버 : 서비스를 제공하는 컴퓨터
- 클라이언트 : 서비스를 이용하는 컴퓨터
- 서비스 : 서버가 클라이언트로부터 요청받은 작업을 처리하여 그 결과를 제공하는 것
- 네트워크 구성 시 전용 서버를 두는 것을 서버기반모델이라 하고 별도의 전용서버 없이 클라이언트가 서버 역할을 동시에 수행하는 것을 P2P모델이라고 한다
- 서버 기반 모델 : 안정적인 서비스의 제공이 가능, 공유 데이터의 관리와 보관이 용이, 서버구축비용과 관리 비용 필요
- P2P 모델 : 서버 구축 및 운용 비용 절감, 자원의 활용을 극대화, 자원의 관리가 어렵고 보안이 취약
IP 주소
- 컴퓨터를 구별하는데 사용되는 고유한 값으로 인터넷에 연결된 모든 컴퓨터는 IP 주소를 갖는다
- IP 주소는 4 byte의 정수로 구성되어 있다
- 네트워크 주소와 호스트 주소로 이루어져 있다
- IP 주소에서 네트워크 주소가 차지하는 자리수가 많을수록 호스트 주소의 범위가 줄어든기 때문에 네트워크의 규모가 작아진다
InetAddress
- 자바에서 IP주소를 다루기 위한 클래스로 InetAddress를 제공
URL
- 인터넷에 존재하는 여러 서버들이 제공하는 자원에 접근할 수 있는 주소를 표현하기 위한 것
- 프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조의 형태로 이루어져 있다
URLConnection
- 어플리케이션과 URL 간의 통신연결을 나타내는 클래스의 최상이 클래스
- 원하는 자원에 접근하고 읽고 쓰기를 할 수 있다
소켓 프로그래밍
- 소켓을 이용한 통신 프로그래밍
- 소켓 : 프로세스 간의 통신에 사용되는 양쪽 끝단을 의미
TCP와 UDP
- TCP/IP 프로토콜은 이기종 시스템간의 통신을 위한 표준 프로토콜로 프로토콜의 집합
- TCP와 UDP 모두 TCP/IP 프로토콜에 포함되어 있음
- OSI 7계층의 전송 계층에 해당하는 프로토콜
- TCP
- 연결 방식 : 연결 기반 (연결 후 통신, 1:1 통화방식)
- 특징 : 데이트의 경계를 구분 안함, 신뢰성 있는 데이터 전송, 순서 보장되며 수신여부 확인(손실 시 재전송), 패킷 관리 필요 없음, UDP보다 전송속도 느림
- 관련 클래스 : Socket, ServerSocket
- UDP
- 연결 방식 : 비연결기반 ( 연결없이 통신, 1:1, 1:n, n:n 통신 방식)
- 특징 : 데이터의 경계를 구분, 신뢰성 없는 데이터 전송, 순서 바뀜, 수신여부 확인 안함, 손실여부 모름, 패킷 관리 필요, TCP보다 전송속도 빠름
- 관련 클래스 : DatagramSocket, DatagramPacket, MulticastSocket
- TCP는 전화에, UDP는 소포에 비유됨
TCP 소켓 프로그래밍
- 클라이언트와 서버간의 일대일 통신
- 단계별 통신과정
- 1. 서브 프로그램에서는 서버 소켓을 사용해서 서버 컴퓨터의 특정 포트에서 클라이언트의 연결요청을 처리할 준비를 한다
- 2. 클라이언트 프로그램은 접속할 서버의 IP 주소와 포트 정보를 가지고 소켓을 생성해서 서버에 연결을 요청한다
- 3. 서버소켓은 클라이언트의 연결요청을 받으면 서버에 새로운 소켓을 생성해서 클라이언트의 소켓과 연결되도록 한다
- 4. 클라이언트의 소켓과 새로 생성된 서버의 소켓은 서버소켓과 관계없이 일대일 통신을 한다
- 서버 소켓은 소켓간의 연결만 처리하고 실제 데이터는 소켓들끼리 서로 주고받는다
- 소켓들이 데이터를 주고받는 연결 통로는 바로 입출력 스트림이다
- 소켓은 두개의 스트림, 입력 스트림과 출력 스트림을 가지고 있으며 이 스트림들은 연결된 상대편 소켓의 스트림들과 교차 연결된다