πŸ“‚ 개발 μ„œμ /그림으둜 λ°°μš°λŠ” HTTP&Network Basic

    제 11μž₯. μ›Ή 곡격 기술

    μΈν„°λ„·μƒμ—μ„œ λ²Œμ–΄μ§€λŠ” 곡격의 λŒ€λΆ€λΆ„μ€ μ›Ή μ‚¬μ΄νŠΈλ₯Ό λ…Έλ¦° 것이닀 μ›Ή μ‚¬μ΄νŠΈ κ³΅κ²©μ—λŠ” μ–΄λ–€ 것이 μžˆλŠ”μ§€ 그리고 μ–΄λ–€ 영ν–₯을 λ―ΈμΉ˜λŠ”μ§€μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž. μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•œ 곡격 νŒ¨ν„΄ μ„œλ²„λ₯Ό λ…Έλ¦¬λŠ” λŠ₯동적 곡격 (active attack) κ³΅κ²©μžκ°€ 직접 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ•‘μ„ΈμŠ€ ν•΄μ„œ 곡격 μ½”λ“œλ₯Ό λ³΄λ‚΄λŠ” νƒ€μž…μ˜ 곡격 μ„œλ²„ μƒμ˜ λ¦¬μ†ŒμŠ€μ— λŒ€ν•΄ 직접 μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— κ³΅κ²©μžκ°€ λ¦¬μ†ŒμŠ€μ— μ•‘μ„ΈμŠ€ ν•  ν•„μš”κ°€ 있음 ex) SQL μΈμ μ…˜, OS μ»€λ§¨λ“œ μΈμ μ…˜ μœ μ €λ₯Ό λ…Έλ¦¬λŠ” μˆ˜λ™μ  곡격 (passive attack) 함점을 μ΄μš©ν•΄μ„œ μœ μ €μ—κ²Œ 곡격 μ½”λ“œλ₯Ό μ‹€ν–‰μ‹œν‚€λŠ” 곡격 κ³΅κ²©μžκ°€ 직접 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ•‘μ„ΈμŠ€ ν•΄μ„œ κ³΅κ²©ν•˜μ§€ μ•ŠμŒ ex) 크둜슀 μ‚¬μ΄νŠΈ μŠ€ν¬λ¦½νŒ…(XSS, cross-site scripting), 크둜슀 μ‚¬μ΄νŠΈ 리..

    제 9μž₯. HTTP에 κΈ°λŠ₯을 μΆ”κ°€ν•œ ν”„λ‘œν† μ½œ

    HTTPλ₯Ό 기반으둜 ν•΄μ„œ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•œ ν”„λ‘œν† μ½œμ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž. πŸ“˜ 1. HTTP의 병λͺ© ν˜„μƒμ„ ν•΄μ†Œν•˜λŠ” SPDY Google이 2010년에 λ°œν‘œν•œ SPDY(SPeeDY)λŠ” HTTP의 병λͺ© ν˜„μƒμ„ ν•΄μ†Œν•˜κ³  μ›Ή νŽ˜μ΄μ§€ λ‘œλ”© μ‹œκ°„μ„ 50% ν•˜λ‹€λŠ” λͺ©ν‘œλ₯Ό μ„Έμš°κ³  개발 πŸ”Ž HTTP의 병λͺ© ν˜„μƒμ΄ λ°œμƒν•˜λŠ” 이유 1개의 컀λ„₯μ…˜μœΌλ‘œ 1개의 μš”μ²­λ§Œ 보낼 수 μžˆλ‹€ μš”μ²­μ€ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œλ§Œ μ‹œμž‘ν•  수 μžˆλ‹€. μ‘λ‹΅λ§Œ λ°›λŠ” 것은 λΆˆκ°€λŠ₯ν•˜λ‹€ μš”μ²­/응닡 헀더λ₯Ό μ••μΆ•ν•˜μ§€ μ•Šμ€ μ±„λ‘œ 보낸닀. ν—€λ”μ˜ 정보가 λ§Žμ„μˆ˜λ‘ 지연이 심해진닀 μž₯ν™©ν•œ 헀더λ₯Ό 보낸닀. 맀번 같은 헀더λ₯Ό λ³΄λ‚΄λŠ” 것은 λ‚­λΉ„λ‹€ 데이터 압좕을 μž„μ˜λ‘œ 선택할 수 μžˆλ‹€. μ••μΆ•ν•΄μ„œ λ³΄λ‚΄λŠ” 것이 κ°•μ œμ μ΄μ§€ μ•Šλ‹€ πŸ”Ž Ajax에 μ˜ν•œ ν•΄κ²° 방법 AjaxλŠ” JavaScrip..

    제 8μž₯. λˆ„κ°€ μ—‘μ„ΈμŠ€ν•˜κ³  μžˆλŠ”μ§€λ₯Ό ν™•μΈν•˜λŠ” 인증

    HTTPμ—μ„œ μ‚¬μš©ν•˜λŠ” 인증 방법 4가지λ₯Ό μ•Œμ•„λ³΄μž. πŸ“˜ 1. BASIC 인증 μ›Ή μ„œλ²„μ™€ λŒ€μ‘ν•˜κ³  μžˆλŠ” ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄μ—μ„œ μ΄λ€„μ§€λŠ” 인증 방식 πŸ”Ž 인증 절차 μš”μ²­ 솑신 μƒνƒœ μ½”λ“œ 401둜 μ‘λ‹΅ν•΄μ„œ 인증이 ν•„μš”ν•˜λ‹€λŠ” 것을 전달 μœ μ €ID와 νŒ¨μŠ€μ›Œλ“œλ₯Ό Base64 ν˜•μ‹μœΌλ‘œ μΈμ½”λ”©ν•œ 것을 솑신 인증 성곡 μ‹œ 200으둜 μ‘λ‹΅ν•˜κ³ , μ‹€νŒ¨ μ‹œ 401둜 응닡 BASIC μΈμ¦μ—μ„œλŠ” Base64λΌλŠ” 인코딩 ν˜•μ‹μ„ μ‚¬μš© (μ•„λ¬΄λŸ° λΆ€κ°€ 정보 없이도 λ³΅ν˜Έν™”κ°€ κ°€λŠ₯ν•˜λ‹€λŠ” 것) BASIC 인증을 ν•˜λ©΄, 일반 λΈŒλΌμš°μ €μ—μ„œλŠ” λ‘œκ·Έμ•„μ›ƒμ„ ν•  수 μ—†λ‹€λŠ” λ¬Έμ œκ°€ 있음 μ‚¬μš©μƒμ˜ λ¬Έμ œμ™€ λ§Žμ€ μ›Ή μ‚¬μ΄νŠΈμ—μ„œ μš”κ΅¬λ˜λŠ” λ³΄μ•ˆ 등급에 λ―ΈμΉ˜μ§€ λͺ»ν•œλ‹€λŠ” λ©΄μ—μ„œ 그닀지 많이 μ‚¬μš©λ˜κ³  μžˆμ§€λŠ” μ•ŠμŒ πŸ“˜ 2. DIGEST 인증 BASIC 인증의 약점을 λ³΄μ•ˆν•œ 것..

    제 7μž₯. 웹을 μ•ˆμ „ν•˜κ²Œ μ§€μΌœμ£ΌλŠ” HTTPS

    πŸ“˜ 1. HTTP의 문제점과 ν•΄κ²° λ°©μ•ˆ HTTP의 3가지 문제점과 각각에 λŒ€ν•œ ν•΄κ²° λ°©μ•ˆμ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž. πŸ”Ž 1-1. 평문(μ•”ν˜Έν™”ν•˜μ§€ μ•Šμ€)이기 λ•Œλ¬Έμ— 도청이 κ°€λŠ₯ν•˜λ‹€. HTTPλ₯Ό μ‚¬μš©ν•œ μš”μ²­κ³Ό μ‘λ‹΅μ˜ 톡신 λ‚΄μš©μ€ HTTP μžμ‹ μ„ μ•”ν˜Έν™”ν•˜λŠ” κΈ°λŠ₯이 μ—†κΈ° λ•Œλ¬Έμ— 톡신 전체가 μ•”ν˜Έν™”λ˜μ§€λŠ” μ•ŠλŠ”λ‹€. 즉, 평문(μ•”ν˜Έν™”λ˜μ§€ μ•Šμ€ λ©”μ‹œμ§€)으둜 HTTP λ©”μ‹œμ§€λ₯Ό 보낸닀 μ–΄λŠ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°€ 톡신을 ν•  λ•Œ, 톡신 경둜 상에 μžˆλŠ” λ„€νŠΈμ›Œν¬ κΈ°κΈ°, 케이블, 컴퓨터 등을 μ „λΆ€ 자기 μžμ‹ μ΄ μ†Œμœ ν•˜κ³  μžˆμ„ μˆ˜λŠ” μ—†λ‹€. κ·Έλž˜μ„œ μ•…μ˜λ₯Ό 가진 λˆ„κ΅°κ°€κ°€ HTTP λ©”μ‹œμ§€λ₯Ό μ—Ώλ³Ό 수 μžˆλ‹€. πŸ“Œ ν•΄κ²°μ±… 톡신 μ•”ν˜Έν™” SSL(Secure Socket Layer)μ΄λ‚˜ TLS(Transport Layer Security)λΌλŠ” λ‹€λ₯Έ ν”„λ‘œν† μ½œ..

    제 6μž₯. HTTP 헀더

    HTTP 헀더 ν•„λ“œλŠ” κ·Έ μš©λ„μ— 따라 4μ’…λ₯˜λ‘œ λΆ„λ₯˜ν•  수 μžˆλ‹€. λ˜ν•œ, HTTP 헀더 ν•„λ“œλŠ” μΊμ‹œμ™€ λΉ„μΊμ‹œ ν”„λ‘μ‹œμ˜ λ™μž‘μ„ μ •μ˜ν•˜κΈ° μœ„ν•΄μ„œ 두 가지 μΉ΄ν…Œκ³ λ¦¬λ‘œ λΆ„λ₯˜λ˜μ–΄ μžˆλ‹€. End-to-end 헀더 μš”μ²­μ΄λ‚˜ μ‘λ‹΅μ˜ μ΅œμ’… μˆ˜μ‹ μžμ—κ²Œ 전솑 Hop-by-hop 헀더 ν•œ 번 전솑에 λŒ€ν•΄μ„œλ§Œ μœ νš¨ν•˜κ³  μΊμ‹œμ™€ ν”„λ‘μ‹œμ— μ˜ν•΄μ„œ μ „μ†‘λ˜μ§€ μ•ŠλŠ” 것도 있음 πŸ“˜ 1. 일반적 헀더 ν•„λ“œ(General Header Fields) μš”μ²­ λ©”μ‹œμ§€μ™€ 응닡 λ©”μ‹œμ§€ λ‘˜ λ‹€ μ‚¬μš©λ˜λŠ” 헀더 헀더 ν•„λ“œ λͺ… μ„€λͺ… Cache-Control 캐싱 λ™μž‘ 지정 Connection Hop-by-hop 헀더. 컀λ„₯μ…˜ 관리 Date λ©”μ‹œμ§€ 생성 λ‚ μ§œ Pragma λ©”μ‹œμ§€ μ œμ–΄ Trailer λ©”μ‹œμ§€μ˜ 끝에 μžˆλŠ” ν—€λ”μ˜ 일람 Transfer-Encoding λ©”..

    제 5μž₯. HTTP와 μ—°κ³„ν•˜λŠ” μ›Ή μ„œλ²„

    πŸ“˜ 1. 가상 호슀트(Virtual Host) 가상 호슀트 κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ λ¬Όλ¦¬μ μœΌλ‘œλŠ” μ„œλ²„κ°€ 1λŒ€μ§€λ§Œ κ°€μƒμœΌλ‘œ μ—¬λŸ¬ λŒ€κ°€ μžˆλŠ” κ²ƒμ²˜λŸΌ μ„€μ •ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€ κ³ κ°λ§ˆλ‹€ λ‹€λ₯Έ 도메인을 가지고, λ‹€λ₯Έ μ›Ή μ‚¬μ΄νŠΈλ₯Ό μ‹€ν–‰ν•  수 μžˆλ‹€ 이름 기반의 가상 호슀트(Name-Based Virtual Host) 같은 IP μ£Όμ†Œλ₯Ό 가지고 μ—¬λŸ¬ 개의 호슀트λͺ…을 가진닀. example1.com -> 192.168.0.1 example2.com -> 192.168.0.1 μ£Όμ†Œ 기반의 가상 호슀트(IP-Based Virtual Host) ν•˜λ‚˜μ˜ μ„œλ²„μ— μžˆλŠ” λ„λ©”μΈλ“€μ—κ²Œ 각각 IP μ£Όμ†Œλ₯Ό ν• λ‹Ήν•˜μ—¬ 운용 example1.com -> 192.168.0.0 example2.com -> 192.168.0.1 포트 기반의 가상 호슀트(Por..

    제 4μž₯. κ²°κ³Όλ₯Ό μ „λ‹¬ν•˜λŠ” HTTP μƒνƒœ μ½”λ“œ

    πŸ“˜ 1. μƒνƒœ μ½”λ“œ 클래슀 클래슀 μ„€λͺ… 1XX Informational μš”μ²­μ„ λ°›μ•„λ“€μ—¬ μ²˜λ¦¬μ€‘ 2XX Success μš”μ²­μ„ μ •μƒμ μœΌλ‘œ μ²˜λ¦¬ν–ˆμŒ 3XX Redirection μš”μ²­μ„ μ™„λ£Œν•˜κΈ° μœ„ν•΄μ„œ μΆ”κ°€ λ™μž‘μ΄ ν•„μš” 4XX Client Error μ„œλ²„κ°€ μš”μ²­μ„ 이해 λΆˆκ°€λŠ₯ 5XX Server Error μ„œλ²„κ°€ μš”μ²­ 처리 μ‹€νŒ¨ πŸ“˜ 2. 2XX 성곡(Success) μš”μ²­μ΄ μ •μƒμ μœΌλ‘œ μ²˜λ¦¬λ˜μ—ˆμŒμ„ λ‚˜νƒ€λƒ„ 200 OK ν΄λΌμ΄μ–ΈνŠΈκ°€ 보낸 λ¦¬ν€˜μŠ€νŠΈλ₯Ό μ„œλ²„κ°€ 정상 μ²˜λ¦¬ν•˜μ˜€μŒμ„ λ‚˜νƒ€λƒ„ 204 No Content μ„œλ²„κ°€ μš”μ²­μ„ λ°›μ•„μ„œ μ²˜λ¦¬ν•˜λŠ” λ°λŠ” μ„±κ³΅ν–ˆμ§€λ§Œ 응닡에 μ—”ν‹°ν‹° λ°”λ””λ₯Ό ν¬ν•¨ν•˜μ§€ μ•ŠμŒμ„ 의미 ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„μ— 정보λ₯Ό λ³΄λ‚΄λŠ” κ²ƒμœΌλ‘œ μ‘±ν•˜κ³ , ν΄λΌμ΄μ–ΈνŠΈμ— λŒ€ν•΄μ„œ μƒˆλ‘œμš΄ 정보λ₯Ό 보낼 ν•„μš”κ°€ μ—†λŠ” κ²½μš°μ— μ‚¬μš© 206 ..

    제 3μž₯. HTTP μ •λ³΄λŠ” HTTP λ©”μ‹œμ§€μ— μžˆλ‹€.

    πŸ“˜ 1. 전솑 νš¨μœ¨μ„ λ†’μ΄λŠ” 인코딩 HTTP둜 데이터λ₯Ό 전솑할 경우 κ·ΈλŒ€λ‘œ 전솑할 수 μžˆμ§€λ§Œ 전솑할 λ•Œμ— 인코딩(λ³€ν™˜)을 μ‹€μ‹œν•¨μœΌλ‘œμ¨ 전솑 νš¨μœ¨μ„ 높일 수 μžˆλ‹€. ν•˜μ§€λ§Œ, μ»΄ν“¨ν„°μ—μ„œ 인코딩 처리λ₯Ό ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— CPU λ“±μ˜ λ¦¬μ†ŒμŠ€λŠ” 보닀 많이 μ†ŒλΉ„ν•˜κ²Œ λœλ‹€. μ½˜ν…μΈ  μ½”λ”©(Content Codings) 엔티티에 μ μš©ν•˜λŠ” 인코딩을 κ°€λ¦¬ν‚€λŠ”λ° μ—”ν‹°ν‹° 정보λ₯Ό μœ μ§€ν•œ μ±„λ‘œ μ••μΆ•ν•œλ‹€. μ’…λ₯˜ : gzip(GNU zip), compress(UNIX의 ν‘œμ€€ μ••μΆ•), deflate(zlib), identity(인코딩 μ—†μŒ) 싱크 전솑 μ½”λ”©(Chunked transfer Coding) μ—”ν‹°ν‹° λ°”λ””λ₯Ό λΆ„ν• ν•˜λŠ” κΈ°λŠ₯ μ‚¬μ΄μ¦ˆκ°€ 큰 데이터λ₯Ό μ „μ†‘ν•˜λŠ” κ²½μš°μ— 데이터λ₯Ό λΆ„ν• ν•΄μ„œ μ‘°κΈˆμ”© ν‘œμ‹œν•˜λ„λ‘ ν•˜λŠ” 것 πŸ“˜ 2. μ—¬λŸ¬ 데이터λ₯Ό 보..

    제 2μž₯. κ°„λ‹¨ν•œ ν”„λ‘œν† μ½œ HTTP

    πŸ“˜ 1. HTTP λ©”μ‹œμ§€ ꡬ쑰 πŸ”Ž 1. HTTP Requset ꡬ쑰 Start Line [HTTP Method][Request Target][HTTP Version]둜 ꡬ성 HTTP Method : μš”μ²­μ˜ μ˜λ„λ₯Ό λ‹΄κ³  μžˆλŠ” GET, POST, PUT, DELETE 등이 ν•΄λ‹Ή Request Target : HTTP Requestκ°€ μ „μ†‘λ˜λŠ” λͺ©ν‘œ μ£Όμ†Œ HTTP Version : version에 λ”°λΌμ„œ Request λ©”μ‹œμ§€ κ΅¬μ‘°λ‚˜ 데이터가 λ‹€λ₯Ό 수 μžˆμ–΄μ„œ version을 λͺ…μ‹œν•΄μ•Ό 함 Http Headers ν•΄λ‹Ή Request에 λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό λ‹΄κ³  μžˆλŠ” λΆ€λΆ„ μš”μ²­ν•˜λ €λŠ” μ„œλ²„ 호슀트 이름, 포트 번호, cookie, authorization 등이 쑴재 Empty Line Headers의 끝을 빈 μ€„λ‘œ 식별 B..

    제 1μž₯. μ›Ήκ³Ό λ„€νŠΈμ›Œν¬μ˜ 기본에 λŒ€ν•΄ μ•Œμ•„λ³΄μž

    μ±…(그림으둜 λ°°μš°λŠ” Http&Network Basic)을 톡해 HTTP와 NetWork에 λŒ€ν•œ 전체적인 큰 틀을 μ΄ν•΄ν•˜κ³  κ·Έ λ‚΄μš©λ“€μ„ μ •λ¦¬ν•˜κ³ μž ν•œλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— 좔가적인 곡뢀가 ν•„μš”ν•œ μ£Όμ œμ— λŒ€ν•΄μ„œλŠ” λ‹€μ‹œ ν•œλ²ˆ μžμ„Ένžˆ λΈ”λ‘œκΉ…μ„ ν•˜λ„λ‘ ν•˜κ² λ‹€. πŸ“˜ 1. κΈ°λ³Έμš©μ–΄ μ„œλ²„ λ¦¬μ†ŒμŠ€λΌκ³  λΆˆλ¦¬λŠ” 파일 λ“±μ˜ 정보λ₯Ό μ €μž₯ ν΄λΌμ΄μ–ΈνŠΈ μ„œλ²„μ— μ˜λ’°ν•˜λŠ” μ›Ή λΈŒλΌμš°μ € HTTP(HyperText Transfer Protocol) ν”„λ‘œν† μ½œ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„κΉŒμ§€ 일련의 흐름을 κ²°μ •ν•˜κ³  μžˆλŠ” 것 ν”„λ‘œν† μ½œ(Protocol) μ„œλ‘œ λ‹€λ₯Έ ν•˜λ“œμ›¨μ–΄μ™€ 운영체제 등을 가지고 μ„œλ‘œ 톡신을 ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ κ·œμΉ™ πŸ“˜ 2. TCP/IP 인터넷과 κ΄€λ ¨λœ ν”„λ‘œν† μ½œλ“€μ„ λͺ¨μ€ 것 TCP/IPλŠ” 'μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 계측', '트랜슀포트 계측', 'λ„€νŠΈμ›Œν¬ ..