= Ask-Why Web = 컴퓨터 í†µì‹ ì—서 부터 웹까지 ì´ê²ƒ ì—†ì´ëŠ” 살아갈수 없는 현대ì¸ì˜ 필수품, ì›¹ì„ ì²˜ìŒë¶€í„° 알차게 배워나가 봅시다. [[TableOfContents]] == 개요 == * 시간/기간 * 2014ë…„ 여름 ë°©í•™ + α * 2014ë…„ 7ì›” 15ì¼ë¶€í„° 시작 * 매주 화요ì¼/ê¸ˆìš”ì¼ ì˜¤í›„ 1 ~ 5시(ë나는 ì‹œê°„ì€ ê°•ì‚¬ 재량) * 범위 * Webì˜ ì‹œìž‘ë¶€í„° ë까지 (ì¼ ê¹€ì— ì™•ê¹Œì§€) * 컴퓨터 í†µì‹ (TCP/IP) 부터 Web Application까지 * ëŒ€ìƒ * 컴퓨터 공학부 í•™ìƒ ëˆ„êµ¬ë‚˜ (ì‚¬ì „ ì§€ì‹ ì—†ì–´ë„ ë¨) == References == * Mozilla Developer Network(MDN) - https://developer.mozilla.org/ko/ * W3Schools - http://www.w3schools.com/ * HTML5 draft - http://www.w3.org/TR/html5/ * HTML4.01 Spec - http://www.w3.org/TR/html401/ * HTTP 1.1 Spec - http://tools.ietf.org/html/rfc2616 * HTTP 2.0 draft - http://http2.github.io/ * TCP Spec - http://www.ietf.org/rfc/rfc793.txt * CSS 2.1 Spec - http://www.w3.org/TR/CSS2/ == ì°¸ì—¬ìž == '''ì°¸ì—¬í• ì‚¬ëžŒì˜ ì´ë¦„ì„ ì 어주세요''' * [bluemir] * [ì´ì›ì¤€] * [최다ì¸] * [ì´ì§€ìˆ˜] * [ê¹€ì •ë¯¼] * [김한성] * [ìœ ìž¬ë²”] * [ë°•í¬ì •] * [김성ì›] * [ì›ì¤€ì—°]--쿨타임 ëŒê³ 있ìŒ-- * [장í˜ìž¬] (드ëžì¸ & 아웃 í• ê²ƒ 같습니다) == ê¸°ë¡ == === Start Up Meeting === * ì´ë¦„ ì •í•˜ê¸° * askyweb * ì¼ ê¹€ì— ì›¹ê¹Œì§€ * 스파ì´ë”맨 * ~~스웹~~ * ~~안ìƒê²¨ìš” 웹~~ * 시간 ì •í•˜ê¸° * 목표 ì •í•˜ê¸° === OSI계층 && HTML실습 - 7/15 === * ì¶”ìƒí™” // ì°¸ê³ ë§í¬ : http://ko.wikipedia.org/wiki/%EC%B6%94%EC%83%81%ED%99%94 * 대학 ë©´ì ‘ 단골 질문ì´ì£ .(ì´ ë°©ì—서 ì´ì§„법으로 í‘œí˜„í• ìˆ˜ 있는 것ì€?? - 답 : 모ë‘) * ì¶”ìƒí™”란 ì „ì‚°í•™ì—서 ì¶”ìƒí™”(抽象化)는 복잡한 ìžë£Œ, 모듈, 시스템 등으로부터 핵심ì ì¸ ë¶€ë¶„ì„ ê°„ì¶”ë ¤ 내는 ê²ƒì„ ë§í•œë‹¤. * 즉, ê²Œìž„ì„ ë§Œë“¤ 때 ì´ê±´ ì–´ì°Œ 코딩해야하노.... ì´ëŸ° ìƒí™©ì´ ì¶”ìƒí™”ê°€ 안ëœë‹¤ë¼ëŠ” ê±°ì£ * #ì„ 7개를 ì°ì–´ë¼!! => for(int i=0;i<7;i++) printf("#"); // #ì„ 7ê°œ ì°ì–´ë¼ëŠ” 걸 ì¶”ìƒí™”하여 코딩한 ê±°ì£ . * OSI(Open Systems Interconnection Reference Model) 7계층 // ì°¸ê³ ë§í¬ : http://ko.wikipedia.org/wiki/OSI_%EB%AA%A8%ED%98%95 * 모형 .7. ì‘ìš© 계층(Application layer) - ~~ì‘용합시다~~ 간단히 í”„ë¡œê·¸ëž¨ì´ ëŒì•„가는 계층?? .6. 표현 계층(Presentation layer) - ~~표현합시다~~ ì½”ë“œê°„ì˜ ë²ˆì—(ì¸ì½”딩, 암호화같ì€ê±°) .5. 세션 계층(Session layer) - ~~í†µì‹ ìƒíƒœê°€ 불량합니다~~ í†µì‹ í•˜ëŠ” ìœ ì €ë“¤ì„ ë™ê¸°í™”í•˜ê³ ìƒíƒœë¥¼ ì ê²€ .4. ì „ì†¡ 계층(Transport layer) - TCPê°€ ì œì¼ ìœ ëª… ~~여기가 거기여~~ 가장 ëì— ìžˆëŠ” 사용ìžë¼ë¦¬ ì‹ ë¢°ì„±ìžˆëŠ” ë°ì´í„°ë¥¼ ì†¡ìˆ˜ì‹ í• ìˆ˜ 있게함 * TCP(Transmission Control Protocol, ì „ì†¡ ì œì–´ í”„ë¡œí† ì½œ) // ì°¸ê³ ë§í¬ : http://ko.wikipedia.org/wiki/%EC%A0%84%EC%86%A1_%EC%A0%9C%EC%96%B4_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C IPì˜ í•µì‹¬ í”„ë¡œí† ì½œ ì¤‘ì˜ í•˜ë‚˜. 근거리 í†µì‹ ë§ì´ë‚˜ ì¸íЏë¼ë„·, ì¸í„°ë„·ì— ì—°ê²°ëœ ì»´í“¨í„°ì—서 실행ë˜ëŠ” 프로그램 ê°„ì— ì •ë³´ êµí™˜ì„ ì—ëŸ¬ì—†ì´ í• ìˆ˜ 있게 한다. .3. ë„¤íŠ¸ì›Œí¬ ê³„ì¸µ(Network layer) - IPê°€ ì‚´ì§ ë¬¼ë ¤ìžˆëŠ” ê³³(IP를 3.5계층ì´ë¼ê³ í•˜ì£ ) 경로를 찾아주는 계층(그림ìƒê°ë‚˜ì£ ??) * IP(Internet Protocol, ì¸í„°ë„· í”„ë¡œí† ì½œ) // ì°¸ê³ ë§í¬ : http://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%84%B7_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C 사용ìžê°„ì˜ ë„¤íŠ¸ì›Œí¬ì—서 íŒ¨í‚·ì„ ì£¼ê³ ë°›ëŠ” ë° ì‚¬ìš©í•˜ëŠ” ì •ë³´ ìœ„ì£¼ì˜ ê·œì•½ì´ë‹¤. 사용ìžì˜ ì£¼ì†Œì§€ì •ê³¼ 패킷 ë¶„í• ë° ì¡°ë¦½ 기능 담당함. * 패킷 // ì°¸ê³ ë§í¬ : http://ko.wikipedia.org/wiki/%ED%8C%A8%ED%82%B7 ë°ì´í„°ì˜ 형ì‹í™”ëœ ë¸”ë¡. ê° íŒ¨í‚·ì€ í”„ë¡œí† ì½œ ê³„ì¸µë“¤ì˜ êµ¬í˜„ ë‚´ìš©ì„ ë‹´ê³ ìžˆìŒ. .2. ë°ì´í„° ë§í¬ 계층(Data link layer) - ì´ë”ë„·(Ethernet)ì´ ì—¬ê¸°. 물리계층ì—서 ë°œìƒí• 수 있는 오류와 í름 ì œì–´ * ì´ë”ë„· // ì°¸ê³ ë§í¬ : http://ko.wikipedia.org/wiki/%EC%9D%B4%EB%8D%94%EB%84%B7 LANì„ ìœ„í•´ ê°œë°œëœ ì»´í“¨í„° ë„¤íŠ¸ì›Œí¬ ê¸°ìˆ . 물리 계층ì—서 ì‹ í˜¸ì™€ ë°°ì„ , ë°ì´í„° ë§í¬ 계층ì—서 MAC 패킷과 í”„ë¡œí† ì½œì˜ í˜•ì‹ì„ ì •ì˜ .1. 물리 계층(Physical layer) - ëˆˆì— ë³´ì´ëŠ”ê±°(ì „ê¸°) ~~ë¬´ì„ ì¸í„°ë„·ë„ í¬í•¨ë˜ëŠ”ë° ì•ˆë³´ì¸ë‹¤ 그러면....í• ë§ì´...~~ ë§ê·¸ëŒ€ë¡œ 물리ì ì¸ ì‹¤ì œ 장치 * HTML실습 * 누가 실습한 것 좀...... * í• ë§ * 해킹 - ê³µê²©ì˜ ì˜ˆìˆ ì—서 OSI계층 ì„¤ëª…ì´ ìžˆëŠ”ë° ê·¸ê±° 찾아서 ì½ì–´ë³´ì„¸ìš” ì§± 쉬움(ë‚´ ì±… ê°€ì ¸ë‹¤ê°€ 놓ìŒ) - [김한성] === ìžë°”스í¬ë¦½íЏ - 7/18 === * 스터디 í파 ì§ì „ í탄 í•´ì œ 성공 - 1600마ì´í¬ë¡œë¶€ë¡œ í•´ì œ * ë˜ í•˜ì§€?? ì‹¤ìŠµí•˜ìž * vi ì •ë§ ì¢‹ì•„ìš” * [Vi Improved]를 ì°¸ê³ í•˜ì—¬ 사용해봅시다. * ì–´ë–¤ ì‹¤ìŠµì´ ì¢‹ì„까?? HTML했으니 ìžë°”스í¬ë¦½íŠ¸ë¥¼ 한다!(í›—! 그래야 ZP답지) * ìžë°”스í¬ë¦½íЏ * ìžë£Œí˜•ì€ varë¿ * í¬ë¡¬ì—서 실습 / HTMLì—서 <script> </script> 사ì´ì— ìžë°”스í¬ë¦½íЏ 삽입! * 서버사ì´ë“œ, í´ë¼ì´ì–¸íŠ¸ì‚¬ì´ë“œ * test.html파ì¼ì„ 만들어서 ì§ì ‘ 열어서 ìˆ˜ì • - 서버사ì´ë“œì—서 작업하는것 * í¬ë¡¬ì—서 개발ìžëª¨ë“œ - í´ë¼ì´ì–¸íŠ¸ì‚¬ì´ë“œì—서 작업하는것(ì„œë²„ì— ì €ìž¥ì´ ì•ˆë¨!!) * 헷깔리지맙시다! * ctrl+CV 소개 // http://ctrlcv.kr/#! * ìžë°”스í¬ë¦½íЏì—서 í´ë¦½ë³´ë“œë¥¼ ì§ì ‘ ì»¨íŠ¸ë¡¤í• ìˆ˜ 있다는 취지ì—서 소개 * 좋네 ê·¼ë° ì•„ì§ ë²„ê·¸ê°€ 좀.... * 최대 7ì¼ê°„ ìœ ì§€ * 여담..... * 함수형언어??, ë³‘ë ¬í™”?? ì•„ ì´ê±° ë야 무서워 === ë¼ìš°í„°ì™€ DNS - 7/22 === * ~~수강ìƒë“¤ì˜ ìƒíƒœê°€ 매우 메롱함~~ * íŒ¨í‚·ì˜ êµ¬ì¡° || 출발지MAC || 목ì ì§€MAC || ||<-2> 출발지 IP || ||<-2> ë„ì°©ì§€ IP || * ë¼ìš°í„° 찾기(ì „ì§€ì 작가시ì ì´ ì•„ë‹Œ 1ì¸ì¹ 주ì¸ê³µ 시ì 으로 봅시다) (1/A)ì—서 (4/D) 찾아가기(패킷으로 나타내보ìž) ê³¼ì • : (1/A) -> (2/B) -> (3/F) -> (4/D) || A || B || || B || F || || F || D || ||<-2> 1 || -> ||<-2> 1 || -> ||<-2> 1 || ||<-2> 4 || ||<-2> 4 || ||<-2> 4 || ||<-8> ë¼ìš°í„°ë¥¼ 찾아갈때 패킷ì—서 IP는 바뀌지 ì•Šê³ MAC주소만 바뀜 ë¼ìš°í„°ëŠ” í”„ë¡œí† ì½œì— ì˜í•´ 주변 ë¼ìš°í„°ì—게 물어봄 ë¼ìš°í„°ë¥¼ ê±°ì¹ ë•Œë§ˆë‹¤ TTL--(Time to Live) (ì´ˆê¸°ê°’ì€ ëžœë¤ì´ì§€ë§Œ ìš´ì˜ì²´ì œë§ˆë‹¤ íŠ¹ì •ê°’ì´ ìžˆìŒ) || * DNS(Domain Name System) * ì¼ë°˜ì 으로 네트워í¬ëŠ” IP로 구성 * naver.com / google.comì€ ë”가요?? => Domain Name!!! * ì¼ë°˜ì¸ì´ 알아보거나 기억하기 쉽게 숫ìžê°€ 아닌 í…스트로 IP를 대체함(즉, IP를 ìž…ë ¥í•´ë„ ì ‘ì†ê°€ëŠ¥) * 사용ìžê°€ ë„ë©”ì¸ì„ 검색 => DNSì„œë²„ì— ë¬¼ì–´ë´„ => DNS서버가 찾아서 IPì— ì—°ê²° => ì ‘ì† * ë‚´ê°€ 아는 DNSì„œë²„ì— ì—†ë„¤?? => while(1) 다른 DNSì„œë²„ì— ë¬¼ì–´ë´„ => 없으면 404 Not Founded 있으면 ëœ¨ê² ì§€ * 실습 * 지난 주 í´ë¼ì´ì–¸íЏ 사ì´ë“œì—서 작업함 * 서버 사ì´ë“œì—서 작업하여 ë‚´ìš©ì„ ë³€ê²½í•˜ì—¬ë„ ì €ìž¥ì´ ë¨ * 간단한 구구단 작성 === TCP와 HTTP - 7/25 === * TCP // ì°¸ê³ ë§í¬ : http://ko.wikipedia.org/wiki/%EC%A0%84%EC%86%A1_%EC%A0%9C%EC%96%B4_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C * ì •ì˜ : IPì˜ í•µì‹¬ í”„ë¡œí† ì½œ ì¤‘ì˜ í•˜ë‚˜. 근거리 í†µì‹ ë§ì´ë‚˜ ì¸íЏë¼ë„·, ì¸í„°ë„·ì— ì—°ê²°ëœ ì»´í“¨í„°ì—서 실행ë˜ëŠ” 프로그램 ê°„ì— ì •ë³´ êµí™˜ì„ ì—ëŸ¬ì—†ì´ í• ìˆ˜ 있게 한다. * TCPí¬íЏ(0~1023) // ì°¸ê³ ë§í¬ : https://en.wikipedia.org/wiki/TCP_and_UDP_port * TCPí¬íŠ¸ëŠ” ì¸í„°ë„· í”„ë¡œí† ì½œ ìŠ¤ìœ„íŠ¸ì˜ ì „ì†¡ 계층 í”„ë¡œí† ì½œ 중 TCP나 UDP ë“±ì˜ í”„ë¡œí† ì½œì´ ì‚¬ìš©í•˜ëŠ” ê°€ìƒì˜ 논리ì í†µì‹ ì—°ê²°ë‹¨ì´ë‹¤. ê° í¬íŠ¸ëŠ” 번호로 구별ë˜ë©° ì´ ë²ˆí˜¸ë¥¼ í¬íЏ 번호ë¼ê³ 한다. í¬íЏ 번호는 IP 주소와 함께 ì“°ì—¬ 해당하는 í”„ë¡œí† ì½œì— ì˜í•´ 사용ëœë‹¤. * 주로 사용하는 í¬íЏ 20 & 21: File Transfer Protocol (FTP) 22: Secure Shell (SSH) 23: Telnet remote login service 25: Simple Mail Transfer Protocol (SMTP) 53: Domain Name System (DNS) service 80: Hypertext Transfer Protocol (HTTP) used in the World Wide Web 110: Post Office Protocol (POP3) 119: Network News Transfer Protocol (NNTP) 143: Internet Message Access Protocol (IMAP) 161: Simple Network Management Protocol (SNMP) 194: Internet Relay Chat (IRC) 443: HTTP Secure (HTTPS) 465: SMTP Secure (SMTPS) * 패킷구조(조금 ë” í™•ìž¥) || 출발지MAC || 목ì ì§€MAC || ||<-2> 출발지IP || ||<-2> 목ì ì§€IP || || í¬íŠ¸ë²ˆí˜¸ || 43000 || ||<-2> GET / index.html HTTP / 1.0 || -> 43000ì˜ ì˜ë¯¸ëŠ” ì–´ë–¤ í”„ë¡œê·¸ëž¨ì´ ë³´ë‚¸ íŒ¨í‚·ì„ êµ¬ë³„í•˜ê¸° 위한 ì¼ë ¨ë²ˆí˜¸ê°™ì€ 것 * HTTP(hyperText Transfer Protocol) * wwwìƒì—서 ì •ë³´ë¥¼ ì£¼ê³ ë°›ì„ ìˆ˜ 있는 í”„ë¡œí† ì½œì´ë‹¤. TCP를 사용하며, 80번í¬íŠ¸ë¥¼ 사용 * history : HTTP -> SGML -> XML * 특징 * 아스키 기반 í”„ë¡œí† ì½œ * 엔터 -> \r\n * ê° ì˜µì…˜ 구분 -> 엔터 * í—¤ë”, 바디 구분 ìš”ì² ë -> 엔터ë‘번(즉, 빈줄) * ìš”ì²ì„ 하면 다시 받는다 * ìƒíƒœë¥¼ ì €ìž¥ì•ˆí•œë‹¤.(status less) * 메소드 : CRUD(Create, Read, Update, Delete) * ìš”ì² : GET(read), POST(Create), PUT(Update), Delete(Delete) * ì‘답(HTTP status code) : 200(OK), 301,304(리다ì´ë ‰ì…˜), 401,403,404(í´ë¼ì´ì–¸íЏ ì—러), 500(서버 ì—러) // ì°¸ê³ ë§í¬ : http://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C == 다ìŒì£¼ ì˜ˆê³ == 화요ì¼(7/29)ì— ì•ˆí•©ë‹ˆë‹¤.