모각소 4주차
인터넷 통신
클라이언트 <- - -> 서버
IP (Internet Procotol)
- IP 프로토콜의 역할
- 지정한 IP주소에 데이터 전달
- Packet이라는 통신 단위로 데이터 전달
- IP 패킷 정보 : 출발지 IP, 도착지 IP
- 전송하려는 데이터를 IP 패킷으로 감싸서 보냄
- 양방향으로 전달 가능
- 클라이언트 -> 서버
- 클라이언트 <- 서버
- IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 중간에 패킷이 사라지거나 패킷의 순서가 보장되지 않음
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 2개 이상일 때
- 하나의 컴퓨터에서 메신저 & 게임을 동시에 사용할 때
TCP & UDP
TCP/IP (Transmission Control Protocol)
전송할 데이터를 TCP segment로 감싼 후에 IP 패킷이 감싸는 형태
TCP segment : 출발 Port 번호, 도착 Port 번호, 전송 제어, 순서, 검증 정보 ...
1. TCP 특징 (전송제어 프로토콜)
- 연결지향 - TCP 3 way handshake (물리적 X, 가상의 연결)
- SYN -> SYN+ACK -> ACK -> 데이터 전송
- 데이터 전달 보증
- 데이터 전달 순서 보장
- 신뢰할 수 있는 프로토콜
- 대부분 TCP를 사용함
UDP (User Datagram Protocol)
- UDP 특징 (사용자 데이터그램 프로토콜)
- 기능이 거의 없음
- 데이터 전달 & 순서가 보장되지 않음 but 단순하고 빠름
- IP와 거의 비슷 (IP + Port + checksum)
PORT
- 같은 IP 내에서 프로세스를 구분
- 하나의 IP에서 여러 개의 애플리케이션을 사용할 때
DNS (Domain Name Service)
- IP는 기억하기 어려움, 변경될 수 있음
- 저장해두자!
- 도메인 명을 IP 주소로 변환 (도메인 - IP주소)
- ex. 전화번호부 (이름 - 전화번호)
- ex. google.com - 200.200.200.2
URI & Web Browser
- URI (identifier)
- URL (location)
- URN (name)
- URI == URL
- U : 리소스 식별하는 통일된 방식
- R : 자원, URI로 식별할 수 있는 모든 것
- I : 다른 항목과 구분하는데 필요한 정보
URI 분석
https://www.google.com:443/search?q=hello&hI=ko
- 프로토콜 : https
- 어떤 방식으로 자원에 접근할 것인가를 정하는 규칙
- 호스트명 : www.google.com
- 도메인명 or IP주소
- Port 번호 : 443
- Path : /search
- 리소스 경로, 계층적 구조
- Query Parameter : q=hello&hI=ko
- key=value
HTTP
HTTP (Hyper Text Transfer Protocol)
- HTTP 메시지에 모든 것을 전송
- HTML, TEXT, IMAGE, 음성, 영상, JSON, XML
HTTP 특징
- 클라이언트 - 서버 구조
- 무상태 프로토콜 (Stateless)
- 비연결성
- HTTP 메시지
- 단순 & 확장 가능
클라이언트 & 서버 구조
- Request, Response 구조
- Client -> request -> Server
- Client <- response <- Server
무상태 프로토콜 (Stateless)
- 서버거 클라이언트의 상태를 계속 기억하지 않음
- 장점 : 서버 확장성 높음 -> 응답 서버를 쉽게 바꿀 수 잇음 (무한한 서버 증설 가능)
- 단점 : 클라이언트가 추가적인 데이터를 전송해야 함
HTTP Method
- API 설계에서 중요한 것 : 리소스 식별
- GET : 리소스 조회
- query를 통해 데이터 전달
- POST : 요청 데이터 처리, 주로 등록
- body를 통해 데이터 전달
- PUT : 리소스 대체 & 해당 리소스 없으면 생성
- 리소스를 완전히 대체함
- PATCH : 리소스 부분 변경
- 리소스 전체가 아니라 부분 수정이 가능
- DELETE : 리소스 삭제
HTTP Method의 속성
- 안전 (Safe)
- 멱등 (Idempotent)
- 같은 API를 여러 번 호출해도 결과가 바뀌지 않음
- 캐시가능 (Cacheable)
출처 : [Inflearn 김영한] 모든 개발자를 위한 HTTP 웹 기본 지식