-
JAVA | 네트워킹 (Networking)programming/JAVA 2020. 6. 5. 23:24
네트워킹 (Networking)
두 대 이상의 컴퓨터를 연결하여 네트워크를 구성하는 것을 말한다. 손쉽게 데이터를 주고받거나 자원을 함께 공유하고자 하는 노력에서 시작되었다.
자바에서 제공하는 java.net 패키지를 이용하여 온라인게임이나 메신저와 같은 인터넷을 이용한 다양한 네트워크 애플리케이션을 만들 수 있다.
클라이언트/서버 ( client/server )
컴퓨터간의 관계를 역할로 구분하는 개념이다.
서버(Server): 서비스를 제공하는 컴퓨터를 말한다. (provider)
클라이언트(Client): 서비스를 이용하는 컴퓨터를 말한다. (user)
서버가 서비스를 제공하려면 서버프로그램이 있어야 하고 클라이언트가 서버에 연결하려면 클라이언트프로그램이 있어야 한다.
제공하는 서비스종류에 따라 메일서버, 파일서버, 웹서버 등이 있다.
네트워크를 구성할 때 전용서버를 두는 것을 서버기반 모델이라고 하고, 전용서버없이 각 클라이언트가 서버역할까지 동시에 수행하는 것을 P2P모델이라고 한다.
서버기반 모델(server-based model) P2P 모델(peer-to-peer model) - 안정적인 서비스 제공이 가능하다.
- 공유 데이터의 관리와 보안이 용이하다.
- 서버구축비용과 관리비용이 든다.- 서버구축 및 운용비용을 절감할 수 있다.
- 보안이 취약하다.
- 자원의 활용을 극대화 할 수 있다.
- 자원의 관리가 어렵다.IP 주소 (IP Address)
컴퓨터를 구별하는데 사용되는 고유한 값으로 인터넷에 연결된 모든 컴퓨터는 IP주소를 갖는다. 4Byte(32 bit)로 구성되어 있고 (0.0.0.0 ~ 255.255.255.255) 범위의 숫자이다.
IP주소는 네트워크 주소와 호스트주소로 구성되어 있다.
URL (Uniform Resource Location)
인터넷에 존재하는 여러 서버들이 제공하는 자원에 접근할 수 있는 주소를 표현하기 위한 것으로 아래의 형태를 따른다.
✔ 프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조
ex) http://www.java.com:89/sample/hello.html?referer=java#index1
프로토콜 : 자원에 접근하기 위해 서버와 통신하는데 사용되는 통신 규약 (http)
호스트명 : 자원을 제공하는 서버의 이름 (ex) www.naver.com
포트번호 : 통신에 사용되는 서버의 포트번호
경로명 : 접근하려는 자원이 저장된 서버상의 위치
파일명 : 접근하려는 자원의 이름
쿼리(query) : URL에서 ? 이후의 부분
참조 : URL 에서 # 이후의 부분
소켓 프로그래밍
소켓을 이용한 통신 프로그래밍을 의미한다.
소켓이란? 프로세스간의 통신에 사용되는 양쪽 끝단을 말한다.
전화할 때 양쪽에 전화기가 필요한 것처럼 프로세스간의 통신에서도 양쪽에 소켓이 필요하다.
TCP와 UDP
TCP/IP 프코토콜에 포함된 프로토콜. OSI7계층의 전송계층에 해당한다.
항목 TCP UDP 연결방식 연결기반(connection-oriented)
- 연결 후 통신 (전화기 생각!)
- 1:1 통신방식비연결기반(connectionless-oriented)
- 연결없이 통신 (소포 생각!)
- 1:1, 1:n, n:n 통신방식특징 데이터의 경계를 구분안함(byte-stream)
신뢰성 있는 데이터 전송
- 데이터의 전송순서가 보장
- 데이터의 수신여부를 확인
(데이터가 손실되면 재전송)
- 패킷을 관리할 필요가 없음
UDP보다 전송 속도가 느림데이터의 경계를 구분함 (datagram)
신뢰성 없는 데이터 전송
- 데이터의 전송순서가 바뀔 수 있음
- 데이터의 수신여부를 확인 안함
(데이터가 손실되어도 알 수 없음)
- 패킷을 관리해줘야 함
TCP보다 전송속도가 빠름관련 클래스 Socket
ServerSocketDatagramSocket
DatagramPacket
MulticastSocketTCP 는 신뢰있는 데이터 전송이 요구되는 통신에 적합하고, UDP 는 데이터가 중간에 손실되어 좀 끊기더라도 빠른 전송이 필요할 때 적합하다. 또한 보낸 메세지를 순서대로 수신한다는 보장이 없기 때문에 뒤늦게 도착한 데이터는 무시하면 된다.
TCP 소켓 프로그래밍
UDP 소켓 프로그래밍
UDP 통신에서 사용하는 소켓은 DatagramSocket이다.
DatagramPacket은 헤더와 데이터로 구성되어 있으며, 헤더에는 DatagramPacket을 수신할 호스트의 정보가 저장되어 있다. 소포(Packet)에 수신할 상대편의 주소를 적어서 보내는 것과 같다고 이해하자 !
그래서 DatagramPacket을 전송하면 DatagramPacket에 지정된 주소의 DatagramSocket에 도착한다.
참고: https://bombichun.tistory.com/entry/JAVA%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9Networking
'programming > JAVA' 카테고리의 다른 글
JAVA | IntelliJ IDEA 설치하기 (0) 2020.12.16 JAVA | Java SE 11 설치 (0) 2020.12.15 JAVA | Applet (애플릿) (0) 2020.06.03 JAVA | AWT & Swing (0) 2020.06.02 JAVA | 스레드(Thread) (0) 2020.05.30