25.03.06 (목) 18일차 Java

허배령·2025년 3월 6일

괴발개발 TIL

목록 보기
19/54

네트워크

LAN (Local Area Network) - 집, 사무실
WAN (Wide Area Network) - 국가와 국가간
PAN (Personal Area Network) - 스마트폰, 핫스팟
MAN (Metropolitan Area Network) - 도시권
프로토콜 - 컴퓨터 네트워크에서 데이터를 송수신하기 위한 규칙(약속)

서버와 클라이언트

  • 서버는 서비스를 제공하는 프로그램으로
    클라이언트의 연결을 수락하고 요청 내용을 처리 후 응답을 보내는 역할

  • 클라이언트는 서비스를 받는 프로그램으로
    네트워크 데이터를 필요로 하는 모든 어플리케이션이 해당 됨

IP주소

  • 네트워크 상에서 컴퓨터를 식별하는 번호로 네트워크 어댑터(랜카드)마다 할당되어 있음

포트 (Port)

  • 같은 컴퓨터 내에서 프로그램을 식별하는 번호로
    클라이언트는 서버 연결 요청 시 IP주소와 포트 번호를 알아야 함
  • 포트 하나당 하나의 프로그램만 들어올 수 있다
    • 포트번호 1 ~ 65535
    • 0 ~ 0123 (이미 사용되고 있음, 이용할 수 없는 번호)

소켓 프로그래밍

  • 소켓을 이용한 통신 프로그래밍
  • 프로세스 간의 통신에 사용되는 양쪽 끝단
ex) 클라이언트와 서버가 서로의 ip와 port를 알고 있다
Client	<--------------------->	 server
	   ㄴ socket                ㄴ socket

TCP/IP

  • 4계층 모델
  • 응용 계층 - HTTP,FTP(웹 브라우저, 파일 전송)
  • 전송 계층 - TCP, UDP (재전송, 패킷전송)
  • 인터넷 계층 - IP
  • 네트워크 접근 계층 - Ethernet (LAN 카드)

프로토콜 (Protocol)

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

    ex) 은행, 주민센터 등의 서류 양식

    • 규약을 어기면 안됨!!!

TCP (Transmission Control Protocol)

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

UDP (User Datagram Protocol)

  • 데이터의 빠른 전달을 보장하기위한 방식으로 비연결 지향형 통신이다.
  • 확인 및 재전송 작업이 없다.
  • TCP에 비해 안정성은 떨어지지만 더 빠르고 간결함.
  • 게임, 실시간 스트리밍 서비스

TCP 소켓 프로그래밍

  • 클라이언트와 서버간의 1:1 소켓 통신
  • 서버가 먼저 실행 되어 클라이언트의 요청을 기다려야 하고
    서버용 프로그램과 클라이언트용 프로그램을 따로 구현해야 함
  • 자바에서는 TCP 소켓 프로그래밍을 위해 java.net패키지에서 ServerSocket과 Socket클래스 제공

서버용 TCP 소켓 프로그래밍 순서

  1. 서버의 포트번호 정함
  2. 서버용 소켓 객체 생성
  3. 클라이언트 쪽에서 접속 요청이 오길 기다림
  4. 접속 요청이 오면 요청 수락 후 해당 클라이언트에 대한 소켓 객체 생성
  5. 연결된 클라이언트와 입출력 스트림 생성
  6. 보조 스트림을 통해 성능 개선
  7. 스트림을 통해 읽고 쓰기
  8. 통신 종료

클라이언트용 TCP 소켓 프로그래밍 순서

  1. 서버의 IP주소와 서버가 정한 포트번호를 매개변수로 하여 클라이언트용 소켓 객체 생성
  2. 서버와의 입출력 스트림 오픈
  3. 보조 스트림을 통해 성능 개선
  4. 스트림을 통해 읽고 쓰기
  5. 통신 종료

UDP 소켓 프로그래밍

  • UDP는 연결 지향적이지 않기 때문에 연결 요청을 받아줄 서버 소켓이 필요 없음
  • java.net패키지에서 제공하는 두 개의 DatagramSocket간에
    DatagramPacket으로 변환된 데이터 주고 받음

서버용 UDP 소켓 프로그래밍 순서

  1. 서버의 포트번호 정함
  2. DatagramSocket 객체
  3. 연결한 클라이언트 IP주소를 가진 InetAddress 객체 생성
  4. 전송할 메시지를 byte[]로 바꿈
  5. 전송할 메시지를 DatagramPacket 객체에 담음
  6. 소켓 레퍼런스를 사용하여 메시지 전송
  7. 소켓 닫음

클라이언트용 UDP 소켓 프로그래밍 순서

  1. 서버가 보낸 메시지를 받을 byte[] 준비
  2. DatagramSocket 객체 생성
  3. 메시지 받을 DatagramPacket객체 준비
  4. byte[]로 받은 메시지를 String으로 바꾸어 출력
  5. 소켓 닫음
profile
인생은 변수

0개의 댓글