학습
- Network
- HTTP
- REST API
- Cookie, Session
- Authentication, Authorization
- JWT
- OAuth
네트워크


부스트캠프
우리는 어떻게 학습하는가?
네트워크를 직접 만들 수 있을까?
class 물리계층 { } const 구리선 = new 물리계층(); const 광케이블 = new 물리계층(); class 데이터링크계층 { MAC } const 랜카드 = new 데이터링크계층();
나에게 학습이라는 것은?
스토리를 만들어가는 것
단편적인 학습 → 목적이 없음 → 이걸 왜 하지?
Why.
네트워크 공부는 어떻게 해야 좋을까?
주관적인 생각
- Top → Down
- 소프트웨어 → 하드웨어
- HTTP(브라우저, 서버) → 전기
생각
일단 머릿속에서 지우자
그리고 나라면 어떻게 할 것인지 생각해보자.
어떻게 나와 다른 사람을 연결할 것인가? 어떤 것들이 필요할까?
- 가정
- 대한민국 서울에 사는 A
- 지구 반대편에 사는 B
- 필요한 것
- 전기
- 전기적 신호 ←→ 네트워크 신호 변환 장치 (랜카드)
- 컴퓨터 → 네트워크 신호 → 전기 신호 → 네트워크 신호 → 컴퓨터
- 중간 전송 장치 (라우터)
- 네트워크 신호 필터링
- 통신 방식
- 통신 프로토콜
- 포트
- 기타 등등…
- 무선통신?
- 아날로그(전자기파) ←→ 디지털(0, 1)
- 전자기파, 코일, 자기장, 안테나,
- 3G, 4G, 5G
- 특정 영역의 파장만 사용하겠다.
- 대역폭
- 라디오, TV, 무전기, 핸드폰, …
- 약속(프로토콜)
- 컴퓨터로 어떤 형태의 데이터를 가공해서 보낼 수 있고,
- 컴퓨터로 어떤 형태의 데이터를 가공해서 받을 수 있고,
우리는 네트워크를 어떻게 만들 수 있을까?
- 하드웨어 지식 → X
- 소프트웨어 지식 → O
- 추상화 → O
- 개발자답게
- 코드로 만들어보자.
- 함수형 → input/output
- 객체지향 → state, message(method)
- 추상화 조각을 모아보자.
- 코드로 만들어보자.
- 함수형
- 객체지향
HTTP
REST API
COOKIE, SESSION
Authentication, Authorization
마이페이지 → 로그인한 사람만 접근 가능 → 로그인 X → 401
관리자페이지 → 관리자만 접근 가능 → 로그인 X → 401, 권한X → 403
JWT (JSON Web Token)
token, 정보
JWT ←→ Session과의 차이? 언제 사용해야 할지?
base64 encoding → 회원정보(이메일/프로필사진/아이디/전화번호)
비밀키로 decoding → 서비스를 제공하는 서버, 토큰 발행자
서버에서 토큰 발급 → 클라이언트가 토큰을 가지고 있음 → 회원정보가 필요하네? → 서버에 요청 → 해독 → 클라이언트에 반환
브라우저가 비밀키를 가지고 있으면? → 다 털림
jwt는 토큰 자체에 정보가 있고
→ Server가 없어도 된다.
session은 특정 저장소에 정보가 저장되어있음
→ Server가 있어야 한다.
Daum에 로그인 했는데, Naver에서 Daum 회원 정보를 알고 싶어
→ Token
내가 동영상 플랫폼 서비스를 만들었는데,
Google로 로그인 할 수 있습니다.
Facebook으로 로그인 할 수 있습니다.
→ token, session 같이 사용 가능
어떤 서비스의 유저 시스템을 도메인 종속 받지 않고 사용하게 하기 위해선 → JWT
도메인에 종속 받는다면 → Session
혹은 같은 DB를 쓰거나