
Client
: 서비스를 요청해서 사용하는 컴퓨터
Server
: 여러 명의 사용자들에게 서비스를 제공하는 컴퓨터
미리 정의된 프로토콜을 사용하여 통신함!
종류
- 웹 서버
       웹 서버 : WWW에서 서비스를 제공 / 웹에서 데이터를 주고받을 때 사용
       클라이언트 : 웹 브라우저
       프로토콜 : HTTP(Hypertext Transfer Protocol)
- 이메일 서버
       메일 서버
       클라이언트 : 이메일 프로그램
       프로토콜 : SMTP(Simple Mail Transfer Protocol)
- DNS 서버
       DNS 서버 : 도메인을 IP 주소로 변환해주는 서버
       클라이언트 : 웹 브라우저
       프로토콜 : DNS(Domain Name System)
프로토콜 더 알아보기
- TCP/IP (Transmission Control Protocol/Internet Protocol)
       인터넷에서 데이터를 전송하기 위해 사용되는 프로토콜의 집합 
        TCP :  신뢰성 있는 데이터 전송을 담당
        IP : 데이터의 패킷화와 라우팅을 담당 
        대부분의 인터넷 통신은 TCP/IP 프로토콜을 기반으로 이루어짐
- FTP (File Transfer Protocol)
       파일 전송을 위해 사용
       주로 웹 사이트의 파일 업로드 및 다운로드에 사용
- POP3 (Post Office Protocol version 3)
      이메일 수신을 위해 사용
- IMAP (Internet Message Access Protocol)
      이메일 수신 및 관리를 위해 사용
       POP3와 달리 이메일 서버에 있는 이메일을 클라이언트와 동기화하여 관리 가능
- DHCP (Dynamic Host Configuration Protocol)
       네트워크에서 IP 주소 및 기타 네트워크 구성 정보를 동적으로 할당하는 데 사용
       컴퓨터나 기기가 네트워크에 연결될 때 자동으로 IP 주소를 할당해 줌
- SSH (Secure Shell)
      원격 컴퓨터에 안전하게 접속하기 위해 사용
      암호화된 터미널 세션을 제공하여 데이터의 보안을 유지
IP 주소
IP : 네트워크에 존재하는 컴퓨터를 유일하게 식별하는 숫자
- IPv4 : 32 bit
- IPv6 : 128 bit / 폭발적으로 늘어나는 인터넷 사용에 대비하기 위해 만들어짐
자기 컴퓨터의 IP 주소 확인 방법 : CMD창 > ipconfig
호스트 이름
: 네트워크 상에서 컴퓨터의 이름
  표준인 DNS를 사용해서 생성되어 인간에게 친근한 문자열을 사용해서 이름을 지음
모든 컴퓨터는 자기 자신을 가리키는 특별한 호스트 이름과 IP주소를 가지고 있음
                        호스트 이름 : localhost
                        IP 주소 : 127.0.0.1
URL(Uniform Resource Locater)
: 자원의 위치를 나타내기 위한 규약 
 인터넷 상의 파일이나 데이터베이스 같은 자원에 대한 주소를 지정
  ** 자원 : 대개 파일, 인터넷은 거대한 하나의 파일 시스템
  인터넷에서 웹 페이지를 볼 때 웹 브라우저의 주소 칸에 적는 값
구성 : 자원에 접근할 때 사용하는 프로토콜, 자원의 이름으로 구성
표시 방법 : 호스트 이름에 파일의 경로를 붙여서 표시
자원의 이름 : 호스트 이름, 파일 이름, 포트 번호, 참조 등의 필드로 구성
호스트 이름, 파일 이름은 필수이고 나머지는 생략 가능
package ex17;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class host2ip {
    public static void main(String[] args) {
        String hostname = "www.naver.com";
        try {
            InetAddress address = InetAddress.getByName(hostname);
            System.out.println("IP주소: " + address.getHostAddress());
        } catch (UnknownHostException e) {
            System.out.println(hostname + "의 IP 주소를 찾을 수 없습니다.");
        }
    }
}
인터넷에서 파일 다운로드
package ex17;
import java.io.*;
import java.net.*;
public class URLConnectionReader {
    public static void main(String[] args) throws IOException {
        URL site = new URL("http://naver.com/");
        URLConnection url = site.openConnection();
        BufferedReader in = new BufferedReader(
                new InputStreamReader(url.getInputStream())
        );
        String inLine;
        while ((inLine = in.readLine()) != null) {
            System.out.println(inLine);
        }
        in.close();
    }
}
네트워크에서 데이터를 읽는 방법 : 스트림을 네트워크에 연결해서 읽기
- URL 클래스의 객체 생성
       java.net : 네트워크 프로그래밍을 위한 패키지
       java.net.URL : 프로그램과 인터넷 상의 원격 컴퓨터에 자원을 연결하는 클래스
       URL 생성자를 호출하면서 사이트의 주소를 전달
       URL이 만들어지면 그 내용을 수정할 수 없음
- URLConnection 객체를 생성
      URL 객체를 이용해서 연결하기 위함
- URLConnection 객체의 getInputStream() 호출
- Stream에서 데이터 읽기
Share article