📝 네트워크 공부 및 12시부터 자습
#230103
📌네트워크(Network)
여러대의 컴퓨터를 통신회선으로 연결한 것
🏷️서버(Server)와 클라이언트(Client)
서버(Server) : 서비스를 제공하는 프로그램 또는 컴퓨터
클라이언트(Cllient) : 서비스를 요청하여 사용하는 프로그램 또는 컴퓨터
🏷️IP(Internet Protocol) 주소
네트워크 상에서 컴퓨터를 식별하는 번호. 종류2개
🏷️포트(Port)
컴퓨터 내에서 프로그램을 식별하는 번호.
1개의 프로그램에 1개의 포트만 연결 가능함.
클라이언트는 서버 연결 요청시 IP주소와 포트번호를 알아야함
=> 포트번호를 알면 어떤 프로그램이랑 연결하는지 알 수 있다.
📌소켓 프로그래밍
소켓을 이용한 프로그래밍
소켓(Socket)
- 프로세스 간의 통신에 사용되는 양쪽 끝단
- 서버와 클라이언트가 통신을 하기 위한 매개체 (그림참고)
서버용 소켓(ServerSocket)
- Port와 연결되어 외부 요청을 기다리는 역할
- 클라이언트 요청이 올 경우, 이를 수락(accept)하고 클라이언트가 사용할 수 있는 소켓을 생성
- 서버 소켓과 클라이언트 소켓이 연결되어 데이터 통신이 가능해짐
프로토콜(Protocol)
- 컴퓨터 간의 정보를 주고 받을 때 통신방법에 대한 규약
(무조건 지켜야 하는것).
- 지키지 않으면 통신이 안됨.
- 접속 / 전달방식 / 데이터의 형식 / 검증방법
✔️ 프로토콜의 종류
1. TCP(Transmission Control Protocol) : 전달 제어 규약
- 데이터의 전달의 신뢰성을 최대한 보장하기 위한 방식
- 연결지향형 통신
- 순차적으로 데이터를 전송하고 확인 및 오류시 재전송.
- 보통 데이터 정확성이 높은 은행권에서 많이 사용.
2. UDP(User Datagram Protocol)
- 데이터의 빠른 전달만을 보장하기 위한 방식
- 비연결 지향형 통신
- 확인 및 재전송 작없 없음
- 실시간 스트리밍 서비스에 많이 사용
🏷️ TCP 소켓 프로그래밍
시작 전 공통 작업순서
1. 이클립스 파일위치 다르게 설정하여, 서버용, 클라이언트용 2개 파일을 연다.
2. 각 이클립스에 run클래스와 과 작업파일클래스 만들어두고 작업시작.
✔️ [서버용] 소켓 프로그래밍 순서
예제풀이는 이클립스 참고하면서 보기
- 서버의 포트번호 정함
- 서버용 소켓 객체 생성
- 클라이언트 쪽에서 접속 요청이 오길 기다림
- 접속 요청이 오면 요청 수락 후 해당 클라이언트에 대한 소켓 객체 생성
- 연결된 클라이언트와 입출력 스트림 생성
- 보조 스트림을 통해 성능 개선
- 스트림을 통해 읽고 쓰기
- 통신 종료
✔️ [클라이언트용] 소켓 프로그래밍 순서
- 서버의 IP주소와 서버가 정한 포트번호를 매개변수로 하여
클라이언트용 소켓 객체 생성
- 서버와의 입출력 스트림 오픈
- 보조 스트림을 통해 성능 개선
- 스트림을 통해 읽고 쓰기
- 통신 종료