1.네트워킹
두대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는것.
1.1 클라이언트/서버(client/server)
서버(server)는 서비스를 제공하는 컴퓨터, 클라이언트(client)는 서비스를 사용하는 컴퓨터.
ex) 파일서버(file server), 메일서버(mail server), 어플래케이션 서버(application server)
서버기반 모델(server-based-model) | P2P모델(peer-to-peer model) |
---|---|
- 안정적인서비스 제공이 가능하다. - 공유데이터의 관리와 보안이 용이하다. - 서버구축비용과 관리비용이 든다. |
- 서버구축 및 운용비용을 절감할 수 있다. - 자원의 활용을 극대화 할 수 있다. - 자원의 관리가 어렵다. - 보안이 취약하다. |
1.2 IP주소(IP address)
IP주소는 컴퓨터(호스트, host)를 구별하는데 사용하는 고유한 값.
4 byte(32bit)의 정수로 구성되어있음. a.b.c.d와 같은 형식으로 표현됨.
abcd는 0~255사이의 정수이다.
윈도우 콘솔에서 ifconfig를 확인하면 ip주소를 확인 할 수 있음.
ex)
- ip주소
192.168.10 .100
(네트워크주소).(호스트주소) - 서브넷마스크
255.255.255.0
1.3 InetAddress
자바에서 IP주소를 다루기 위한 클래스로 InetAddress 제공함
1.4 URL(Uniform Resource Location)
URL은 인터넷에 존재하는 여러 서버들이 제공하는 자원에 접근할 수 있는 주소를 표현하기 위한것.
“프로토콜://호스트명:포트번호/경로명/파이명?쿼리스트링#참조”의 형태로 이루워져있음.
- 프로토콜 : 자원에 접근하기 위해 서버와 통신하는데 사용되는 통신규약(http)
- 호스트명: 자원을 제공하는 서버의 이름(www.javahome.com)
- 포트번호 : 통신에 사용되는 서버의 포트번호(80)
- 경로명 : 접근하려는 자원이 저장된 서버상의 위치(/sample/)
- 파일명 : 접근하려는 자원의 이름(hello.html)
- 쿼리 : url에서 ?이후부분
- 참조 : url에서 # 이후부분
java에서 URL 클래스를 제공함
1.5 URL Connection
어플리케이션과 URL간의 통신연결을 나타내는 클래스의 최상위 추상클래스.
1 | import java.net.*; |
- 아래코드는 해당 페이지의 내용을 읽어온다..
1 | import java.net.*; |
- 이진파일을 읽어 저장함.
1 | import java.net.*; |
2. 소켓 프로그래밍
소켓을 이용한 통신프로그래밍.
java.net패키지를 통해 소켓 프로그래밍을 지원함.
2.1 TCP와 UDP
TCP/IP 프로토콜은 이기종 시스템간의 통신을 위한 표준 프로토콜로 프로토콜의 집합이다.
TCP와 UDP모두 TCP/IP에 포함되어 있음, OSI 7계층의 전송계층에 해당하는 프로토콜이다.
항목 | TCP | UDP |
---|---|---|
연결방식 | .연결기반 - 연결 후 통신(전화기) - 1:1통신방식 |
.비연결기반 - 연결없이 통신(소포) - 1:1, 1:n, n:n 통신방식 |
특징 | .데이터의 경계를 구분안함 .신뢰성 있는 데이터를 전송 - 데이터의 전송순서가 보장됨 - 데이터의 수신여부를 확인함 (데이터가 손실되면 재전송) - 패킷을 관리할 필요가 없음 .UDP보다 전송속도가 느림 |
.데이터의 경계를 구분함 .신뢰성 없는 데이터 전송 - 데이터의 전송순서가 바뀔 수 있음 - 데이터의 수신여부를 확인안 함 (데이터가 손실되어도 알 수 없음) - 패킷을 관리해 주어야 함 .TCP보다 전송속도가 빠름 |
관련 클래스 | .Scoket .ServerSocket |
.DatagramSocket .DatagramPacket .MulticastSocket |
2.3 TCP 소켓 프로그래밍
서버 프로그램과 클라이언트 프로그램간의 통신과정 단계
- 서버프로그램에서는 서버소켓을 사용하여 서버의 컴퓨터의 특정 포트에서 클라이언트의 연결요청을 처리할 준비를 한다.
- 클라이언트 프로그램은 접속할 서버의 IP주소와 포트 정보를 가지고 소켓을 생성해서 서버에 연결을 요청한다.
- 서버소켓은 클라이언트의 연결요청으 ㄹ받으면 서버에서 새로운 소켓을 생성해서 클라이언트의 소켓과 연결되도록 한다.
- 이제 클라이언트 소켓과 새로 생성된 서버의 소켓은 서버소켓과 관계없이 일대일 통신을 한다.