- OSI 7계층 각각의 역할 파악한다.
- TCP 프로토콜을 이용한 연결/연결해제 과정을 파악한다.
- 3-way-handshake
- 4-way-handshake
- UDP 프로토콜의 특징을 파악한다.
- HTTP와 HTTPS의 특징을 파악한다.
- SSL 프토로콜에 대해 파악한다.
- 대칭키
- 공개키
- 세션키
- DNS round robin 방식에 대해 파악한다.
- OSI(Open System Interconnection) : 네트워크의 통신 과정을 7단계의 체계로 나타낸 것이다.
- 과정을 단계적으로 파악함으로써, 문제 발생시 해당 계층을 수정하여 해결한다.
오른쪽 TCP/IP 4계층은 개선된 현대의 모델이니 참고하자.
- 물리 계층 (bit) : 최하위 계층이다. 장치 간 전기신호를 전달하고, 데이터 프레임 내부의 각 bit를 다른 컴퓨터로 전송한다.
- 데이터 링크 계층 (frame) : 물리 계층을 통해 frame 단위의 데이터를 이웃 네트워크로 전송한다.
- 네트워크 계층 (packet) : packet 단위의 데이터를 다른 호스트로 라우팅한다.
packet을 생성하여, 전송 계층에게서 전달받은 목적지의 전송 계층으로 전달한다.- 전송 계층 (segment) : 상위 계층의 메시지를 하위 계층으로 전달한다.
메시지 오류를 제어하고, 메시지가 클 경우 segment로 나누어 네트워크 계층에 전달 후, 응답받은 packet을 재조립 후 세션 계층에 전달한다.- 세션 계층 (message) : 데이터 교환의 경계이자 동기화를 제공한다.
네트워크 연결이 손실되면 복구를 시도한다. 비연결 상태가 장시간 유지되면 프로토콜 연결을 닫은 후 재연결한다.
데이터 통신 방식(양방향 or 단방향)을 결정한다.- 표현 계층 (message) : 데이터의 암호화 및 복호화를 담당하여 프로토콜대로 데이터를 변환한다.
인터넷 계층 구조가 아니므로, 응용 계층의 지원을 받거나 직접 개발해야한다.- 응용 계층 (message) : 최상위 계층이다. 통신의 최종 목적지로서, 사용자와 직접 상호작용한다.
새로운 프로토콜을 추가하기 용이하다.
- TCP(Transmission Control Protocol) : 데이터를 신뢰성 있게 전달하기 위한 전송 계층의 프로토콜
- 연결을 위한 3-way-handshake와 연결해제를 위한 4-way-handshake를 알아보자.
3-way-handshake
- TCP 통신을 시작하기 전의 과정이다.
A : Client , B : Server
- A ➡️ B SYN : 연결 요청 메시지를 전송한다.
Sequence number는 임의의 숫자이다.
- B ➡️ A ACK : 요청을 수락한다.
B ➡️ A SYN : A에게 포트 개방을 요청한다.
- A ➡️ B ACK : 수락 여부를 확인하고, 연결한다.
이때 데이터 전송도 가능하다.
4-way-handshake
- TCP 통신을 끝내는 과정이다.
- A ➡️ B FIN : 연결 종료를 요청한다. 연결 상태는 유지한다.
- B ➡️ A ACK : 종료 요청을 확인한다. B가 전송할 데이터가 남아있다면 전송한다.
A또한 전송할 데이터가 남아있다면 이때 전송한다.(3번째 화살표)- B ➡️ A FIN : 연결 종료를 허용한다.
- A ➡️ B ACK : 허용을 확인했음을 알린다. B는 소켓 연결을 해제한다.
- UDP(User Datagram Protocol) : TCP와 마찬가지로 전송 계층의 프로토콜이다.
- 정상 수신 여부를 확인하지 않고, 전송 여부만 확인한다.
- TCP에서 수행하는 (흐름 제어, 혼합 제어, 전송 보장, 순서 보장) 모두 수행 하지않는다.
따라서 빠른 속도와 낮은 부하를 특징으로 지닌다.- 모두 지원한다.
- HTTPS(HyperText Transfer Protocol SSL) : 보안에 취약한 HTTP를 SSL 프로토콜을 통해 보완한다.
- SSL이 무엇인지 알아보자.
- SSL : 표현 계층에 해당하는 프로토콜이며, 공개키 암호화를 기반으로 동작한다.
- 대칭키 : 암호화와 복호화에 필요한 키가 동일한 방식이다.
즉 A와 B는 공통된 키가 필요하다.- 공개키 : 사용자에게 공개되는 공개키와 소유자만 가지는 비밀키 두 개를 사용한다.
공개키로 암호화된 평문은 비밀키로 복호화 가능하고,
비밀키로 암호화된 평문은 공개키로 복호화 가능하다.- 세션키 : 대칭키 방식과 공개키 방식을 혼합한다.
공개키 방식으로 대칭키를 암호화하여 사용함으로써 안전하고 빠른 통신을 가능케한다.- 목적
- A가 B의 공개키로 암호화하면, 해당 공개키의 소유자만 복호화할 수 있다.
- A가 A의 비밀키로 암호화하면, A가 생성한 암호임을 인증한다.
즉, 통신내용의 공격자를 차단하고 서버의 안정성을 보증한다.
- DNS round robin : DNS 서버에서 하나의 도메인의 여러 IP 주소를 등록해둔 뒤, 요청이 들어오면 순서대로 반환한다.
- 장점
- 서버 트래픽의 부하가 적어진다.
- 중간 장비가 없어 비용 부담이 적어진다.
- 단점
- 서버 수만큼의 공인 IP 주소가 필요하다.
- 균등하게 분배되지 않는다 : 같은 프록시 서버를 경유하면 같은 서버 방문
- 서버가 다운되어도 제공한다.
인터넷
인터넷 작동 원리HTTP란?브라우저 동작 원리DNS 작동 원리도메인 네임이란?호스팅이란?
기본적인 프론트엔드 지식HTMLCSSJavaScript
OS 및 일반적인 지식터미널 사용방법OS 작동 방식프로세스 관리스레드와 동시성기본적인 터미널 명령어메모리 관리프로세스간 통신 (IPC)입출력(I/O) 관리POSIX 기초기본적인 네트워크 개념
버전 관리- Git 기본 사용법
DataBase- PostgreSQL (변경 가능성 있음)
- MongoDB
DataBase 상세 정보- ORM
- ACID
- Transaction
- N + 1 Problem
- DataBase 정규화
- Index와 작동 방식
API- 인증
- REST
- JSON APIs
캐싱- CDN
- Server side
- Client side
웹 보안 지식- MD5, SHA family, scyrpt, bcrypt
- HTTPS, CORS, SSL/TL, 보안 정책
Testing- 통합 테스트
- 단위 테스트
- 기능 테스트
- CI/CD
개발과 설계 원칙- SOLID
- KISS
- YAGNI
- DRY
아키텍처 패턴- 모놀로틱 앱
- 마이크로서비스
- SQA
- Serverless
검색 엔진- ElasticSearch
메세지 브로커- RabbitMQ, Kafka
컨테이너화 vs 가상화- Docker
GraphQL- Apollo
- 웹 소켓
- 웹 서버
확장성- 측정, 모니터링, 원격측정
- 마이그레이션 전략
- 수평적 확장 vs 수직적 확장
- 관찰 가능성을 고려한 확장