2024/01 7

OSI 7계층 모델과 TCP/IP 4계층 모델 비교

1. 물리계층 (Physical Layer) 실제 장치를 연결하는 데 필요한 전기적, 물리적 세부 사항을 정의한다. 상위 계층에서 전송된 데이터를 물리 매체를 통해 다른 시스템에 전기적 신호로 전송한다. 주요 네트워크 장치로 리피터, 허브 등의 기기가 있다. 2. 데이터 링크 계층 (Data Link Layer) 물리 링크를 통한 데이터 전송의 신뢰성을 보장하기 위한 계층이다. 대표적인 예로 이더넷이 있다. 시스템 간 오류없이 데이터를 전송하기 위해서 패킷을 프레임으로 구성하여 물리 계층에 전송한다.(캡슐화 과정) 데이터 링크 계층에서 물리적 주소, MAC 주소를 결정한다. 대표적인 네트워크 기기로 스위치가 있다. 3. 네트워크 계층 (Network Layer) LAN에서 벗어난 통신을 위하여 IP 주소..

CS/Network 2024.01.31

HTTP란 무엇인가?

HTTP란?HTTP(HyperText Transfer Protocol)는 웹의 app-L 프로토콜이다. HTTP의 특징client/server 모델이다.client: HTTP 프로토콜로 요청(request)을 보내고 응답을 받는 브라우저이다. server: HTTP 프로토콜로 요청에 대한 응답(reponse)을 보낸다.일반적으로, 사용자가 웹 페이지를 요청할 때 (1) 브라우저는 페이지 내부의 객체에 대한 HTTP 요청 메시지를 서버에게 전송한다.(2) 서버는 요청을 수신하고, 객체를 포함하는 HTTP 응답 메시지로 응답한다. HTTP의 TCP 사용클라이언트가 서버에게 TCP connection을 보낸다. (이 때 소켓을 만든다.)서버는 클라이언트로부터 온 TCP connection에 접속한다. (소켓 ..

CS/Network 2024.01.30

OSI 7계층: 7계층 응용 계층(Application Layer)이란?

Computer Networking: A Top-Down Approach, 8th Edition의 내용을 기반으로 작성한 글입니다. OSI(Open System Interconnection) 네트워크 모델 - OSI 7계층이란? ISO(International Organization for Standardization)는 1980년대 초, 여러 업체가 만든 시스템에 대해 상호연동이 가능한 표준 네트워크 모델을 제정할 필요성을 인식하고 1984년에 OSI 네트워크 모델을 발표했다. 7계층 - 응용 계층(Application Layer)이란? 여러 가지 프로토콜에 대한 사용자 인터페이스를 제공한다. 사용자나 응용 프로그램 사이에 데이터 교환을 가능하게 하는 계층이다. HTTP, FTP, 메일 프로그램 등을 ..

CS/Network 2024.01.29

alembic 에러

alembic revision - -autogenerate, alembic current 명령을 입력하면 무조건 이렇게 뜸 INFO [alembic.runtime.migration] Context impl SQLiteImpl.INFO [alembic.runtime.migration] Will assume non-transactional DDL.ERROR [alembic.util.messaging] Can't locate revision identified by '30e4c2d93125 'FAILED: Can't locate revision identified by '30e4c2d93125 ' 근데 30e4c2d93125은 잘 존재하는 파일인데…. 하루종일 이거저거 만지다가 스택오버플로우랑 이런 저런 곳에..

Tech/FastAPI 2024.01.16

FastAPI Depends 클래스 - Dependency Injection 의존성 주입

을 읽고 공부한 내용을 정리한 글입니다. 의존성이란? 의존성이란 두 클래스나 모듈의 연결, 관계를 의미한다. 만약 A와 B라는 두 모듈이 있을 때 A가 B에 의존한다면, B의 일부가 변경될 때 이것이 A에 영향을 끼친다는 의미이다. 자바 코드로는 아래와 같이 작성할 수 있다. // 예제 1 public class A{ private B b; public A(B b){ this.b = b; } } // 예제 2 public class A{ private B b; public A(){ this.b = new B(); } } 클래스 B의 객체가 클래스 A의 멤버 변수로, A는 B에 의존한다. // 예제 3 public class A{ public void doSomething(){ B b = new B(); ..

Tech/FastAPI 2024.01.12

FastAPI - app.get과 router.get 차이 (FastAPI와 APIRouter)

을 읽고 공부한 내용을 정리한 글입니다. app.get과 router.get의 코드가 둘 다 get이나 post를 쓰고 뒤에 URL이 온다는 점에서 쓰임새가 똑같아 보이는데 언제는 app.get을 쓰고 router.get을 쓰길래 둘의 차이가 궁금해졌다. app은 FastAPI 객체를 만들고 from fastapi import FastAPI app = FastAPI() @app.get("/hello") def hello(): return {"message": "Hello World"} router는 APIRouter 객체를 만든다. from fastapi import APIRouter, FastAPI app = FastAPI() router = APIRouter() @router.get("/items/"..

Tech/FastAPI 2024.01.09

FastAPI 시작하기 - FastAPI 설치 및 실행

여름에 스프링부트로 백엔드 공부를 시작했다. 코드를 따라치면서 용어는 익숙해졌지만 작동 구조가 이해되지 않아서 공부를 멈췄었는데 이번에 FastAPI로 CRUD를 해보면서 백엔드 감 잡기 프로젝트 일명 감따먹기... 아무튼시작 왜 하필 FastAPI를 선택했는가? 파이썬을 이용한 대중적인 프레임워크로 Django, Flask가 있지만 나는 비교적 최신 기술인 FastAPI를 선택했다. 개발된지 얼마 안 된 프레임워크라서 다른 두 프레임워크에 비해 인터넷 상에 교육자료가 적을 수 있다는 단점은 있었다. 하지만 나의 목표는 프레임워크 하나를 잡고 깊게 파는 것이 아니라 CRUD를 만들 때 서버와 클라이언트 간의 정보가 돌아다니고 프로그램이 작동하는 과정, 백엔드라는 게 무슨 일을 하는 건지 감을 잡기 위함이..

Tech/FastAPI 2024.01.09