1 minute read

네트워크(Network)

  • 여러대의 컴퓨터를 통신 회선으로 연결한 것
  • 홈 네트웤, 지역 네트웤, 인터넷 등이 해당

서버와 클라이언트

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

IP 주소

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

포트(Port)

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

InetAddress 클래스

  • IP 주소를 다루기 위해 자바에서 제공하는 클래스
메서드 설명
byte[] getAddress() IP주소를 byte배열로 리턴
static InetAddress[] getAllByName(String host) 도메인 명에 지정된 모든 호스트의 IP주소를 배열에 담아 반환
static InetAddress getByAddress(byte[] addr) byte배열을 통해 IP주소를 얻는다.
sstatic InetAddress getByName(String host) 도메인 명을 통해 IP주소를 얻는다.
String getCanonicaHostName() FQDN(Full Qualified Domain Name)을 얻는다.
String getHostAddress() 호스트의 IP주소를 반환한다.
String getHostName() 호스트의 이름을 반환한다.
static InetAddress getLocalHost() 지역호스트의 IP주소를 반환한다.
boolean isMulticastAddress() IP주소가 멀티캐스트 주소인지 알려준다.
boolean isLoopbackAddress() IP주소가 loopback 주소(127.0.0.1)인지 알려준다.

소켓 프로그래밍

  • 소켓을 이용한 통신 프로그래밍

소켓

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

TCP

  • 데이터 전송 속도가 느리지만 정확하고 안정적으로 전달할 수 있는 연결 지향적 프로토콜

UDP

  • 데이터 전송 속도가 빠르지만 신뢰성이 없는 데이터를 전송하는 비연결 지향적 프로토콜

TCP 소켓 프로그래밍

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

Alt text

수업 때 이거 이해 못해서.. 수업 끝나고 그림 그리면서…
이해하려 했으나 안 돼서 유튜브 영상 찾아봤다.
왜케 어렵던지.


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

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

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

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

Categories:

Updated: