- 강의
- 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 : 전달할 데이터
- Protocol
- protocol
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
- request headers
HTTP 응답의 메세지 구조
- Header : start line + header set
- start line : http version + state code + state message
- state code + message
- 2** : 성공
- 3** : 리다이렉션 완료
- 4** : 요청 오류
- 5** : 서버 오류
- state code + message
- 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
- web page 관련 format
- 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
- REST(= Represential State Transfer)
'슈퍼코딩 > 주특기(JAVA)' 카테고리의 다른 글
2024.05.29(수) 슈퍼코딩 신입연수원 9주차 Day 3 후기 - Spring 프로젝트 구조, 코드 아키텍처 (0) | 2024.05.29 |
---|---|
2024.05.28(화) 슈퍼코딩 신입연수원 9주차 Day 2 후기 - framework vs library, Springboot, WAS, MVC, DI/IoC (0) | 2024.05.28 |
슈퍼코딩 신입연수원 8주차 후기 (0) | 2024.05.25 |
2024.05.24(금) 슈퍼코딩 신입연수원 8주차 Day 5 후기 - 데이터베이스 모델링, JDBC (0) | 2024.05.24 |
2024.05.23(목) 슈퍼코딩 신입연수원 8주차 Day 4 후기 - RDBMS, JOIN, MySQL 제약조건 (0) | 2024.05.23 |