15장 Network
1. Network
여러대의 컴퓨터가 데이터를 주고 받기 위한 환경
인터넷이 대표적인 네트워크 구조로, 전세계적으로 사용되는 데이터 전송방식이며, 데이터를 패킷(Packet) 단위로 주고 받음.
네트워크 환경에서 데이터(서비스)를 제공해주는 역할을 서버, 데이터(서비스)를 받는 역할을 클라이언트라고 부른다.(클라이언트-서버 모델)
클라이언트-서버 모델에는 요청(Request)과 응답(Resonse)이 존재함.
클라이언트는 서버에게 데이터를 달라고 요청을 보내야하며, 서버는 클라이언트의 요청에 데이터를 응답 해주는 방식으로 작동한다.
네트워크 통신에서 요청은 IP주소와 Port번호, Path를 기반으로 작동한다.
IP주소의 Port번호마다 다양한 서비스 존재
Port번호 내부의 Path경로마다 다양한 데이터(자원) 존재
2. IP(Internet Protocol)
인터넷을 통해 데이터를 주고 받기 위해 사용하는 규칙(Protocol)으로, 네트워크 상에서 각 장치를 식별하는 고유 주소값으로 사용한다.
내가 작성한 편지를 어디에 보낼지 정할때 우편주소를 사용하듯, 인터넷상에서 데이터를 전송할 때는 IP주소로 전달한다.
IP주소는 IPv4, IPv6등이 존재하며, 사람이 편하게 알아볼 수 있도록 DNS시스템을 사용하는게 일반적이다.
자바에서는 InetAddress클래스를 활용하여 IP주소를 표현한다.
3. URL(Uniform Resource Locator)
URL은 인터넷상에서 특정 자원의 위치를 나타내는 표준 주소 표기 방법입니다.(웹서비스 주소)
URL은 다음과 같은 구성 요소를 포함합니다.
protocol : 자원에 접근하는 방식(http, https, ftp, ...)
host : 자원이 위치하는 주소(ip주소 혹은 도메인명으로 표시)
port : 각 프로토콜의 기본 포트인 경우 생략 가능. 각 호스트 내부에서 자원이 존재하는(서비스되는) 번호.
path : host+port내부에서 자원이 위치하는 세부 경로.
query : 서버에 전달할 파라미터
protocol://host:port/path?query
① java.net.URL
자바에서 URL을 표현하기위해 사용하는 클래스
웹 주소(URL)를 분해하여, 프로토콜정보, 호스트정보, 포트번호정보 등을 확인하거나, 해당 URL위치의 자원에 접근할 수 있다.
② java.net.URLConnection
URL의 openConnection()함수를 통해 반환되는 클래스로, URL 연결정보를 관리한다.
URL자원을 읽는 InputStream과 OutputStream을 통해 URL자원을 읽어 들일 수 있다.
API요청시 HttpUrlConnection객체를 사용할 수 있다. (동기처리)
4. API
API는 애플리케이션끼리 상호작용할 수 있도록 미리 정의된 인터페이스(규칙)
API서버와 클라이언트간의 데이터를 주고받기 위한 명확한 규칙을 제공한다.
규칙에 대한 설명은 API를 제공하는 서버의 메뉴얼을 통해 확인할 수 있다.
ex) 한국환경공단 API 주소
5. 웹크롤링
웹사이트의 HTML데이터를 자동으로 수집하는 작업
데이터 수집, 분석하기 위한 목적으로 사용한다.
크롤링의 대상이 되는 HTML의 구조를 분석하여 필요한 데이터만 추출한다
단, 사이트에서 크롤링을 금지하는 경우가 있을 수 있으므로 , 웹사이트의 루트디렉토리의 robots.txt를 확인하여 크롤링이 불가능한 경로를 파악하거나, 이용약관을 확인하여 크롤링을 허용하는지 파악이 필요하다.
6. TCP(Transmission Control Protocol)
TCP는 연결 지향형(Connection-Oriented) 프로토콜로, 신뢰성이 높은 통신방법 중의 하나.
데이터를 전송하기 전에 "연결"을 설정하고, 수신자의 "응답"을 확인하며 데이터를 순차적으로 전달한다.(3-Way Handshake)
데이터를 전송하기 전 상대방과 제대로 연결되었는지를 확인한 후 전송하는 방식.
단, 복잡한 절차가 추가되므로 전송속도는 느리다.
신뢰도가 중요한 데이터 송/수신방식에서 사용된다
이메일, 파일전송, 기타 웹 브라우징 등에 사용.
자바에서는 ServerSocket과 Socket클래스를 통해 TCP통신을 구현할 수 있다.
① 3-Way Handshake(TCP 연결시 사용하는 통신방식)
TCP가 클라이언트와 서버간에 안정적인 연결을 보장하기 위해 사용하는 연결방법.
1단계 Synchronize : 클라이언트가 서버에 연결 요청을 보내기 위해 SYN(Synchronize)패킷 전송
2단계 Synchronize-Acknowledge : 서버가 요청을 수락하고 클라이언트에게 응답으로 SYN-ACK(Synchronize-Acknowledge)패킷 전송
3단계 Acknowledge : 클라이언트가 서버의 응답을 확인하고 최종 ACK(Acknowledge)패킷을 전송하면 연결 수립
위 과정을 알기 쉽게 해석하자면 다음과 같다.
클라이언트 : 연결가능? (1단계)
서버 : 연경요청승인 (2단계)
클라이언트 : 연결요청 (3단계)
② 브라우저 작동방식
웹브라우저에 https://www.naver.com 요청시?
웹브라우저(크롬,엣지)는 URL을 해석하여 프로토콜, 도메인명, PORT를 분리
DNS를 통해 도메인명을 IP주소로 변환 후 , 해당 IP주소 + PORT번호에 TCP연결을 수행
브라우저는 해당 웹 서버에 요청(Request) 메세지 전달
요청메세지 : 요청 방식, 사용자 정보, 쿠키, 세션데이터 등
웹 서버는 요청내용을 분석한 후 응답(Response)메세지 반환
응답메세지 : html, json과 같은 데이터, 상태코드 등
브라우저는 응답메세지의 데이터를 바탕으로 화면을 랜더링
7. UDP(User Datagram Protocol)
비연결형 통신방식으로 빠른 데이터 통신이 장점인 통신방법
연결 설정 없이 데이터를 Datagram단위로 전송하며, 전송한 데이터를 상대방이 받는다는 보장을 할 수 없는 신뢰도가 낮은 방식의 프로토콜이다.
빠른 데이터 전송이 중요한 통신에서 사용된다
실시간 스트리밍, 게임 등
자바에서는 DatagramSocket과 DatagramPacket을 통해 UDP통신을 구현할 수 있다.
Last updated