분류 전체보기
-
[SW 정글 54일차] IP 5계층기타/SW 사관학교 정글 2021. 9. 26. 03:13
오늘은 네트워크의 개략적인 개념들을 공부하고 정리하려고 한다. 네트워크라는 분야가 너무 넓고 그 많은 것을 제한된 시간 안에 나의 것으로 만들기는 부족하므로 이번 주차를 진행하면서 알아둬야 할 topic을 잡아서 공부를 했다. 1. IP 5계층 네트워크라는 것을 처음 접하면 아마 OSI 7계층은 들어봤을 것이다. OSI(Open Systems Interconnection Reference) 7계층은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 이번에는 Internet Protocol을 사용하는 통신 체계에서의 layered architecture인 five layer(5계층)을 다뤄볼 생각이여서 OSI 7계층에서 Presentatio..
-
[SW 정글 53일차] 소켓을 구현하긴 했는데 나는 소켓을 완벽히 이해했을까기타/SW 사관학교 정글 2021. 9. 25. 02:26
이번 주차는 웹 서버를 만드는 주차로 소켓 인터페이스를 활용하여 Tiny 서버를 구현하고 로컬로 클라이언트(웹 브라우저)에서 요청을 보내어 응답을 받는 것을 확인했다. 너무 신기했고 대학교 때 전공으로 배웠던 것을 소프트웨어적으로 만들어보았다는 것에 성취감도 느껴졌다. 그 후에, 프록시를 공부하고 구현해보려고 했는데 문득 '내가 소켓을 잘 알고 사용한 것일까?', '소켓은 왜 나왔을까?, '소켓은 반드시 필요할까?'라는 의문이 들었다. 그래서 프록시를 구현하는 시간을 가지기 전에 소켓에 대해 더 알아보려고 한다. 소켓은 무엇일까? 소켓은 two-way commuication channel에서 endpoint라고 말할 수 있는데 다양한 구조체 정의를 봤겠지만 기본적으로는 IP주소와 포트번호 정보를 가지고 ..
-
[SW 정글 52일차] 오늘은 일기만..기타/SW 사관학교 정글 2021. 9. 24. 03:28
[오늘의 나는 어땠을까?] 오늘은 다시 잠을 줄여 5시간 정도 자고 아침 8시에 강의실에 왔다. 8시 30분부터 동료들과 알고리즘 1문제를 풀었는데 30분 제한시간을 두기는 했지만 30분 넘게 시간을 주어도 풀이방법이 떠오르지 않았을 문제였다. 알고리즘 주차가 끝나고 계속해서 최소 1문제씩 풀고 있지만 답을 안보고 제한시간 안에 푼 문제가 반도 안된다.. 너무 신경이 쓰이고 코딩테스트라는 벽을 넘지 못하여 개발자 커리어를 시작하지 못할까 불안하기도하다. 이렇게 불안해할 시간에 문제 하나라도 더 풀라고 하지만 그게 말처럼 쉽게 되지는 않는다. 일단은 그냥 계속 해볼 수 밖에 없다.. 그리고 내가 얼마나 집중을 할까라는 궁금증이 생겨 오늘 정말 공부만 한 시간을 스탑워치로 재보았다. 8시간을 조금 넘기는 수..
-
[SW 정글 52일차] Proxy기타/SW 사관학교 정글 2021. 9. 22. 17:44
오늘은 Tiny 웹 서버 구현에 이어 proxy를 구현하기 위해 proxy에 대해 공부하고 정리해보려고 한다. 1. 프록시 (proxy)란 무엇인가? 프록시는 클라이언트와 서버 사이에 위치하여 중계기로서 통신을 수행하는 것이다. 클라이언트가 직접적으로 end server(클라이언트 입장에서 중간에 있는 proxy를 서버라고 생각할 수 있기에 모든 리소스를 가지고 있는 원천 server를 end server라고 부르겠다.)와 연결하여 리소스를 얻는 것 대신에 프록시와 연결되어 통신이 수행된다. 이렇게 되면 프록시는 클라이언트로부터 받은 요청을 end server에게 보내어 응답을 받은 후, 해당 응답을 클라이언트에게 보낸다. 프록시는 크게 Forward proxy와 reverse proxy로 나눌 수 있다..
-
[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 웹 서버를 알아보기 전에 웹 서버가 무엇인지 알아볼 필요가 있고 웹 서버를 알아보기 전에 근본적으로 서버가 무엇인지 알아볼 필요가 있다. 먼저, 우리가 흔히 알고있는 네트워크라는 큰 틀에서는 클라이언트와 서버라는 모델에 기초하고 있다. 여기서, 클라이언트는 자신이 필요로 하는 무언가를 요청하는 대상이고 서버는 클라이언트의 요청을 받아 필요로 하는 서비스를 제공, 응답해주는 대상이다. 즉, 물리적으로는..