전체 글

전체 글

    TCP vs UDP

    TCP 전송 제어 프로토콜 (Transmission Control Protocol) 네트워크 계층 중 전송 계층에서 사용하는 프로토콜 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 일반적으로 TCP와 IP는 함께 사용되며 IP는 배달을, TCP는 패킷의 추적 및 관리 TCP는 장치들 사이에 논리적인 접속을 성립하기 위하여 연결을 설정하여 연속성보다는 신뢰성을 보장하는 연결형 서비스 신뢰적인 전송을 보장하기에 hanshaking하고 데이터의 흐름제어와 혼잡제어를 수행 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다. ( 참고링크 - Handshake ) 전이중(Full-Duplex), 점대점(Point to Poi..

    TCP의 3/4 way Handshake

    TCP 란? 전송 제어 프로토콜(Transmission Control Protocol) TCP는 장치들 사이에 논리적인 접속을 성립하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스 데이터의 전달을 보증하고 보낸 순서대로 받게 해줌 도착한 조각을 점검하여 줄을 세우고 망가졌거나 빠진 조각을 다시 요청 TCP는 데이터를 상대방에게 확실하게 보내기 위해서 3-way handshake 이라는 방법을 사용하는데 TCP의 접속은 3-way handshake, TCP의 접속 해제는 4-way handshake 라는 방식을 사용합니다. 3-way Handshake TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데..

    OSI 7계층

    OSI 7 계층? OSI (Open Systems Interconnection Reference Model) 7계층은 국제표준화기구(ISO)에서 개발한 모델로, 이 모델은 서로 다른 컴퓨터 기기간의 네트워크를 형성할 수 있도록 규정한 네트워크 모델 표준안 입니다. 7 계층? 계층을 나눈 이유? 1980년대 네트워크 통신망이 확산되면서 다양한 통신망이 혼재된 상태였습니다. 이에 따라 네트워크 유형에 관계없이 상호 통신이 가능한 지침이 필요했고, 이러한 필요성이 대두됨으로써 OSI 7 계층이라는 새로운 네트워크 모델을 발표하였습니다. 용이성과 유지관리를 위해 각 계층을 독립적으로 다룰 수 있도록 7가지의 계층으로 나누어, 특정한 계층에 이상이 생기면 다른 계층의 장비 및 소프트웨어를 건들이지 않고도 이상이 ..

    CORS란? 그리고 해결방법은? / CSR vs SSR

    CORS란? Cross Origin Resource Sharing 의 약자로 교차가 되는 출처 리소스들의 공유를 말합니 다. 쉽게, 다른 출처에서 데이터를 주고 받는 것을 허용하는 정책이라고 생각하면 될 것 같습니다. 출처(Origin)란? 예를 들어 우리가 주로 쓰는 유튜브, 이 서버의 위치를 의미하는 https://www.youtube.com 와 같은 URL은 사실 아래와 같이 이루어져 있습니다. 여기서 출처는 Protocol + Host + Port 까지 합친 것(https://AhnDongSup.github.io:433) 을 의미합니다. 여기서 프로토콜, 포트, 호스트 모두 일치할 경우를 Same Origin 이 세가지 중 한가지라도 일치하지 않다면 Cross Origin이 됩니다. SOP정책 S..

    Flask - 테스트 코드 / 관리자 페이지 / 카테고리, 게시물

    TDD 테스트 주도 개발(Test Driven Development) 소프트웨어를 개발하는 여러 방법론 중 하나를 말합니다. TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성하여 테스트가 전체 개발을 주도해 나가는 것입니다. 오늘은 코드를 수정하는 단계마다 테스트 코드를 이용해서 검증해보겠습니다. Python에서 기본적으로 존재하는 테스트 프레임워크인 unittest 라이브러리를 알아보려 합니다. 우선 내장 모듈인 unittest를 불러와서 import 한 뒤, 클래스 이름을 지어주고, TestCase 클래스를 상속받아 테스트를 진행합니다. import unittest class TestSomething(unittest.TestCas..

    Flask - 회원가입/로그인/로그아웃 처리 [블로그 웹 애플리케이션 개발]

    로그인 / 회원가입 과정 로그인, 회원가입을 처리하기 위해서는 사용자의 데이터를 서버에서 주고받는 과정을 거쳐야합니다. 그 과정에서 폼으로부터 데이터를 GET 또는 POST 방식으로 주고받을 것입니다. 데이터베이스에 정보를 처리하거나, 사용자의 이메일, 이름, 비밀번호 와 같은 민감한 데이터를 다룰 것이기 때문에 저장된 Data를 단순하게 불러오는 정도로 사용되는 GET방식이 아닌 POST방식을 이용하도록 하겠습니다. POST방식 데이터 생성(Create), 변경(Update), 삭제(Delete)를 요청할 때 사용 데이터가 url을 통해 전송되지 않고 보이지 않는 HTML body에 key:value 형태로 전달 합니다. 값을 바꿀 때 사용하고, 큰 데이터도 안전하게 보낼 수 있습니다. 지난 포스팅 에..

    Flask - 라이브러리 설치부터 정적 파일 다루기까지 ( Blueprint / jinja template engine / render_template() )

    ORM 이란? 객체 관계 매핑(Object-relational mapping)의 약자로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말합니다. 자세하게는, 객체지향 프로그래밍에서 쓰이는 객체 라는 개념을 구현한 클래스와 관계형 데이터베이스에서 쓰이는 데이터인 테이블을 자동으로 매핑하는 것을 말합니다. 클래스와 테이블은 서로가 호환되는 것을 고려하고 만들어진 것이 아니기 때문에 객체 모델과 관계형 모델 간의 불일치가 생기게되는데 ORM을 이용하면 데이터베이스 접근을 프로그래밍 언어의 관점에서 맞출 수 있고 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결할 수 있습니다. 덕분에 SQL 쿼리(query)라는 구조화된 질의를 작성하고 실행하는 등의 복잡한 과정 없이 파이썬 ..

    Flask - python으로 쉽게 데이터베이스 다루기

    Python DB API 파이썬에서 데이터베이스에 접근하기 위한 표준 API로 Python DB API는 기본적으로 PEP249 인터페이스를 따르도록 권장하고 있습니다. PEP249 파이썬에서 명시하는 DBAPI v2.0에 대한 문서로 DB와 연결하는 파이썬 묘듈은 권장하는 내용에 따르도록 설계되어 있습니다. 위에는 PEP 249에 대한 설명입니다. 이를 통해 다양한 DB에대해서 동일하게 조작할 수 있도록 만들었다는 목적을 알 수 있습니다. 간단하게는 가이드라인이라고 생각하면 될 것 같습니다. SQLite 별도의 서버 필요없이 DB처리를 구현한 파일형DB로 임베디드 SQL DB엔진을 말합니다. 서버가 아니라 응용프로그램에 넣어 사용하는 가벼운 데이터베이스 관리 시스템으로 빠르고, 사용하기 쉽다는 장점이 ..