🐯
경민민 IT 핸드북
  • Orientation
    • 전달사항
    • 복습방법
    • 수료한 선배의 한마디
    • 간단 자기소개
    • 스터디
  • 백엔드
    • Java
      • 1장 프로그래밍 기초
      • 2장 자바 메모리구조
        • 1. Stack
        • 2. Heap
      • 6장 객체
      • 8장 상속
      • 9장 다형성
      • 10장 추상클래스와 인터페이스
      • 13장 Generic
      • 14장 Thread
      • 15장 Network
      • 16장 Lamda
        • 1. 내부 클래스 (Inner Class)
          • DTO , VO, Builder Pattern
        • 2. 람다 표현식 (Lambda Expression)
        • 3. 스트림 API (Stream API)
          • Optional
      • 17장 Enum
  • 프론트
    • Node.js
    • Java Script
      • ES6+
        • Node.js로 자바스크립트 실행
        • let , const , var
        • Destructuring문법
          • Rest(...) 문법
        • Arrow Function
        • 모듈
        • ETC
    • Type Script
      • 개요
      • TS설치 및 환경설정
      • 타입스크립트 기본
        • 기본 자료형들과 타입추론
        • Object, Array , Tuple
        • Any, Unknown, Union Type
        • Function Type
          • Type Assertion && Narrowing
          • Never type
        • Type Aliases와 Interface
        • 리터럴 타입
        • 함수 추가 문법
        • Class문법
        • 객체 타입 추가 문법
        • 실습문제 1차
        • 실습문제 2차
        • 실습문제 3차
    • React
      • 개요
      • SPA 와 MPA
        • SEO(작성예정)
      • 리액트 프로젝트 생성(18.3.1.ver)
        • HTML + react 샘플
        • CRA 와 Vite 비교
      • 리액트 개념들
        • Component
          • 클래스 컴포넌트(작성예정)
          • 함수형 컴포넌트(작성예정)
        • JSX
        • React Virtual Dom
          • Reconciliation
        • hook
          • useState
        • 리액트 데이터 전달
          • FLUX
      • 백엔드 서버 연동
        • 비동기요청
        • 웹소켓
        • Promise(작성예정)
      • 실습문제 1
      • 실습문제 2
      • 실습문제3
      • 실습문제4
  • 프레임워크
    • Spring
      • Spring 개발환경 구축
        • 프로젝트 환경설정
        • 프로젝트 생성
          • MVC Project 생성이슈
        • Maven 설정
        • web.xml 설정
        • Spring Bean Configuration.xml 설정
      • Spring Legacy Project
        • Spring 요청 및 응답 흐름
        • Spring 주요 Annotation
          • 의존성 주입방식의 차이점
          • @ModelAttribute와 유효성검사
          • 비동기처리
          • 스프링 예외처리
        • Logging
        • Pagination
        • Spring File 업로드 및 다운로드
        • Spring WebSocket
        • Spring AOP
      • Spring 라이브러리들(작성예정)
        • Lombok
        • Maven
        • MyBatis
      • Spring 구성 모듈(작성예정)
      • 스프링 과제
    • Spring Boot
      • Spring Boot 개발환경 구축
      • 스프링 부트 프로젝트 생성방법들
        • 프로젝트에서 사용하는 의존성들
      • 스프링 프로젝트 구조
        • SpringBootApplication
      • application.properties
      • Cross Origin
        • CORS
      • WebSocket
        • Stomp(작성중)
      • 로그인(작성중)
      • Spring Security(작성중)
      • 실습문제 Select
      • 실습문제 Update
      • 실습문제 Delete
  • 형상관리(Git)
    • GitHub설정
    • SourceTree를 활용한 깃허브 연동
      • 소스트리 설치
      • Clone
      • Branch
        • Branch Protection rules
          • Branch Protection Rules 상세규칙
        • Rebase 와 Squash (작성예정)
      • Team Project 설정
        • 팀장 프로젝트 셋팅
          • Collaborator
          • .gitignore 설정
        • 팀원 프로젝트 셋팅
        • 공통 프로젝트 진행
  • 프로젝트
    • 진행순서
      • 요구사항 분석 단계
        • 유용한 사이트
      • 프로그램 설계 단계
        • 유용한 사이트
      • 프로그램 구현단계
        • SourceTree를 활용한 Team Project설정
      • 테스트 단계
  • 배포
    • AWS-EC2 배포 연습
    • DevOps
      • IT시스템의 변화와 DevOps
      • DevOps 라이프사이클
    • 젠킨스
      • 도커
        • 도커 설치 방법
        • 도커 기본 명령어들
      • 젠킨스 설치
      • 젠킨스 프로젝트 생성
      • 젠킨스 소스코드 통합 - Github
      • 젠킨스 빌드 설정 - Maven
      • 배포 서버 구축하기
      • 파이프라인 구축
      • AWS 서버 생성
        • AWS 인스턴스 생성
        • AWS - Zenkins 연동
        • AWS - 배포서버 연동
        • AWS - Jenkins CI/CD파이프라인 구축
  • 유용한 사이트 모음
  • SQL
    • SQLD
      • 데이터 모델링의 이해 - 스키마
      • 데이터 모델링의 이해 - ERD
      • 데이터 모델링의 이해 - 정규화
      • 데이터 모델링의 이해 - NULL
      • SQL 기본 및 활용 - WINDOW FUNCTION
    • Oracle
      • 1장 개요
      • 2장 SQL
  • LLM 서비스
    • 1장 LLM에 대한 이해
    • 2장 프롬프트 엔지니어링
      • 프롬프트와 프롬프트 엔지니어링
      • GPT PlayGround
      • 프롬프트 작문 유형
      • 기본 프롬프트 엔지니어링 태크닉
      • 고급 프롬프트 엔지니어링 태크닉
        • ReAct Prompting
        • Active-Prompt
        • Reflexion
        • Graph Prompt
      • OpenAI API설정
      • OpenAI를 활용한 프롬프트 엔지니어링 실습
        • 실습 프롬프트
    • 3장 Lang Chain 프레임워크
      • LangSmith 프레임워크
        • LangSmith를 활용한 LangChain 모니터링 설정
      • LangChain 실습 1 - Prompt
        • 실습 코드
      • LangChain 실습 2 - LLM 캐시와 메모리
    • 4장 RAG
      • Document Loader - 문서 로더
      • Text Splitter - 텍스트 분할
      • Embedding - 임베딩
      • Vector Store - 벡터 저장소
      • Retriever - 검색기
      • ReRanker - 재평가자
      • RAG
Powered by GitBook
On this page
  • 1. Network
  • 2. IP(Internet Protocol)
  • 3. URL(Uniform Resource Locator)
  • ① java.net.URL
  • ② java.net.URLConnection
  • 4. API
  • 5. 웹크롤링
  • 6. TCP(Transmission Control Protocol)
  • ① 3-Way Handshake(TCP 연결시 사용하는 통신방식)
  • ② 브라우저 작동방식
  • 7. UDP(User Datagram Protocol)
  1. 백엔드
  2. Java

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 주소

https://www.data.go.kr/data/15073861/openapi.do

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 요청시?

  1. 웹브라우저(크롬,엣지)는 URL을 해석하여 프로토콜, 도메인명, PORT를 분리

  2. DNS를 통해 도메인명을 IP주소로 변환 후 , 해당 IP주소 + PORT번호에 TCP연결을 수행

  3. 브라우저는 해당 웹 서버에 요청(Request) 메세지 전달

    1. 요청메세지 : 요청 방식, 사용자 정보, 쿠키, 세션데이터 등

  4. 웹 서버는 요청내용을 분석한 후 응답(Response)메세지 반환

    1. 응답메세지 : html, json과 같은 데이터, 상태코드 등

  5. 브라우저는 응답메세지의 데이터를 바탕으로 화면을 랜더링

7. UDP(User Datagram Protocol)

  • 비연결형 통신방식으로 빠른 데이터 통신이 장점인 통신방법

  • 연결 설정 없이 데이터를 Datagram단위로 전송하며, 전송한 데이터를 상대방이 받는다는 보장을 할 수 없는 신뢰도가 낮은 방식의 프로토콜이다.

  • 빠른 데이터 전송이 중요한 통신에서 사용된다

    • 실시간 스트리밍, 게임 등

  • 자바에서는 DatagramSocket과 DatagramPacket을 통해 UDP통신을 구현할 수 있다.

Previous14장 ThreadNext16장 Lamda

Last updated 9 days ago

https://khedu.co.kr/project/teamView.kh?no=5385&cpage=1