20240927 - Java : network

Dodo Lee·2024년 9월 27일

[ 입출력 (IO) ]

1. 객체 입출력 보조 스트림

객체를 파일 또는 네트워크로 입출력 할 수 있는 기능 제공
단, 객체는 문자가 아니므로 바이트 기반 스트림으로 데이터를 변경해주는 직렬화 필수

직렬화 Serializable

Serializable 인터페이스를 implements하여 구현
객체 직렬화 시 private 필드를 포함한 모든 필드를 바이트로 변환하지만
transient키워드를 사용한 필드는 직렬화에서 제외

역직렬화 Deserializable

직렬화된 객체를 역직렬화할 때는 직렬화 했을 때와 같은 클래스 사용
단, 클래스 이름이 같더라도 클래스 내용이 변경된 경우 역직렬화 실패

serialVersionUID 필드

직렬화한 클래스와 같은 클래스임을 알려주는 식별자 역할로,
컴파일 시 JVM이 자동으로 serialVersionUID 정적 필드를 추가해줘
별도로 작성하지 않아도 오류는 나지 않지만
자동 생성 시 역직렬화에서 예상하지 못한
InvalidClassException을 유발할 수 있음

[ 네트워크 (Network) ]

1. 정의

여러 대의 컴퓨터를 통신 회선으로 연결한 것
여러 통신 기기들을 서로 연결하여
테이터를 손쉽게 주고 받거나 자원 등을 공유하기 위해 사용

1-1 서버와 클라이언트

네트워크로 연결된 컴퓨터간의 관계를 역할(role)로 부문한 개념
서버는 서비스를 제공하는 프로그램으로 클라이언트의 연결을 수락하고
요청 내용을 처리 후 응답
을 보내는 역할
클라이언트는 서비스를 받는 프로그램으로 네트워크 데이터를 필요로 하는
모든 어플리케이션이 해당 됨

서버 : 서비스를 제공하는 프로그램 or 컴퓨터
클라이언트 : 서비스를 요청하여 사용하는 프로그램 or 컴퓨터

1-2 IP(Internet Protocol) 주소

네트워크 상에서 컴퓨터를 식별하는 번호로 네트워크 어댑터(랜카드)마다 할당 되어 있음
ipconfig(명령어 프로그램에서 ip주소 확인하는 명령어)

1-3 포트(Port)

같은 컴퓨터 내에서 프로그램을 식별하는 번호로
클라이언트는 서버 연결 요청 시 IP주소와 포트 번호를 알아야 함

2. 소켓 프로그래밍

2-1 소켓(Socket)

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

2-2 프로토콜(Protocol)

컴퓨터 간의 정보를 주고 받을 때의 통신방법에 대한 규약으로
접속이나, 전달방식, 데이터의 형식, 검증 방법 등을 맞추기 위한 약속

2-3 TCP(Transmission Control Protocol) ; 신뢰적인 전송방식

데이터의 전달의 신뢰성을 최대한 보장하기 위한 방식으로 연결지향형 통신
순차적으로 데이터를 전송하고 확인 및 오류 시 재전송 함

2-4 UDP(User Datagream Protocol) ; 비신뢰적인 전송방식

데이터의 빠른 전달을 보장하기 위한 방식으로 비연결 지향형 통신
확인 및 재전송 작업이 없음

profile
연습생

0개의 댓글