네트워크
1장
- WWW (World Wide Web)
- 인터넷에 연결된 컴퓨터들이 서로 정보를 공유하고 찾아볼 수 있는 공간
- 하이퍼텍스트
- 하이퍼링크(한 문서에서 다른 문서로 넘어갈 수 있는 연결 고리) 를 포함한 문서
- 하이퍼텍스트 형식으로 작성된 문서 = 웹 페이지
- 웹의 구성 요소
- 웹
- 웹브라우저
- (ex 크롬) 웹 문서를 열기 위해 사용하는 응용 소프트웨어
웹 어플리케이션 아키텍처
- 웹 동작에 필요한 각 요소와 그 사이 상호 작용을 정의해 놓은 것
- 웹 클라이언트, 웹 서버
- WAS
- 웹서버로 부터 동적 콘텐츠를 받아 이를 처리한 뒤 그 결과를 다시 웹 서버에 전달하는 중간자 역할
- 톰캣, 제우스, IBM 웹스피어
- 브라우저 삼대장
2장
- LAN (Local Area Network)
- 지리적 가까운 기기들이 연결된 소규모 네트워크
- 기기가 물리적으로 가까이 연결, 구현 간단, 속도빠름
- WAN (Wide Area Network)
- OSI 7 계층
- TCP/IP 4계층

- 캡슐화 & 역캡슐화
- 헤더정보
- 보내는 쪽의 계층이 받는 쪽의 계층에 전달하는 관련 정보
- 캡슐화
- 보내는 쪽에서 헤더를 덧붙이면서 데이터를 하위 계층으로 보내는 과정
3장
- URL
- 웹에서 주어진 고유 리소스 주소

- port
- 웹 서버 안에서 특정 자원에 접근하기 위해 사용하는 관문
- URI
- DNS Domain Name System
- IP주소 ↔ 도메인(IP 주소보다 기억하기 쉬운 형태의 호스트 이름) 변환

- 보통 한 번 IP 주소를 찾고 나면 로컬 DNS 서버에서 해당 도메인 정보를 임시로 저장하고 사용자의 PC에 전달해, 다음부터는 미리 PC에 저장한 IP주소로 연결할 수 있게 설계
4장
- IP(Internet Protocol)
- 인터넷에서 데이터를 주고받을 때 사용하는 통식 규약
- 패킷을 정해진 목적까지 운반하기 위해 사용
- 외부에서 패킷이 들어오면 내 IP주소와 맞는지 비교, 일치하지 않으면 다른 호스트로 전달
- 패킷의 손실, 중복같은 상태 이상은 확인X = 비연결성, 비신뢰성
- IP4

- 네트워크 : 데이터를 통신하는 과정에서 같은 공유기를 사용하는 범위
- 호스트 : 이 네트워크테 연결된 각각의 장치
- 브로드캐스트 주소
- 특정 네트워크 주소에 속한 모든 호스트에게 패킷을 전달해야 할 때 사용하는 주소
- 클래스 A(0-127), B(128-191), C(192-223)

IP4 부족
- CIDR
- 클래스 없는 도메인 간 라우팅 기법, 클래스 없이도 IP주소를 할당할 수 있는 방식
- 네트워크와 호스트 구분점을 2진수의 한 자릿수, 1비트 단위까지 가능하게 해 호스트 주소를 더 유연하게 할당 가능
- 서브넷 마스크
- 네트워크와 호스트 부분을 구분해주는 역할

- DHCP
- IP가 필요한 컴퓨터에 자동으로 IP주소를 할당해서 사용하게 해주고, 사용하지 않으면 IP주소를 반환받아 다른 컴퓨터가 사용할 수 있게 해주는 프로토콜
- NAT
- 네트워크 주소 변환
- 공인IP
- 인터넷상에서 유일한 주소이자 ISP에서 공식으로 할당하는 주소
- 사설IP
- 상세주소, 특정 네트워크 내에서 사적인 용도로 이용하는 주소
5장
-
TCP
-
전송 제어 프로토콜, 연결형 프로토콜
-
신뢰성 있는 데이터 통신을 위한 프로토콜
-
패킷마다 번호 부여
-
헤더
- 시퀀스번호(패킷의 번호)
- 플래그(패킷의 상태)
- ACK : 앞서 받은 데이터 잘 처리
- SYN : 연결을 요청하는 플래그
- FIN : 통신이 잘 마무리되어 연결의 해제를 요청
-
3-way handshake

-
4-way handshake

-
혼잡제어
- 네트워크 내 패킷의 수가 과도하게 증가하는 현상
- 합증가/곱감소
- 전송자가 수신자에게 패킷을 하나씩 보낸뒤 잘 도착했다는 응답을 받으면 윈도 크기 +1 증가하면서 전송
- 혼잡 발생하면 윈도 크기 절반으로 줄임
- 느린시작
- 윈도크기 1로 시작, 2배씩 증가
- 혼잡 발생하면 윈도크기 1로 줄임
-
UDP
-
신뢰성 x, 빠름

6장 HTTP
- HTTP (Hypertext Transfer Protocol)
- 웹 브라우저와 웹 서버 간에 데이터를 주고 받기 위해 사용하는 프로토콜
- 웹 통신을 위한 프로토콜
- 클라이언트-서버 모델
- HTTP 메세지
- 요청 메세지

- 응답 메세지

- stateless
- 비연결성 프로토콜
- 안정성
- 클라이언트가 요청을 해도 서버의 자원이 변하지 않는 특성

- 멱등성
- 연산을 여러 번 적용해도 결과가 달라지지 않는 현상

- 헤더의 정류

- 상태코드
- 1XX
- 웹 서버가 현재 요청을 받았으며 작업을 진행하고 있다는 의미
- 100 : 서버가 첫번째 요청을 받았으며 추가 요청을 기다리고 있음
- 2XX
- 클라이언트가 요청한 작업을 서버가 성공적으로 처리했음
- 200 OK
- 201 Created
- 204 No content
- 3XX
- 리다이렉션 응답 완료, 요청을 완료하기 위해 재전송이 필요하다는 의미
- 4XX
- 클라이언트 측 오류
- 400 Bad Request : 클라이언트 요청 내용 문제
- 401 Unauthorized : 인증되지 않는 사용자
- 404 Not Found
- 5XX
- 서버 오류
- 500 Internal Server Error : 서버 내부적으로 오류 발생
- 502 Bad GateWay : 서버간 네트워크 문제
- 보안 : SSL, TLS, HTTPS
- 중간자 공격
- HTTPS
- 암호화를 담당하는 곳 : SSL (Secure Sockets Layer)
- 클라이언트와 서버가 서로 데이터를 암호화해 통신할 수 있게 돕는 보안 계층

- 각 계층이 서로 독립적이기 때문에 SSL은 HTTPS 뿐만 아니라 다른 프로토콜과도 조합해서 사용 가능 ex) FTP(파일전송), SMTP(이메일 전송), RedisProtocl
- TLS (Transport Layer Security)
- SSL 동장 방식
- 대칭키(하나의 키로 암호화, 복호화) + 공개키(서로 다른 키 두개로 암호화, 복호화)

- HTTP/1.1
- 지속성 연결 상태
- 한번 TCP 연결을 맺으면 따로 연결을 끊지 않는 이상 기본적으로 연결을 유지하는 지속적 연결 상태 지원
- 파이프라이닝
- 이전 응답과 상관 없이 여러개의 요청을 보낼 수 있음
- HTTP/2
- 스트림 다중화
- 응답의 순서와 상관없이 한 연결 안에서 여러 개의 메세지를 주고 받을 수 있게 개선
- 서버 푸시
- 클라이언트가 굳이 요청하지 않아도 서버에서 미리 필요한 리소스를 푸시할 수 있게 됨
- 바이너리 프레이밍
- 텍스트 형식이었던 HTTP 메세지를 더 작은 단위로 쪼개 바이너리 형태로 캡슐화한 것
7장 HTTP 특징과 데이터 저장 방식
- 무상태 프로토콜
- HTTP, IP, UDP
- 모든 요청과 응답은 서로 독릭접
HTTP - (외부에 저장소를 따로 두어 그곳에 상태를 저장하게끔 하고 필요에 맞게 서버에 상태를 전달함)

[ 브라우저에서 데이터 저장 ]
-
쿠키
- 브라우저에 데이터를 저장하는 방식 중 하나
- 서버의 데이터베이스에 저장하지 않고 클라이언트(브라우저)에서 해당 웹 사이트의 데이터를 일부 저장하여 바로 값을 받아옴 → 속도 up, 비용 down
- 데이터 : 키-값 형태, 문자열만 저장 가능
- 세션쿠키
- 따로 만료 기간이 정해져 있지 않은 쿠키, 브라우저가 종료될 때 같이 사라짐
- 영구 쿠키
- 만료 기간 존재, 해당 기간이 끝나면 사라지는 쿠키
- 단점
-
웹 스토리지
- 클라이언트 상에서 데이터를 저장할 수 있는 방법 중 하나
- 데이터 : 키-값 형태, 문자열만 저장 가능
- 장점
- 저장할 수 있는 용량 큼
- 클라이언트에서만 접근 가능
- 서버 사용x
- 로컬 스토리지
- 한 번 브라우저에 저장되면 의도적으로 삭제하지 않는 이상 데이터가 유지됨
- 세션 스토리지
- 클라이언트와 서버 간의 연결이 끊어지면 데이터도 함께 삭제됨
-
IndexedDB
- 브라우저에 내장된 데이터베이스
- 웹 스토리지보다 더 강력하게 데이터 저장
- 데이터 : 다양한 타입 지원, 데이터 조회 용이, 용량제한 x
- 클라이언트 단?
[ 서버에서 데이터 저장 ]