티스토리 뷰
소켓은 컴퓨터 네트워킹에서 매우 중요한 역할을 하며, 특히 자바 I/O에서 자주 사용됩니다.
1. 소켓(Socket)이란?
소켓은 네트워크 상에서 통신을 가능하게 하는 끝점을 의미합니다. 두 컴퓨터 간의 데이터를 주고받기 위해 사용되는 인터페이스로, 소켓을 통해 네트워크 연결을 설정하고 데이터를 송수신할 수 있습니다. 쉽게 말해, 소켓은 네트워크를 통해 다른 컴퓨터와 대화하는 전화기 같은 역할을 합니다. (소켓은 사실 파일 개념과 같다)
소켓은 물리적인 장치가 아니라 추상적인 개념의 약속입니다. 네트워크 통신을 위해 소프트웨어적으로 정의된 인터페이스로, 컴퓨터 간의 데이터 교환을 가능하게 하는 규칙과 방법을 의미합니다. 이를 통해 네트워크 애플리케이션이 서로 통신할 수 있습니다.
일반 사용자 컴퓨터에서 네트워크 통신에 사용되는 주요 물리적 장치는 네트워크 인터페이스 카드(NIC), 모뎀, 라우터, 스위치, 액세스 포인트, 그리고 이더넷 케이블입니다. 이 장치들은 함께 작동하여 인터넷과의 연결을 설정하고, 데이터 통신을 가능하게 합니다. 네트워크 인터페이스 카드(NIC) / 랜카드(LAN Card)
|
2. 소켓의 종류
소켓에는 두 가지 주요 유형이 있습니다:
- 스트림 소켓(Stream Socket): TCP(Transmission Control Protocol) 기반의 소켓으로, 연결 지향적입니다. 데이터를 안정적으로, 순서대로, 에러 없이 전달할 수 있습니다. 예를 들어, 웹 브라우저와 웹 서버 간의 통신은 주로 스트림 소켓을 사용합니다.
- 데이터그램 소켓(Datagram Socket): UDP(User Datagram Protocol) 기반의 소켓으로, 비연결 지향적입니다. 데이터를 빠르게 전송할 수 있지만, 데이터의 순서나 신뢰성은 보장되지 않습니다. 실시간 게임이나 스트리밍에 자주 사용됩니다.
3. 소켓의 동작 방식
소켓 통신은 다음과 같은 과정으로 이루어집니다:
- 서버 측:
- 소켓을 생성하고 포트 번호와 결합(Binding)합니다.
- 클라이언트의 연결 요청을 대기(Listening)합니다.
- 클라이언트의 연결 요청을 수락(Accept)하고 통신할 준비를 합니다.
- 클라이언트 측:
- 소켓을 생성하고 서버의 주소와 포트 번호로 연결(Connection)을 요청합니다.
- 서버와 연결이 성공하면 데이터를 송수신할 수 있습니다.
4. 자바에서의 소켓 프로그래밍
자바에서는 java.net 패키지를 사용하여 소켓 프로그래밍을 할 수 있습니다.
5. 소켓 프로그래밍의 응용
소켓 프로그래밍은 다양한 응용 분야에 사용됩니다.
- 웹 서버와 클라이언트 간 통신
- 파일 전송
- 채팅 애플리케이션
- 멀티플레이어 게임
클라이언트 측
서버 측
'Java' 카테고리의 다른 글
Java(1:1 단방향 통신(클라이언트측)) (0) | 2024.05.22 |
---|---|
Java(1:1 단방향 통신(서버측)) (0) | 2024.05.22 |
Java(고수준 스트림(Data/Object Stream)) (0) | 2024.05.22 |
Java(File copy(문자/ 바이트 기반 입출력(ZIP 파일로 압축)) 및 로그와 파일 저장) (0) | 2024.05.21 |
Java(파일 입/출력 스트림(문자 기반) 및 정규 표현식) (0) | 2024.05.20 |