슈퍼코딩/주특기(JAVA)

2024.05.27(월) 슈퍼코딩 신입연수원 9주차 Day 1 후기 - 네트워크, 프로토콜, HTTP, Web API

곰돌이볼 2024. 5. 27. 08:47
  • 강의
    • 82강(Big picture) ~ 87강(네트워크 및 HTTP wrap-up)

네트워크


  • 네트워크
    • 두 장치 간의 정보를 주고받는 구조
  • LAN
    • Local Area Network
  • WAN
    • Local Area Network
    • LAN보다 큰 범위
    • 인터네트워킹 : 라우터들의 연결, 서로의 네트워킹의 연결
    • LAN 간의 인터네트워킹
  • Internet
    • 가장 큰 WAN
    • 국가 간의 WAN 인터네트워킹
    • 해저 광케이블을 이용해서 국가 간의 인터넷 연결
  • ISP
    • Internet Service Provider
    • 국가나 지역 단위
    • 한국의 경우에는 통신 3사가 ISP 역할을 맡음
  • WWW
    • World Wide Web
    • 모든 웹페이지를 관리하고 있음
    • 인터넷을 통해서 사람들과 정보 공유하는 공간
  • 존 버너스리
    • WWW
    • HTTP : 공식 프로토콜
    • URL path
    • 창시함

프로토콜


  • 회선 교환 방식
    • 정보를 전달하는 동안 계쏙해서 회선을 점유하는 방식
    • 과거에 사용한 정보전달 방식
    • 문제점 : 동시에 여러 회선 사용 X
  • 패킷 교환 방식
    • 패킷(packet) 단위로 정보를 전송하는 방식
    • 최산 정보 전달 방식
  • 프로토콜
    • 서로 간의 의사소통을 하는 규칙과 규약의 집합
    • 네트워크 프로토콜 : 컴퓨터 네트워크에서 패킷의 생성, 전송, 해석, 처리와 관련된 규칙과 규약의 집합

Packet

  • 구조 : header + body
  • header
    • protocol
      • ethernet
      • wifi
    • mac address | protocol
      • mac address : 네트워크를 이용한 장비의 고유 식별자
      • mac protocol : IPv4, IPv6
    • ip address | protocol
      • ip address : 인터넷이나 로컬 네트워크에서 장치들의 식별자
      • IP protocol : TCP, UDP
    • port
      • 네트워크 장치 데이터를 주고받는 통로
      • 한 컴퓨터에 1 ~ 65535 통로 존재
      • 하나의 포트를 사용 중에는 사용할 수 없음
    • 전송할 위치, 오류검출 등 메타데이터
    • body(= payload)
      • Protocol
        • HTTP, FTP, SMTP
      • Data : 전달할 데이터

TCP/IP 4계층

  • Application Layer : port, payload → payload의 protocol만 백엔드 개발자가 설정 가능
    • application에 적절한 프로토콜 선택
    • 주요 프로토콜 : TCP 전송계층 기반 프로토콜, UDP 전송계층 기반 프로토콜
    • 프로토콜 선택 시 고려사항
      • 데이터 신뢰성 : TCP(신뢰성) VS UDP(속도)
      • 네트워크 모델 : 서버-클라이언트 구조, P2P 네트워크 구조, 중앙 집중 구조
      • 서비스 특화
      • 실시간성 : webSocket, MQTT
      • 보안성 : HTTPS, SSH
  • Transport Layer : IP Address | Protocol
    • 데이터의 안정적인 전송 담당으로, 포트 번호를 사용해서 통신 제공
    • 주요 프로토콜 : TCP, UDP
  • Internet Layer : Mac Address | Protocol
    • 네트워크 주소를 기반으로 데이터 전송
    • 주요 프로토콜 : IPv4, IPv6, NCP(IP 이전의 주소체계)
  • Network Intreface : header의 Protocol
    • 컴퓨터의 물리적 네트워크 연결
    • 주요 프로토콜 : Ethernet, WIFI

네트워크 모델

  • 서비스 구성 시 각 서버와 클라이언트 간의 네트워크 구조 모델
  • 서버-클라이언트 구조
    • 서버와 클라이언트 역할 분리
    • 요청-응답 방식
    • 서버 중앙 집중화
  • P2P 구조
    • 서버와 클라이언트 혼합
    • 자원 공유와 데이터 분산
    • 분산형 구조
  • 중앙 집중식 구조
    • 서버와 클라이언트 역할 분리
    • 단일 장애점
    • 중앙화된 관리
    • ex) 이메일

 TCP

  • Transmission Control Protocol, 연결형 프로토콜
  • 데이터 안정적을 위해서 신뢰성, 흐름을 제어하는 전송계층 프로토콜
  • 특징
    • 패킷 순서 보장
    • 데이터 흐름 제어
    • 재전송을 통한 데이터 신뢰성 보장
    • 연결 : 3-way handshake(SYN → SYN/ACK → ACK)
    • 연결 해제 : 4-way handshake(FIN → ACK → FIN → ACK)
  • TCP 기반의 애플리케이션 계층의 프로토콜
    • 서버-클라이언트 구조 적합 : webSocket, FTP, HTTP, HTTPS, SSH
    • P2P 네트워크 구조 적합 : SMTP, MQTT, Telnet, POP3
    • 중앙 집중 구조 적합 : BitTorrent

UDP

  • User Datagram Protocol, 비연결형 프로토콜
  • 데이터 신뢰성보다는 속도, 간단한 통신이 특징인 전송계층 프로토콜
  • 특징
    • 패킷 순서 보장 X
    • 데이터 흐름 제어 X
    • 낮음 신뢰성
    • 3-way handshake, 4-way handshake 사용 X
    • UDP 기반의 애플리케이션 계층의 프로토콜
      • 서버-클라이언트 구조 적합 : DNS, DHCP
      • P2P 네트워크 구조 적합 : RTSP, RTP
      • 중앙 집중 구조 적합 :UDP hole punching
  • web에서 사용하는 프로토콜
    • HTTP, HTTPS 프로토콜 사용
    • 이유(web 구조)
      • 데이터 신뢰성 보장 필요
      • server-client 구조
      • 실시간 필수 X

URL

  • Uniform Resource Location
  • 웹 페이지의 리소스 위치를 특정하는 방식
  • 구조
    • 스킴 + 패킷 목적지 + 특정 파일 위치
    • 스킴 + 호스트 + 특정 파일 위치
    • 스킴 : 프로토콜 + ://
    • 패킷 목적지 : IP 주소 + Port
    •  호스트 : 서브 도메인 + 도메인 + port
    • 특정 파일 위치 : 디렉터리 이름 + 파일 이름
  • port번호 생략
    • http=80, https=443이면 생략가능
  • 도메인
    • IP 주소의 별칭
  • DNS 서버
    • Domain Name System
    • 도메인을 이용해서 IP주소를 반환하는 서버
    • 실습 : nslookup
      • 응답받은 도메인을 브라우저에 입력하면 google.com로 이동 가능

 


HTTP


  • HypterText Transfer Protocol
  • 브라우저와 웹 서버 간의 데이터 교환 프로토콜
  • 웹 페이지 요청 및 응답 처리
  • HTTP/1.1 : 주로 사용하는 버전
  • HTTPS : HTTP + SSL
  • 특징
    • 데이터 유실률 ↓ : TCP를 이용한 프로토콜
    • 서버-클라이언트 구조 : server가 요청을 보내지 않음
    • 무상태(stateless) : 서버는 이전 요청 기억 X, 쿠키 사용 이유
    • 비연결성(connection less) : 요청마다 새로운 연결
    • 가독성 ↑
  • 메세지 구조
    • Header + Body(=payload) + trailer
    • Header : start line + header set
      • start line : method + URI + http version
      • method : GET, POST, PUT, DELETE

HTTP 요청의 메세지 구조

    • Header : start line + header set
    • start line : method + URI + http version
      • method : GET, POST, PUT, DELETE
    • header set
      • request headers
        • Host : 요청하는 서버 주소 & 포트(= IP address, domain + port)
        • Accept : 원하는 데이터 형식(필수 X)
      • general headers
        • Connection : connection 유지 여부
      • representation headers
        • Content-Type : 요청 데이터 format

HTTP 응답의 메세지 구조

  • Header : start line + header set
  • start line : http version + state code + state message
    • state code + message
      • 2** : 성공
      • 3** : 리다이렉션 완료
      • 4** : 요청 오류
      • 5** : 서버 오류
  • header set
    • Content-Type : 요청 데이터 format
  • empty-line
  • body
    • 응답 데이터

localhost

  • 자기 자신의 주소
  • loop back 형식

WEB API


  • HTTP를 통해서 정보를 주고 받기 위해서 언어와 독립된 포맷 필요
  • content-type
    • web page 관련 format
      • text/html
      • text/css
      • text/js
    • 미디어 관련 format
      • application/jpeg
      • application/mpeg
      • application/zip
    • data 직렬화 format
      • application/json
      • text/xml
  • XML vs JSON
    • XML : 마크업 업어, <>를 이용한 언어
    • JSON : {}를 이용한 언어, 간결
  • JSON
    • "key" : { value }
    • "key" : [ array 타입 ]
    • "key" : { object 타입 }
  • Web API
    • Application Programming Interface
    • 두 어플리케이션을 연결하는 인터페이스
  • postman 설치하기
  • Web API 아키텍쳐
    • Web API를 사용하는 방법론
    • HTTP 사용 및 URI 표시 방법 등의 차이가 있음
    • 종류
      • GraphQL
      • SOAP
      • REST API
  • Rest API(Restfull API)
    • REST(= Represential State Transfer)
      • 자원(resource)를 특정 방식로 요청하는 형태로 표현
      • 자원 : URL
      • 방식 : HTTP Method(Get, Post, Put, Delete ...)
      • 표현 : JSON, XML
    • REST API
      • REST를 이용한 API