<네트워크> 1Kb 초소형 웹서버 구조 -가을남자 덕현-

Slides:



Advertisements
Similar presentations
Term Project Hints Topics Keep-alive CGI Multi-thread Multi-process Event-based.
Advertisements

KB 스타 경제 · 금융교실 나는 용돈관리왕. KB 스타 경제 · 금융교실 나는 용돈관리왕 선생님은 ? KB 2  이름 : 김국민  별명 : 스타 왕자  소속 : KB 국민은행 소비자 보호담 당 ( 간단한 자기 소개 : 교육 대상이 흥미 를 가질 수 있는 이미지와.
폭력. 폭력이란 무엇인가 우상의 눈물 물리적인 폭력 ( 최기표 ) VS 지능적인 폭력 ( 임형우, 담임선생님 )
7 월 소식지에서는 도서관 분류에 대해 알아보았어요. 한국십진분류법은 0 에서 9 까지 열 개의 수를 가지고 이 세상 의 모든 것을 나누는 방법이라는 것. 이 세상의 모든 것이 이 열 개 가운데 어딘가에 꼭 들어가 야 한 다는 것 그럼,
1 박 2 일 !!! 인천마장초등학교 유수아. 1 박 2 일 멤버 인기순 위 1 위 이승기 2 위 엄태웅 3 위 은지원 4 위 김종민, 이수근 ※인터넷에서 본것이기 때문에 사람에따라 서 다를 수 있다. ※
석관중앙교회 5남전도회 석 관 중 앙 교 회 회원 소식 통권 05-04호 발행일 : 2005년 04월 회 장 : 장진호 집사
지역사회복지론 1조. 요양보호시설에 대해서 황성국 임재형 이동영
해외서, 국내서 요약 ‘북집’ 모바일 서비스 이용방법
변비 재활전문센터 재활 간호사 김은화.
* 07/16/96 처음으로 배우는 C 프로그래밍 제1부 기초 제1장 시작하기 *.
* 그룹 상시 연락망 : 각사 조직도 기준 연락망으로 대체함
Q & A (사실상 혼인·이혼) Q. 사실상 혼인·이혼 관계를 어떻게 처리해야 하나요?   사실 혼인·이혼은 부부 모두 동의 여부를 확인하고, 자녀, 이·통·반장으로부터 「사실(이)혼 확인서」를 징구해야 합니다. 만약 어느 한쪽이 동의하지 않는 경우는.
실전 웹 표준 가이드 요약 XHTML & CSS.
로그인 로그인을 하시기 전에 상단 엑티브엑스 프로그램을 실행 후 로그인을 해주시기 바랍니다.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
I 문학의 개념과 역할 1. 문학의 개념 (1) 언어 예술로서의 문학 (2) 소통 활동으로서의 문학
2017년 1/4분기 상1동 주민자치센터프로그램 수강생 모집【선착순】
고급 컴퓨터 프로그래밍 팀명:지식인 팀원:홍광수 원대연 이소정.
꼼꼼한 청소법 생활의 지혜.
4. 목적론적 윤리와 의무론적 윤리 01. 경험주의와 이성주의 01. 경험주의와 이성주의 02. 결과론적 윤리와 공리주의
개발 환경 개발 환경 개요 PXA270과 타겟 시스템 툴체인 환경 구축 JTAG 유틸리티 미니컴 Make 유틸리티
1. C 언어의 이해와 컴파일러 설치.
Department of Computer Engineering
누구나 쉽게 즐기는 C언어 콘서트 한남대학교 컴퓨터공학과 이 재 광 교수.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
Kasimov C언어 세미나 1st.
1 C 언어의 이해와 컴파일러 설치 프로그래밍 환경을 구축하자!.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express Slide 1 (of 23)
25장. 메모리 관리와 동적 할당.
독도 바로알기 2. 사료와 지도로 보는 독도.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
Department of Computer Engineering
12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로.
Chapter 4. 보조자료 - 파일 입출력 파일의 기본 개념과 특징을 이해한다. 파일 처리 과정을 이해한다.
C언어 프로그래밍의 이해 Ch14. 파일 입출력.
Department of Computer Engineering
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
17강 파일처리함수(1) 강 의 내 용 파일 입출력의 개념 파일포인터를 이용한 입출력 파일 입출력 과정
1. 논리적이란? 논리적이지 못하다 말이나 글에 두서가 없다. 1. 논리적이란? 논리적이지 못하다 말이나 글에 두서가 없다.
1) 인터넷주소(강남구보건소)로 접속해주세요.
개항기 조선과 동아시아 박 범 한국역사입문Ⅱ.
CGI (Common Gateway Interface)
119 신고방법.
Appendix A 구조적 시스템 개발 방법론.
CGI (Common Gateway Interface)
호암초등학교 박대현 선생님의 음악 수업 안내.
페이앳, 이렇게 사용하세요! APP(앱) 다운로드 & 실행 아이튠즈 또는 구글플레이에서 “페이앳”을 검색하세요.
Chapter 11. 배열과 포인터.
조 병 규 Software Quality Lab. 한국교통대학교
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
대구의 부도심 대구의 주요축 동대구 부도심 4조 강민석 / 박성균 / 최은지/ 황재현/김예지.
1. 어스앵커 시공계획 1-1. EARTH ANCHOR FLOW – CHART 및 전경 공종완료 케이싱 인발
KB스타 경제·금융교실 은행에 가요.
18장. 다차원 배열 그리고 포인터.
마음의 성전이 더 아름다운 조촌교회.
1.비 사업용(자가용 및 관용) 차 종 적 용 상 의 구 분 승합 자동차 (버스) 1 종
사도행전 13장 22절 말씀 –아멘 다 윗 을 왕 으 로 세 우 시 고 증 언 하 여 이 르 시 되 내 가 이 새 의 아 들
뇌를 자극하는 C 프로그래밍.
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
경찰행정과 세미나 결과를 공개해야한다. VS 비공개로 해야한다. 경찰의 근무성적평정 제도.
성전기공식(안) 식 순 1. 기공미사 2. 기 공 식 3. 축 하 연 천주교 수원교구 퇴촌성당.
주요공지로 정할 글을 올립니다. 제목과 주소를 복사해둡니다
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
어서와 C언어는 처음이지 제16장.
argc, argv 의 사용방법 #include <stdio.h>
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
C.
실습과제 1번 배열 크기 : 8 문자열 길이 : 7 // MBCS 예제: 출력 결과 이해하기
어서와 C언어는 처음이지 제22장.
KB스타 경제·금융교실 화폐가 태어났어요.
Presentation transcript:

<네트워크> 1Kb 초소형 웹서버 구조 -가을남자 덕현-

웹서버 기능 1.html/htm 웹페이지 처리/전송 2. jpg/gif 등 이미지 파일 전송 3. 다중 접속 기능 4. Zip 등 압축파일 전송 5. 최소한의 http 프로토콜 처리(get, ok) 1 2 3 4

코 드 흐 름 도 전체 Flow chart

How to minimize the size of code? 총 7단계 절차: 7kb->1kb 1. IE, FireFox 등 상용 브라우저의 우수성? "HTTP/1.0 200 OK\r\n“와 "Content-type:text/plain\r\n\r\n" 두 가지 메타데이터만 전송하도록 했다. (1kb 정도 줄일 수 있다) 2. 다양한 컴파일러 선택 3. 엔트리포인트 강제 지정(2kb 정도 줄일 수 있다) 4. 파일 정렬(alignment) (0.5kb 정도 줄일 수 있다) 5. 섹션 합병(merging)(2kb 정도 줄일 수 있다) 6. VC6 버전 cl.exe(컴파일러) 이용함 7. c 기본 라이브러리 사용을 배제하고 win 32 api 라이브러리 이용 (0.5kb 정도 줄일 수 있다)

똑똑한 익스플로러와 파이어폭스? 파싱, send,저장 에 필요한 추가적인 함수호출, string 클래스 사용 줄어듬 원래 ‘원칙적으로’ 전송해야 하는 메타 데이터들 send(cS, "HTTP/1.0 200 OK\r\n", 17, 0) send(sock, "My web Server\r\n", 15, 0) send(sock, "Content-length:1024\r\n", 21, 0) send(cS, "Content-type:text/plain\r\n\r\n",27, 0) 테스트 결과 두 가지만 전송해도 상용 웹브라우저는 알아듣는다. 파싱, send,저장 에 필요한 추가적인 함수호출, string 클래스 사용 줄어듬

어느 컴파일러가 가장 우수할까? Dev++ 내장 컴파일러(약24kb) VC2008의 cl.exe(약 7kb) Gcc 컴파일러(약 7.2kb) Lcc 컴파일러(약 32kb) ※컴파일 옵션에 따라 다소 차이가 날 수 있음 . 파일 포맷 merging과 파일 alignment를 수행하지 않았을 때 .

엔트리 포인트 강제 지정 엔트리 포인트란? 따라서 강제로 이러한 절차를 뛰어넘고 사용자가 프로그램을 실행했을때, 코드에서의 프로그램의 시작 지점 c/c++ 프로그램에서는 당연히 main 함수부분이 엔트리 포인트가 되나 사실은 그전에 내부적으로 내부에서 main 전에 커맨드 라인 인자, 프로그램 초기화 등을 수행한 이후에 main 함수를 호출한다. 따라서 강제로 이러한 절차를 뛰어넘고 (argv[] 커맨드 입력을 사용하지 않는다면)main 함수부터 바로 프로그램 실행이 되도록 지정을 해서, 메모리 약 2kb 정도를 절약할 수 있다. #pragma comment(linker,"/ENTRY:main") //링커에게 코드의 엔트리 포인트는 main 이라고 명시적으로 알려준다

파일 정렬 및 합병 Server.exe파일의 구조 PE 파일 포맷 섹션으로 나뉘어져 있고 각 섹션마다 극히 드문경우를 제외하고 섹션 뒤에 빈공간이 생길 수 밖에 없다 #pragma comment(linker, "/FILEALIGN:4") #pragma comment(linker, "/ALIGN:4") // Merge sections #pragma comment(linker,/MERGE:.rdata=.data") #pragma comment(linker, "/MERGE:.text=.data") #pragma comment(linker, "/MERGE:.reloc=.data")

C 기본 라이브러리 함수 VS win 32 api 함수 stdio.h 와 Stdlib.h 에 포함된 원래 사용했던 함수 Printf() Fopen() Fread() Memset() Exit() Windows.h 에 포함된 Win 32API의 기본함수들 Wprintf() CreateFile() ReadFile() zeroMemory() ExitProcess() VS #include <stdio.h> #include <stdlib.h> #include <winsock2.h> #include <windows.h> 헤더파일 두 개만 include

닷넷 프레임워크 종속성 우리 웹서버가 VC 2008 이나 VC2010가 깔려있지 않는 시스템에서 동작하지 않는다면? -VC6로 빌드한 코드는 윈도우 기본 dll만 사용하기 때문에 닷넷 프레임워크 (2005이상)이 깔려있지 않는 시스템 환경에서도 동작한다 VC6 컴파일러는 사용자에게 매우 관대하다! 다소 무리한 파일 병합,정렬도 받아준다

정리하면