TCP/IP란?
- "Transmission Control Protocol/Internet Protocol"의 약자입니다.
- 컴퓨터 네트워크에서 데이터 통신을 위한 중요한 프로토콜(규약) 집합을 말합니다.
- TCP와 IP는 각각 데이터 전송과 패킷 라우팅에 관련된 기능을 제공합니다.
- TCP/IP는 전세계적으로 사용되는 인터넷과 같은 네트워크에서 기본 프로토콜로 사용되며, 데이터의 신뢰성과 효율성을 확보하기 위한 다양한 기능을 포함하고 있습니다.
1. IP (Internet Protocol)
- IP는 인터넷을 통해 데이터 패킷을 전달하는 역할을 합니다.
- IP는 각 기기를 고유하게 식별할 수 있는 IP 주소를 할당하고, 이 주소를 사용하여 데이터 패킷을 전송하고 수신하는 역할을 합니다.
- IP는 데이터 패킷의 라우팅을 처리하여 목적지 기기까지 패킷이 도달할 수 있도록 합니다.
- 하지만 IP 자체는 패킷의 전송 순서나 신뢰성을 보장하지 않습니다.
2. TCP (Transmission Control Protocol)
- TCP는 데이터의 신뢰성을 보장하며, 전송 중에 발생할 수 있는 오류나 손실을 다룹니다.
- TCP는 데이터를 세그먼트라는 작은 블록으로 나누어 전송하고, 수신 측에서는 이 세그먼트를 재조립하여 원래의 데이터로 복원합니다.
- TCP는 패킷이 올바른 순서로 도착하도록 보장하며, 재전송과 흐름 제어를 통해 데이터 전송의 효율성을 높이고 혼잡을 피하는 메커니즘을 제공합니다.
프로토콜 종류
- HTTP (Hypertext Transfer Protocol): 웹 브라우징을 위한 프로토콜로, 웹 페이지를 요청하고 응답하는 데 사용됩니다.
- SMTP (Simple Mail Transfer Protocol): 이메일 전송을 위한 프로토콜로, 이메일 서버 간에 메일을 전송하는 데 사용됩니다.
- FTP (File Transfer Protocol): 파일 전송을 위한 프로토콜로, 파일을 업로드하고 다운로드하는 데 사용됩니다.
- DNS (Domain Name System): 도메인 이름을 IP 주소로 변환하거나, 반대로 IP 주소를 도메인 이름으로 변환하는 역할을 합니다.
JAVA예시
<Server.java>
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(12345); // 포트 번호 12345로 서버 소켓 생성
System.out.println("서버 대기 중...");
Socket clientSocket = serverSocket.accept(); // 클라이언트의 연결 요청 대기
// 클라이언트로부터 데이터를 받아서 처리
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String receivedData = in.readLine();
System.out.println("클라이언트로부터 받은 데이터: " + receivedData);
// 클라이언트에 응답 데이터 전송
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
out.println("서버에서 보낸 응답 데이터: Hello, Client!");
// 리소스 해제
in.close();
out.close();
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- java.net 패키지를 활용해 서버를 만들 수 있습니다.
<Client.java>
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
Socket clientSocket = new Socket("127.0.0.1", 12345); // 서버 IP와 포트로 클라이언트 소켓 생성
// 서버로 데이터 전송
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
out.println("Hello, Server!");
// 서버로부터 응답 데이터 받아서 처리
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String responseData = in.readLine();
System.out.println("서버로부터 받은 응답 데이터: " + responseData);
// 리소스 해제
out.close();
in.close();
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
감사합니다!
'JAVA > Coding' 카테고리의 다른 글
[JAVA] AWT로 창띄우고 버튼과 메모지 만들기 - member, anonymous inner class사용 (0) | 2023.09.05 |
---|---|
[JAVA] 자바 소켓(Socket)통신 이란? 코드 구현 (0) | 2023.09.01 |
[JAVA] 자바 스택을 사용해서 후위 표기법 만들기 (3) | 2023.07.25 |
[JAVA] 자바 숫자 야구 게임 만들기 (3) | 2023.07.18 |
[JAVA] Vector를 사용해서 학생 성적 관리 프로그램 만들기 (0) | 2023.07.13 |