본문 바로가기

전체 글

(231)
[CN] IP주소란? 2023학년도 2학기 충남대학교 이영석 교수님의 컴퓨터네트워크 수업 정리자료입니다. 📁 인터넷 주소 인터넷에 연결된 장치의 주소는 크게 논리적인 주소와 물리적인 주소로 분류된다. - IP address 인터넷에 연결되어있는 개체(컴퓨터, 네트워크카드 등)의 논리적인 주소이다. ISP/공유기에서 할당하며, 네트워크에 따라 변동되기도 한다. - MAC address 디바이스(하드웨어) 고유의 식별자인 물리적인 주소는 MAC address라고 부른다. 물리적인 주소이므로 네트워크 카드 제조사에서 부여하며 특별한 조작이 없으면 절대 바뀌지 않는다. 이더넷은 MAC 주소를 이용하여 통신하므로 이더넷 메시지에서 MAC 주소를 확인할 수 있으며, 그 밑에 IP 메시지에서 IP 주소를 확인할 수 있다. 명령 프롬프트와..
[CN] HTTP Cookie와 Cache 2023학년도 2학기 충남대학교 이영석 교수님의 컴퓨터네트워크 수업 정리자료입니다. 📁 HTTP Cookie HTTP 웹서버 자체에는 상태가 없다. 예를 들어, HTTP GET 메서드로 main.html 페이지를 요청한다고 하자. 이렇게 요청된 main.html 페이지는 단지 코드로 저장된 html 페이지를 그대로 가져온 것일 뿐, 회원 로그인이 되어있는 상태인지, 혹은 이 페이지에 방문했던적이 있는지 등의 정보는 HTTP 웹서버에 저장되지 않는다. 위와 같은 경우처럼 상태가 필요한 경우가 있으므로, 이럴때 HTTP Cookie를 사용하여 다음과 같은 상태 관리 목적을 수행한다. - 세션 관리 : 로그인, 장바구니, 게임 스코어 등 - 개인화 : 사용자 선호, 테마 등 - 트래킹 : 사용자 행동 기록. ..
[CN] Fast HTTP Server HTTP Server의 성능을 높이는 방법 1. backlog 조정 backlog란 ,, backlog가 낮으면 서버가 왜 느릴까? 📁 Apache MPM (Multi-Processing Modules) Apache 웹 서버의 성능을 높이는 결정적 요소 중 하나이다. multi processing / threading server를 파이썬으로 구현해보자. 1. Multi processing server import os import socket import sys import time import multiprocessing # HOST가 공백인 것은 루프백 주소로 자기자신을 의미. HOST = '' PORT = 8080 def worker(conn, addr) : with conn: print(f'Co..
[CN] locust로 서버 성능 테스트하기 (파이썬) 📁 Locust 가장 유명한 도구 중하나인 locust. locust라는 도구를 이용하면 가상의 클라이언트 n개를 만들고 그 가상의 사용자들이 우리의 웹서버로 get post delete같은 요청을 하는 일련의 테스트 과정을 만들 수 있음. 📁 Locust 설치 방법 (윈도우) 📁 Stress test vs. Load test 스트레스 테스트는 극한의 환경들, 추운 환경, 더운 환경, 먼지가 많은 환경에서 어떻게 동작하는가, 그런 곳에서 에러 컨트롤이 되는가를 보는 것. 이럴때는 보통 에러 메세지를 보고 시스템을 복원하는 등의 작업을 함. Load test는 하나의 PC, 우리의 서버가 몇명까지 서빙이 되고 케어할 수 있는가를 봄. 그래서 사용자 수, 동시 접속자 수, 응답 속도 등을 봄. 📁 locus..
[CP] 어휘분석기 만들기 📁 분석도구 어휘분석 및 구문분석을 돕는 도구가 존재한다. Lex : C 기반으로 만들어진 전통적인 어휘분석기 생성기 flex : Lex의 발전된 버전 ANTLR : JAVA를 기반으로 만들어진 구문분석도구 yacc : Lex와 밀접한 관련이 있는 구문분석기 JAVACC : 구문분석도구 SableCC : 구문분석도구 📁 Lex(렉스) Lex(렉스)는 1975년 레스크에 의해 발표된 가장 전통적이고 유명한 어휘분석기 생성기이다. 사용자가 정의한 정규표현식과 실행코드를 입력받아 C언어로 쓰여진 프로그램, 즉 입력받은 정규표현식을 처리하는 어휘분석기를 결과물로 출력한다. 즉 Lex는 프로그램을 만드는 프로그램이다.
[CN] 통신 계층과 식별자 f 2023학년도 2학기 충남대학교 이영석 교수님의 컴퓨터네트워크 수업 정리자료입니다. 📁 OSI 계층과 대표적인 프로토콜 및 식별자 초기 OSI는 7계층으로 이루어져있는데, 통신 프로토콜이 발전함에 따라 이를 더 적은 단계로 묶어 표현하는 통신 모델을 사용하기도 한다. 각 계층마다 대표적인 프로토콜과 주요 식별자는 아래와 같다. 1. 데이터 링크 계층(Physical + Data link, 1+2) - 주요 프로토콜 : 이더넷(Ethernet) - 주요 식별자 : 물리적 주소(MAC 주소) 2. 네트워크 계층(Network, 3) - 대표 프로토콜 : IP, ... - 주요 식별자 : IP주소 3. 전송 계층(Transport, 4) - 대표 프로토콜 : TCP, UDP, ... - 주요 식별자 : Por..
[CN] Socket을 사용해 HTTP Server 열기 (파이썬) 📁 Network Socket network socket이란 네트워크로 데이터를 송수신하는 컴퓨터의 통신의 접점에 위치한 통신 객체다. 양 쪽의 소켓을 연결함으로써 서로 다른 프로세스끼리 데이터를 전달할 수 있다. 소켓을 이용한 네트워크 프로그래밍은 소켓 연결 및 데이터 송수신을 위한 소켓 함수 몇가지를 사용한다. 일반적인 서버의 흐름은 다음과 같다. socket() : 소켓을 생성한다. bind() : ip와 port번호를 설정하여 소켓에 적용시킨다. listen() : 클라이언트 요청을 대기하는 상태가 된다. 클라이언트 요청에 대기열을 만들어 몇 개의 클라이언트를 대기시킬지 결정한다. accept() : 클라이언트와 연결한다. 서버에 접속한 클라이언트와 통신할 수 있는 새로운 소켓을 생성한다. sen..
[ML] 기계학습이란? 📁 기계학습(Machine Learning) Mitchell에 따르면, 기계학습이란 tasks(작업) T에 대한 performance(성능) P가 experience(경험) E를 통해 성장하는 컴퓨터 프로그램을 말한다. 예를 들어 단순 계산과 같은 task는 수많은 experience, 즉 수많은 계산을 수행하더라도 성능이 향상되지 않으므로 기계학습이 아니다. 분류 task를 살펴보자. 위 그림처럼 프로그래머가 if문으로 분기나 조건을 모두 설정한 프로그램은 수많은 experience을 겪더라도, 즉 수많은 데이터를 분류하더라도 설정된 조건에 맞추어 분류하는 것 뿐 프로그램 자체의 성능이 향상되지 않으므로 기계학습이 아니다. 하지만 위 그림에서는 trained model이 수많은 숫자를 분류함으로써 사람..