여러 대의 컴퓨터를 통신 회선으로 연결한 것(홈 네트워크, 지역 네트워크, 인터넷 등이 해당)
여러 통신기기들을 서로 연결하여 데이터를 손쉽게 주고받거나 자원 등을 공유하기 위해 사용
네트워크로 연결된 컴퓨터간의 관계를 역할(role)로 구분한 개념
서버(Server)는 서비스를 제공하는 프로그램으로 클라이언트의 연결을 수락하고 요청 내용을 처리 후 응답을 보내는 역할
클라이언트(Client)는 서비스를 받는 프로그램으로 네트워크 데이터를 필요로 하는 모든 어플리케이션이 해당 됨
네트워크 상에서 컴퓨터를 식별하는 번호로 네트워크 어댑터(랜카드)마다 할당 되어 있음
1 ~ 65535 번까지 있음
0 ~ 1023 (이미 사용되고 있는 것들인 경우가 많음)
같은 컴퓨터 내에서 프로그램을 식별하는 번호로
클라이언트는 서버 연결 요청 시 IP주소와 포트 번호를 알아야 함
톰캣 8080 기본 포트
IP주소를다루기 위해 자바에서 제공하는 클래스
소켓
Client ip랑 port 번호 알아내서 연결
Server
데이터 연결해서 주고 받으려면 소켓 필요함
소켓을 이용한 통신 프로그래밍
프로세스 간의 통신에 사용되는 양쪽 끝 단
컴퓨터 간의 정보를 주고 받을 때의 통신방법에 대한 규약으로 접속이나, 전달방식, 데이터의 형식, 검증 방법 등을 맞추기 위한 약속
전달 제어 규약
가장 흔하게 쓰임
데이터의 전달의 신뢰성을 최대한 보장하기 위한 방식으로 연결지향형 통신이다.
순차적으로 데이터를 전송하고 확인 및 오류 시 재전송을 한다.
데이터의 빠른 전달을 보장하기 위한 방식으로 비연결 지향형 통신이다.
확인 및 재전송 작업이 없다.(보내기만 함)
신뢰성 보장이 안됨 (비신뢰적인 전송박식)
ex) 실시간 스트리밍에 많이 사용
클라이언트와 서버간의 1:1 소켓 통신
서버가 먼저 실행 되어 클라이언트의 요청을 기다려야 하고 서버용 프로그램과 클라이언트용 프로그램을 따로 구현해야 함 자바에서는 TCP 소켓 프로그래밍을 위해 java.net패키지에서 ServerSocket과 Socket클래스 제공
루프백 IP 내 컴퓨터로 돌아오는 주소