기타/SW 사관학교 정글
-
[SW 정글 51일차] MIME 타입, CGI, datagram vs stream기타/SW 사관학교 정글 2021. 9. 22. 01:10
오늘은 소켓 인터페이스부터 웹 서버를 만들면서 중간에 간단하게 알고 넘어간 개념을 정리하려고 한다. 1. MIME (Multipurpose Internet Mail Extenstions) type MIME type은 서버가 클라이언트에게 전송한 문서의 다양성을 알려주기 위한 매커니즘이다. 클라이언트는 리소스를 내려받았을 때 해야 할 기본 동작이 무엇인지를 결정하기 위해 MIME 타입을 사용한다. 이미지파일만 생각해도 jpg, gif, png 등 다양한 확장자가 존재하고 이미지파일 이외에도 text, video 등 다양한 리소스들이 존재한다. 이에 따라 수많은 MIME 타입들이 존재하고 서버는 정확하게 MIME 타입을 설정해주는 것이 중요하다. MIME의 구조는 아래와 같다. type/subtype /로 ..
-
[SW 정글 추석 특집] Missing Semester 2일차기타/SW 사관학교 정글 2021. 9. 21. 13:55
오늘은 Missing Semester 강좌 2일차로 셸 툴과 스크립팅에 대해 배웠다. Missing Semester를 계속들을지 고민을 해봤는데 단기적으로든, 장기적으로든 나에게 도움이 될 것같다는 생각에 일단은 끝까지 들어보려고 한다. 1. space bar(띄어쓰기)는 shell에서 치명적이다. 우리가 IDE환경에서는 흔히 코딩 스타일을 맞추기 위해 연산자 사이에 띄어쓰기를 한다. 하지만 shell에서는 띄어쓰기는 서로 다른 arguments로 인식하여 컴퓨터가 같은 argument로 인식하지 못한다. 그에 대한 실습은 아래의 사진과 같다. foo = bar로 입력 시, 컴퓨터는 foo라는 프로그램을 실행하는데 argument1이 '='이고 argument2가 'bar'이라고 인식하는 것이다. 2. ..
-
[SW 정글 50일차] stdout 와 STDOUT_FILENO (feat. File Descriptor)기타/SW 사관학교 정글 2021. 9. 21. 01:57
stdout는 C 언어의 표준 I / O 스트림에 속하는 것으로 type이 FILE *이고 stdio.h에 정의되어 있다. STDOUT_FILENO는 LINUX 시스템의 파일 디스크립터로 type이 int이고 unistd.h에 정의되어 있다. unistd.h에서를 보면 아래와 같다. The following symbolic constants shall be defined for file streams: STDIN_FILENO File number of stdin; 0. STDOUT_FILENO File number of stdout; 1. STDERR_FILENO File number of stderr; 2. 둘의 차이를 알아보기 전에 새로 접한 개념인 파일 디스크립터에 대해 알아보자. 파일 디스크립터(..
-
[SW 정글 49일차] Tiny 웹 서버 구현하기기타/SW 사관학교 정글 2021. 9. 20. 02:13
오늘은 첫 번째 과제인 Tiny 웹 서버 만들기를 시작했다. 소켓 인터페이스 구현 부분을 꽤 깊이있게 공부해서 그런지 처음보는 매크로나 함수들에 대한 이해도를 제외하면 코드를 이해하는 데 어려움은 없었다. 그래도 일단은 과제를 다 하고 복습은 해야한다고 생각한다. 1. 서버는 무엇인가? 오늘 구현한 Tiny 웹 서버를 알아보기 전에 웹 서버가 무엇인지 알아볼 필요가 있고 웹 서버를 알아보기 전에 근본적으로 서버가 무엇인지 알아볼 필요가 있다. 먼저, 우리가 흔히 알고있는 네트워크라는 큰 틀에서는 클라이언트와 서버라는 모델에 기초하고 있다. 여기서, 클라이언트는 자신이 필요로 하는 무언가를 요청하는 대상이고 서버는 클라이언트의 요청을 받아 필요로 하는 서비스를 제공, 응답해주는 대상이다. 즉, 물리적으로는..
-
[SW 정글 추석 특집] Missing Semester 1일차기타/SW 사관학교 정글 2021. 9. 19. 11:37
오늘부터 추석 연휴가 시작됐고 이번 추석 연휴가 꽤 길다. 그래서 시간을 정말 효율적으로 사용해야겠다는 생각을 가졌고 무엇을 할까 고민하다가 1기 수료생들의 추천으로 Missing Semester를 알게 되어 이번 추석 연휴 아침시간에 공부해보려고 한다. 1. 셸(SHELL)이란 무엇인가? 셸은 우리가 컴퓨터와 상호작용(소통)을 하는 가장 근본적인 방법들 중 하나로 시작적인 인터페이스들보다 더 많은 것들을 원한다면 사용할 수도 있는 것이다. echo (echo ...는 단순히 arguments를 print해주는 프로그램) arguments와 함계 프로그램을 실행할 수 있다. arguments는 띄어쓰기(white space)에 의해 split 된다. white space가 포함된 string을 argum..
-
[SW 정글 48일차] 소켓 인터페이스 구현부터 Echo 클라이언트와 서버까지기타/SW 사관학교 정글 2021. 9. 19. 02:39
오늘은 본격적으로 socket 인터페이스를 구현하여 echo 클라이언트와 echo 서버를 통해 네트워크 실습을 해보았다. 소켓 인터페이스에는 각자의 역할을 하는 다양한 함수가 있고 그 함수들을 하나로 묶어 효율적인 기능을 해주는 open_cliented()와 open_listenfd()가 있다. 이러한 소켓 인터페이스를 기반으로 클라이언트와 서버를 만들어 실습을 직접 진행해보니 신기했다. 1. 소켓 주소 구조체 /* IP socket address structure*/ struct sockaddr_in { uint16_t sin_family uint16_t sin_port struct in_addr sin_addr unsigned char sin_zero[8] } /* Generic socket addr..
-
[SW 정글 47일차] 소켓 (Socket) 입문기타/SW 사관학교 정글 2021. 9. 18. 03:05
오늘은 소켓에 대한 공부를 하면서 소켓 인터페이스를 접하게 되었고 클라이언트와 서버가 어떻게 소켓을 가지고 통신을 하는지에 대한 전반적인 그림을 이해할 수 있었다. 소켓 통신을 이해하면서 들었던 의문점, 개념들을 정리하려고 한다. 1. "A socket is an end point of a connection."?! 컴퓨터 시스템 11.3.3 Internet Connections 파트를 읽으면서 아래와 같은 문장을 보게 됐다. A socket is an end point of a connection. 이 문장을 본 순간, 왜 소켓을 커넥션의 끝점이라고 하는거지? 끝점은 당연히 클라이언트와 서버 아닌가? 라는 의문을 가지게 되었고 구글링을 했다. (현실 구글링: why socket end point) 다행..
-
[SW 정글 46일차] 네트워크 용어 익숙해지기기타/SW 사관학교 정글 2021. 9. 17. 02:42
오늘은 네트워크를 공부하는 주인 웹 서버 만들기에 돌입했다. 컴퓨터 네트워크, 데이터 통신을 대학교에서 1년동안 전공과목으로 수강했지만 그 때 정말 열심히 공부했어도 사실을 시험, 성적을 위한 공부여서 남은 지식은 많이 없다. 그래도 공부를 하는 데 있어 익숙한 분야여서 수월할 것으로 생각들고 그에 따라 시간이 난다면 정말 deep하게, 네트워크를 공부할 생각이다. 오늘의 정리는 컴퓨터 시스템 11장을 보면서 개념이 안잡힌 단어들에 대한 내용을 정리하려고 한다. 1. DMA (Direct Memory Access) DMA는 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인메모리에 접근할 수 있게 해주는 컴퓨터 시스템의 기능이다. 예를 들어, 우리가 키보드로 어떠한 값을 입력했으면 메모리에 올리기 위해..