본문 바로가기

TIL (Today I Learned)87

[개발일지] Malloc Lab 동적 메모리 할당의 개념을 학습하고, 가상의 환경에서 동적 메모리 할당을 직접 해보는 프로젝트다. 프로젝트 키워드 🤔 시스템 콜, 데이터 세그먼트, 메모리 단편화, sbrk/mmap 22.12.04 팀원들과 동적 메모리 할당에 대한 팀 스터디 진행. 22.12.05 CS:APP 챕터9에 나와있는 C언어 코드를 공부하면서 코드 작성. 1. 기본 상수와 매크로 선언 1word 2word 규격 설정 자주 사용되는 함수 선언 2. static void *extend_heap(size_t words) 함수 작성 heap 영역 확장하는 함수 선언 3. static void *coalesce(void *bp) 함수 작성 ptr 포인터에 위치한 할당된 블럭 반환(가용 블럭으로 만들기) case 2, PUT(FTRP(b.. 2022. 12. 14.
[개발일지] WebServer 만들기 Ubuntu 개발환경에서 웹 서버를 만드는 프로젝트를 진행했다. localhost로 작은 웹 서버를 만들어서 클라이언트의 요청에 응답하는 단순한 서버다. CS:APP 11장을 따라하며 진행한 프로젝트다. 가이드라인을 따라가면 되기 때문에 큰 어려움은 없었다. 프로젝트 키워드 🤔 BSD소켓, IP, TCP, HTTP, file descriptor, DNS 해당 프로젝트를 진행하기 앞서, 네트워크와 파일입출력에 대한 이론공부를 진행했다 (TIL에 기록하며 학습했다) 22.12.08 - 22.12.11 - 네트워크 이론 학습 (라우터, TCP/IP, HTTP 트랜잭션) 22.12.12 - 동료 학습 22.12.13 - 에코서버 개발 및 작동원리 학습 - tiny.c 개발 및 파일 입출력 학습 22.12.14 .. 2022. 12. 14.
[CS] File, File descriptor #4 이 포스팅은 한국기술교육대학교 김덕수 교수님의 시스템 프로그래밍 (CSE 232)를 참고하여 작성되었습니다. #1 Duplication FD - dup(2) / dup2(2) #include int dup(int oldfd); int dup2(int oldfd, int newfd); oldfd (old file descriptor) : 복사하려는 file descriptor newfd (old file descriptor) : 새로운 fd 지정, dup()의 경우 할당 가능한 fd 중 가장 작은 값 할당 Return : oldfd를 복사한 새로운 fd , -1 = error IO redirection #include #include #include #include int main(void) { int f.. 2022. 12. 13.
[CS] File, 파일 읽기/쓰기 #3 이 포스팅은 한국기술교육대학교 김덕수 교수님의 시스템 프로그래밍 (CSE 232)를 참고하여 작성되었습니다. #1 Reading a file - read(2) #include ssize_t read(int fd, void *buf, size_t count); fd (file descriptor) : 읽으려는 파일의 file descriptor buf (buffer) : 읽은 내용을 저장할 buffer의 시작 주소 주의사항 : byte 단위를 읽는 것이기 때문에 void 포인터 형태로 넣어야 한다. count : 읽을 byte의 수 Return : 실제로 읽은 byte의 수 0 = 파일의 끝(EOF)에 도달, -1 = 에러 #2 Writing to a file - write(2) #include ssize.. 2022. 12. 13.
[CS] File, 파일 열기/닫기 #2 이 포스팅은 한국기술교육대학교 김덕수 교수님의 시스템 프로그래밍 (CSE 232)를 참고하여 작성되었습니다. #1 Low-level vs High-level file IO Low-Level File IO (System call) - system call을 이용해서 파일 입출력 수행 - File descriptor 사용 - Byte 단위로 디스크에 입출력 - 특수 파일에 대한 입출력 가능 High-Level File IO (Buffered IO) - C Standard library를 사용하여 파일 입출력 수행 - File pointer 사용 (FILE *fp) - 버퍼(block) 단위로 디스크에 입출력 : 여러 형식의 입출력 지원 #2 Opening files - open(2) man -s 2 open.. 2022. 12. 13.
[CS] File, 파일이 무엇인가? #1 이 포스팅은 한국기술교육대학교 김덕수 교수님의 시스템 프로그래밍 (CSE 232)를 참고하여 작성되었습니다. 네트워크 학습을 하면서, 네트워크도 결국 하나의 파일 입출력으로 봐야 함을 학습했다. 그렇다면 해당 파일 입출력에 대한 system call을 다루기 위한 학습이 필요하다. 해당 포스팅은 이런 이유로 시작되었다. #1 파일 개요 파일? 보조 기억 장치에 저장된 연관된 정보들의 집합 File operations : Create, Write, Read, Reposition, Delete, Etc... OS는 file operation들에 대한 system call을 제공해야 한다. 파일의 종류 : (1) 일반 파일 Regular file: Text or binary data file (2) Direc.. 2022. 12. 13.
[CS] 네트워크 기초, HTTP 2 #8 이 문서는 유튜브 '생활코딩'님의 'WEB2 - HTTP' 강의를 토대로 작성되었습니다. 출처 : https://www3.ntu.edu.sg/home/ehchua/programming/webprogramming/http_basics.html In Introduction to HTTP Basics HTTP (HyperText Transfer Protocol) Basics Introduction The WEB Internet (or The Web) is a massive distributed client/server information system as depicted in the following diagram. Many applications are running concurrently over the.. 2022. 12. 11.
[CS] 네트워크 기초, HTTP #7 이 문서는 유튜브 '널널한 개발자 TV'님의 강의를 토대로 작성되었습니다. #1 웹 서비스 구조 Web 탄생 배경 Web 탄생 이전 인터넷 상 데이터 = 문자 ~ TEXT파일 티모시 버너스 리 HTML = Text + Link HTTP = HTML + 인터넷 Web = HTML + HTTP 문서를 다루는 모든 프로그램은 Data + 제어 + 인터페이스 3요소로 구성되어 있다. #2 웹 서비스 3대 요소 3대 요소 : 자료구조(데이터) + UI + 제어체계 유지보수 편의성을 극대화 하기 위해서 위 요소를 모듈화한다. Web Client (Browser) - internet - Web Server 초창기 웹서버 HTTP는 TCP/IP 통신을 전제로 했다. HTTP의 중요한 특징 : Stateless 인터넷 .. 2022. 12. 11.
[CS] 네트워크 기초, L2 스위치 그리고 TCP 장애 #6 이 문서는 유튜브 '널널한 개발자 TV'님의 강의를 토대로 작성되었습니다. #1 DNS? 인터넷은 결국 Packet Switching Network 이다. 패킷은 바뀌지 않지만 패킷을 통채로 캡슐화한Frame의 이더넷 헤더는 계속 바뀐다. L2 구간을 통과할 때는 MAC주소가 제일 중요하다. IP주소는 전혀 영향을 끼치지 않는다. MAC주소는 호스트를 하나 지나서 통과할 때마다 바뀐다. #2 L2 스위치와 ARP 작동원리 ARP 프로토콜 : IP주소로 MAC주소를 알아내는 프로토콜 L2 구간 MAC우선 스위치 허브 : 포트마다 MAC을 저장한다. ARP : 1. Braodcast 방식으로 해당 IP주소를 전송한다. 2. 해당 IP주소 호스트에 전송되면 호스트는 Unicast방식으로 MAC주소를 Reply.. 2022. 12. 10.