자바의 정석

자바의 정석 16

그zi운아이 2023. 8. 31. 21:50

이 글은 Java의 정석 3rd Edition을 읽고 정리한 내용입니다.

Chapter 16

네트워킹


1. 네트워킹

네트워킹이란 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것을 말한다.

자바에서 제공하는 java.net패키지는 네트워크 어플리케이션의 데이터 통신 부분을 쉽게 작성할 수 있다.

 

1.1 클라이언트/서버

서버는 서비스를 제공하는 컴퓨터아기 클라이언트는 서비스를 사용하는 컴퓨터가 된다

서버에 접속하는 클라이언트의 수에따라 한서버거 여러 가지 서비스를 제공하기도 하며

하나의 서비스를 여러대의 서버로 제공하기도 한다.

서버기반 모델 P2P 모델
- 안정적인 서비스의 제공이 가능하다.
- 공유 데이터의 관리와 보안이 용이하다.
- 서버구축비용과 관리비용이 든다
-서버구축 및 운용비용을 절감할 수 있다.
- 자원의 활용을 극대화 할 수 있다.
- 자원의 관리가 어렵다.
- 보안이 취약하다.

1.2 IP 주소 

IP주소는 컴퓨터를 구별하는데 사용되는 고유한 값으로 인터넷에 연결된 모든 컴퓨터는 IP주소를 갖는다. IP주소는 IPv4 와 IPv6로 이러지고 있다.

IPv4는 32비트로 이 있고 10진수로 표현되고 IPv6는 IPv4가 주소가 부족하단 단점을 가지고 나왔는데 128비트로 이를 보안해준다 16진수로 표현된다.

IP주소와 서브넷 마스크를 비트연산자 &로 연산하면 IP주소에서 네트워크 주소만을 뽑아낼 수 있다.

 

1.3 InetAddress

자바에서 IP주소를 다루기 위한 클래스로 InetAddress를 제공하고 다음과 같은 메소드가 정의되어 있다.

1.4 URL

URL은 인터넷에 존재하는 여러 서버들이 제공하는 자원에 접근하는 주소를 표현하기 위한 것이다.

프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조 

프로토콜 자원에 접근하기 위해 서버와 통신하는데 사용되는 통신규약(http,https)
호스트명 자원을 제공하는 서버으 ㅣ이름
포트번호 통신에 사용되는 서버의 포트번호
경로명 접근하려는 자원의 이름
파일명 접근하려는 자원의 이름
쿼리 URL에서 ? 이후의 부분
참조 URL에서 #이후의 부분

1.5 URLConnection

URLConnection은 어플리케이션과 URL간의 통신연결을 나타내느 클래스의 최상위 클레스로 추상클래스이다 

URLConnection을 사용해서 연결하고자 하는 자우너에 접근하고 읽고 쓰기를 할 수 있다.

 

2.소켓 프로그래밍 

소켓을 이용한 통신 프로그래밍으로 소켓이란 프로세스간의 통신에 사용되는 양쪽 끝단을 의미한다.

 

2.1 TCP와 UDP

TCP/IP 프로토콜의에 포함되어 있으며 OSI 7계층 중에 전송계층에 해당하는 프로토콜이다.

항목 TCP UDP
연결방식 연결기반 
- 연결 후 통신
- 1:1
비연결기반 
- 연결없이 통보
- 1:1, 1:n 방식
특징 데이터의 경계를 구분안함
신뢰성 있는 데이터 전송

데이터의 경계를 구분함 
신뢰성 없는 데이터 전송
관련 클래스 Socket
ServerSocket
DatagramSocket
DatagramPacket
MulticastSocket

2.2 TCP소켓 프로그래밍 

TCP소켓 프로그래밍은 클라이언트와 서버간의 일대일 통신이다.

서버 프로그램에서 서버소켓을 사용해 서버 컴퓨터의 특정 포트에서 클라이언트의 연결요청 처리 준비 에서는 서버소켓이 클라이언트의 SYN 메시지를 기다립니다.
클라이언트 프로그램은 접속할 서버의 IP주소, 포트 정보를 가지고 소켓을 생성해 서버에 연결 요청에서 클라이언트가 SYN 메시지를 보냅니다.
서버소켓은 클라이언트의 연결요청을 받으면 서버에 새로운 소켓을 생성해 클라이언트 소켓과 연결에서는 실제로 SYN+ACK 메시지가 클라이언트에게 보내집니다.
클라이언트 소켓과 새로 생성된 서버의 소켓은 서버소켓관 관계없이 1:1통신에서는 ACK 메시지가 서버에게 보내지고, 이후에 실제 데이터 통신이 시작됩니다.

TCP를 이용한 소켓프로그래밍을 위해 Socket과 ServerSocket클래스를 제공한다.

Socket 
프로세스간 통신을 담당하며 InputStream과 OutputStream을 가지고 있다.
이 두 스트림을 통해 프로세스의 통신이 이루어진다.

ServerSocket
포트와 연결되어 외부의 연결요청을 기다리다 요청이 들어오면
Socket을 생성해서 소켓과 소켓간의 통신이 이루어지도록 한다.

 

'자바의 정석' 카테고리의 다른 글

자바의 정석 13장  (0) 2023.08.28
자바의 정석 12장  (0) 2023.08.27
자바의 정석 11장  (0) 2023.08.22
자바의 정석 10장  (0) 2023.08.21
자바의 정석 6장  (0) 2023.06.13