Java

Java 프로그래밍 - 자바 네트워크 프로그래밍

Uisin 2024. 9. 26. 14:19

자바 네트워크 프로그래밍

 

네트워크


네트워크란 분산된 두 개 이상의 컴퓨터를 통신망에 연결한 것을 의미
개발자로서 분산된 컴퓨터들이 다른 컴퓨터와 송수신할 수 있는 프로그램을 만드는 것이 네뚹 프로그래밍임

 

 


클라이언트와 서버

 

클라이언트는 서비스를 사용하는 컴퓨터
서버는 서비스를 제공하는 컴퓨터로 뭐 하나만 하는게 정해진게 아니라 컴퓨터는 다 클라이언트와 서버 모두인데 무엇을 하는지에 대한 비중이 클라이언트와 서버를 구분하게함

 


IP주소


- IP주소란? : 컴퓨터와 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해 컴퓨터 마다 부여되는 주소
- MAC주소랑 차이점은? MAC주소는 하드웨어 주소 IP주소는 네트워크 주소
- IPv4 기준 4byte의 주소를 가지고 있으며 각 바이트는 8비트로 이루어져 있어 255.255.255.255의 형태로 나타낼 수 있다.
- 4바이트의 주소는 네트워크주소(그룹)와 호스트주소(개별넘버)로 이루어져있고 서브넷 마스크가 255.255.255.0이면 IPv4기준 IP주소에서 마지막 바이트가 호스트주소에 해당한다
- 서브넷 마스크는 네트워크 부분과 호스트 부분을 구분하는 주소다

 

 

IP주소 관련 클래스 InetAddress의 메서드

 

- byte[]getAddress() : IP주소를 byte 배열로 반환
- static InetAddress[] : 도메인명에 지정된 모든 호스트의 IP주소를 배열에 담아 반환
- getAllByName(String host) : 도메인명에 지정된 모든 호스트의 IP주소를 배열에 담아 반환
- static InetAddress : 도메인명을 통해 IP주소를 얻는다
- getByName(String host) : 도메인명을 통해 IP주소를 얻는다
- String getHostAddress() : 호스트의 IP주소를 반환
- String getHostName() : 호스트의 이름을 반환
- boolean isMulticastAddress() : IP주소가 머맅캐스트 주소인지 확인
- boolean isLoopbackAddress() : IP주소가 loopback 주소인지 알려줌

 

소켓 프로그래밍 TCP와 UDP


소켓이란?

소켓이란 프로세스간 통신에 사용되는 양쪽 끝단을 의미하는데 이는 네트워크상에서 서버, 클라이언트 두 개의 프로그램이 특정 포트를 통해 양방향 통신이 가능하도록 만들어주는 장치다

 


포트란?

포트는 가상의 통신 선로로, 하나의 컴퓨터 안에는 여러 개의 프로세스가 수행되고 있으므로 특정 응용프로그램과 통신하기 위해서는 그 응용프로그램으로 통하는 선로가 필요한데 이를 포트라고 한다

 

TCP와 UDP
TCP는 등기 UDP는 명함 뿌리기
TCP는 클라이언트를 확인 한 후 (이를 3-way handshake 라고한다) 통신 UDP는 클라이언트를 확인하지 않고 주소만 맞으면 통신

<TCP의 특징>
- 데이터 누락 시 데이터 재전송을 하기 때문에 데이터의 전송 순서가 보장이된다
- 데이터의 수신 여부를 확인하기 때문에 정확성이 높다
- 확인 절차 때문에 UDP 보다 느린편이며 미디어를 실시간으로 전송하는 상황에서는 전송 순서를 지키기 때문에 왜곡이 일어날 수 있다

<UDP의 특징>
- 연결하지 않고 통신
- 누락시 데이터 재전송을 요청하지 않기 때문에 전송순서가 보장되지 않을 수 있음
- 데이터 수신여부를 확인하지 않음
- 덕분에 속도가 빠르다
- 음악,영상 스트리밍 등에서 사용된다 (최근에는 TCP와 UDP를 혼합해 사용하는 추세)

 

 

 

개념정리

네트워크

: 분산된 두 개 이상의 컴퓨터를 통신망에 연결한 것을 의미

 

IP

: 네트워킹을 위한 컴퓨터 고유의 네트워크 전용 주소를 의미

 

소켓

:

 

포트

: 건물 내 여러 방이 있고 방마다 다른 용도로 사용되듯 포트 또한 서로 다른 서비스를 구분해 만든 여러 번호를 의미

 

TCP

: 네트워크 프로토콜로 속도는 다소 느리지만 안정성이 높고 데이터의 전송순서가 보장이된다.

 

UDP

: 네트워크 프로토콜로 속도는 빠르지만 안정성이 낮고 전송속도가 보장되지 않는다.