JAVA TCP ์์ผ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๊ฐ๋จํ HTTP ํด๋ผ์ด์ธํธ ๊ตฌํํ๊ธฐ
HTTP ํ๋กํ ์ฝ
HTTP ํ๋กํ ์ฝ(Hyper-Text Transfer Protocol)์ ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ ์ฌ์ด์ ๋ฐ์ดํฐ ํต์ ๊ท์น์ด๋ค.
- ์น ๋ธ๋ผ์ฐ์ ๋ HTTP ์์ฒญ ํ์์ ๋ฐ๋ผ ์น ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค.
- ์น ์๋ฒ๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ ์์ฒญ๋ฐ์ ์ผ์ ์ฒ๋ฆฌํ์ฌ HTTP ์๋ตํ์์ ๋ฐ๋ผ ์๋ตํ๋ค.
SOAP(Simple Object Access Protocol)๋ RESTful(REpresentational State Transfer)์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์๋น์ค๋ฅผ ์์ฒญํ๊ณ ์๋ตํ๋ ๋ฐฉ์์ ๋งํ๋ ๊ฒ์ผ๋ก HTTP ํ๋กํ ์ฝ์ ์์ฉํ๊ฑฐ๋ ํ์ฅํ ๊ธฐ์ ์ด๋ค.
WebDAV(World Wide Web Distributed Authoring and Versioning)๊ณผ CalDAV๋ ์น์์์ ์ฌ๋ฌ ์ฌ๋์ด ๋ฌธ์, ํ์ผ, ์บ๋ฆฐ๋๋ฅผ ์ฝ๊ฒ ํธ์งํ๊ณ ๊ณต์ ํ ์ ์๋๋ก ํ๋ ๊ธฐ์ ์ด๋ค. ์ด๊ฒ ๋ํ HTTP ํ๋กํ ์ฝ์ ์์ฉ ๊ธฐ์ ์ด๋ค.
HTTP ์์ฒญ ํ์
๋ค์์ ์น ๋ธ๋ผ์ฐ์ ์์ www.daum.net์ผ๋ก ์ ์ํ์ ๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์น ์๋ฒ์๊ฒ ์์ฒญํ๋ HTTP ์์ฒญ ๋ฉ์์ง์ ์์ด๋ค.
01 GET / HTTP/1.1
02 Host: www.daum.net
03 Cache-Control: max-age=0
04 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
05 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101
Safari/537.36
06 Accept-Encoding: gzip,deflate,sdch
07 Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
08
์์ฒญ ๋ผ์ธ(Request-Line)
์์ฒญ ๋ฉ์์ง์ ์ฒซ ๋ผ์ธ์ธ GET / HTTP/1.1์ ์์ฒญ ๋ผ์ธ์ผ๋ก ๋ฉ์๋, ์์ฒญ ์์(์์ฒญ URI), ํ๋กํ ์ฝ ๋ฒ์ ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
GET : ๋ฉ์๋
/ : ์์ฒญ ์์(์์ฒญ URI)
HTTP/1.1 : ํ๋กํ ์ฝ ๋ฒ์
- ๋ฉ์๋๋ ์์ฒญ ์์์ ๋ํด ์น ์๋ฒ์๊ฒ ๋ด๋ฆฌ๋ ๋ช ๋ น์ด๋ค. ๋ฉ์๋์๋ GET, POST, HEAD, PUT, DELETE, TRACE, CONNECT, OPTIONS ๋ฑ์ด ์๋ค.
- ์์ฒญ URI๋ ์์ฒญํ๋ ์์์ ์๋ณ์(๊ฒฝ๋ก)์ด๋ค. ์น ์๋ฒ๋ ์ด ์๋ณ์๋ฅผ ์ด์ฉํด์ ํด๋น ์์์ ์ฐพ๋๋ค.
- ํ๋กํ ์ฝ ๋ฒ์ ์ ์์ฒญ ์ ๋ณด๊ฐ ์ด๋ค ๋ฒ์ ์ ๋ง์ถ์ด ์์ฑ๋๋์ง ์น ์๋ฒ์๊ฒ ์๋ ค์ฃผ๋ ๊ฒ์ด๋ค.
์์ฒญ ํค๋
02~07๋ฒ ๋ผ์ธ์ ์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ์ฐธ๊ณ ํ๋ผ๊ณ ํด๋ผ์ด์ธํธ์์ ์น ์๋ฒ์๊ฒ ์๋ ค์ฃผ๋ ์ ๋ณด์ด๋ค. ์ด๋ฐ ์ ๋ณด๋ฅผ ํค๋ ์ ๋ณด๋ผ๊ณ ํ๋ค. ํค๋ ์ด๋ฆ : ํค๋ ๊ฐ ํ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
- ์ผ๋ฐ ํค๋(General-header)๋ ์์ฒญ, ์๋ต ๋ชจ๋์ ์ ์ฉํ ์ ์๋ค.
- ์์ฒญ ํค๋(Request-header)๋ ์์ฒญ ํค๋์ ์ ์ฉํ ์ ์๋ค.
- ์๋ต ํค๋(Response-header)๋ ์๋ต ํค๋์ ์ ์ฉํ ์ ์๋ค.
- ์ํฐํฐ ํค๋(Entity-header)๋ ๋ณด๋ด๊ฑฐ๋ ๋ฐ๋ ๋ณธ๋ฌธ ๋ฐ์ดํฐ๋ฅผ ์ค๋ช ํ๋ ํค๋์ด๋ค.
์์ฒญ ํค๋ ์ค User-Agent๋ ํด๋ผ์ด์ธํธ์ ์ ๋ณด๋ฅผ ์๋ฒ์๊ฒ ์๋ ค์ฃผ๋ ํค๋์ด๋ค. ์น ์๋ฒ๋ ์ด ํค๋๋ฅผ ๋ถ์ํด์ ์์ฒญ์์ OS์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ตฌ๋ถํ๋ค.
๊ณต๋ฐฑ ๋ผ์ธ๊ณผ ์์ฒญ ๋ฐ์ดํฐ(Message-Body)
HTTP ์์ฒญ ๋ฉ์์ง ์ค ๋ง์ง๋ง 08๋ฒ ๋ผ์ธ์ ํค๋์ ๋์ ํ์ํ๋ค. ๊ณต๋ฐฑ ๋ผ์ธ ๋ค์์๋ ์๋ฒ์ ๋ณด๋ผ ๋ฐ์ดํฐ(Message-body)๊ฐ ์ค๋๋ฐ ์ ์์๋ GET ์์ฒญ์ด๋ฏ๋ก ์์ฒญ ๋ฉ์์ง๋ ๊ณต๋ฐฑ ๋ผ์ธ์ผ๋ก ๋๋๋ค.
HTTP ์๋ต ํ์
๋ค์์ ์น ๋ธ๋ผ์ฐ์ ์์ www.daum.net์ผ๋ก ์ ์ํ์ ๋ ์น ์๋ฒ๊ฐ ์น ๋ธ๋ผ์ฐ์ ์๊ฒ ์๋ตํ๋ HTTP ์๋ต ๋ฐ์ดํฐ์ ์์ด๋ค.
01 HTTP/1.1 200 OK
02 Date: Fri, 18 Oct 2013 11:36:25 GMT
03 X-UA-Compatible: IE=10
04 Expires: Sat, 01, Jan, 1970 22:00:00 GMT
05 Pragma: no-cache
06 Cache-Control: no-cache, no-store, must-revalidate
07 P3P: CP="ALL DSP COR MON LAW IVDi HIS IVAi DELi SAMi OUR LEG PHY UNI ONL DEM STA INT NAV PUR FIN OTC GOV"
08 Content-Type: text/html;charset=UTF-8
09 Content-Language: ko-KR
10 Vary: Accept-Encoding
11 Content-Encoding: gzip
12 X-UA-Device-Type: pc
13 Content-Length: 34770
14 Connection: close
15
16 <!DOCTYPE html>
17 <html lang="ko">
18 <head>
19 ...(์ค๋ต)
์ํ ๋ผ์ธ(Status-Line)
์๋ต ๋ฉ์์ง์ ์ฒซ ๋ผ์ธ์ธ HTTP/1.1 200 OK๋ ์๋ต ๊ฒฐ๊ณผ์ ๋ํ ์ํ ์ ๋ณด์ด๋ค. ํ๋กํ ์ฝ ๋ฒ์ , ์ํ ์ฝ๋, ์ํ ์ค๋ช ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
HTTP/1.1 : HTTP ๋ฒ์
200 : ์ํ ์ฝ๋
OK : ์ํ ์ค๋ช
์ํ ์ฝ๋ | ์ํ ์ค๋ช |
200 | ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์๋ค. |
301 | ์์ฒญํ ์์์ด ์ด๋๋์๋ค. ํค๋ ์ ๋ณด์ ์ด๋ ์์น๋ฅผ ์๋ ค์คํ ๋ ๋ค์ ์์ฒญํ๋ผ. |
304 | ํด๋ผ์ด์ธํธ๊ฐ ์์ ๋ณด๊ดํ ์๋ต ๊ฒฐ๊ณผ์ ๋ค๋ฅด์ง ์๋ค. |
400 | ์๋ชป๋ ์์ฒญ |
404 | ์์ฒญํ ์์์ ์ฐพ์ ์ ์๋ค. |
500 | ์๋ฒ ๋ด๋ถ์์ ์ค๋ฅ ๋ฐ์ |
ํ - ์์ฃผ ์ ํ๋ HTTP ์๋ต ์ํ ์ฝ๋
์๋ต ํค๋
HTTP ์๋ต ๋ด์ฉ ์ค 02 ~ 14๋ฒ ๋ผ์ธ์ ์๋ต ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฐธ๊ณ ํ๋ผ๊ณ ์น ๋ธ๋ผ์ฐ์ ์๊ฒ ์๋ ค์ฃผ๋ ์ ๋ณด์ด๋ค. ํนํ Content-Type ํค๋๋ ์๋ฒ๊ฐ ์น ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ด๋ ๋ฐ์ดํฐ์ ํ์์ ๋ํ๋ธ๋ค. ์น ๋ธ๋ผ์ฐ์ ๋ ์ด๊ฒ์ ๋ณด๊ณ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ ์ง, ๋ค์ด๋ก๋ ์ฐฝ์ ๋์ธ์ง, ์ธ๋ถ ํ๋ก๊ทธ๋จ์ ์คํํ ์ง ๋ฑ์ ๊ฒฐ์ ํ๋ค. Content-Length๋ ์น ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ด๋ ๋ฐ์ดํฐ(message-body)์ ํฌ๊ธฐ(Byte)์ด๋ค.
๊ณต๋ฐฑ ๋ผ์ธ๊ณผ ์๋ต ๋ฐ์ดํฐ(Message-Body)
15๋ฒ ๋ผ์ธ์ ํค๋์ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๊ณต๋ฐฑ ๋ผ์ธ์ด๋ค. 16๋ฒ ๋ผ์ธ๋ถํฐ ์๋ต ๋ฐ์ดํฐ์ด๋ค.
์ด๋ ๊ฒ ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ๋ HTTP ํ์์ ๋ง์ถฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๋ฐ๋๋ค.
TCP ์์ผ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๊ฐ๋จํ HTTP ํด๋ผ์ด์ธํธ ๊ตฌํ
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class SimpleHttpClient {
public static void main(String[] args) throws Exception {
// ์์ผ ๋ฐ ์
์ถ๋ ฅ ์คํธ๋ฆผ ์ค๋น
Socket socket = new Socket("www.kocw.net", 80);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintStream out = new PrintStream(socket.getOutputStream());
// ์์ฒญ๋ผ์ธ
out.println("GET / HTTP/1.1");
// ํค๋์ ๋ณด
out.println("Host: www.kocw.net");
out.println("User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0)"
+ " AppleWebKit/537.36 (KHTML, like Gecko)"
+ " Chrome/30.0.1599.101 Safari/537.36");
// ๊ณต๋ฐฑ๋ผ์ธ
out.println();
// ์๋ต ๋ด์ฉ
String line = null;
while((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
out.close();
socket.close();
}
}
์์ผ ํ๋ก๊ทธ๋๋ฐ
์์ผ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก์ธ์ค๊ฐ์ ํต์ ์ ์ฌ์ฉ๋๋ ์์ชฝ ๋๋จ(endpoint)๋ฅผ ์๋ฏธํ๋ ์์ผ(socket)์ ์ด์ฉํ ํต์ ํ๋ก๊ทธ๋๋ฐ์ด๋ค. ์๋ฐ์์๋ java.net ํจํค์ง๋ฅผ ํตํด ์์ผ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ค.
TCP์์ผ ํ๋ก๊ทธ๋๋ฐ
TCP์์ผ ํ๋ก๊ทธ๋๋ฐ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ 1:1 ํต์ ์ด๋ค.
- 1. ์๋ฒ ํ๋ก๊ทธ๋จ์์ ServerSocket์ ์ฌ์ฉํด์ ์๋ฒ ์ปดํจํฐ์ ํน์ ํฌํธ์์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์์ฒญ์ ์ฒ๋ฆฌํ ์ค๋น๋ฅผ ํ๋ค.
- 2. ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ์ ์ํ ์๋ฒ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ Socket์ ์์ฑํด์ ์๋ฒ์ ์ฐ๊ฒฐ์ ์์ฒญํ๋ค.
- 3. ServerSocket์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์์ฒญ์ ๋ฐ์ผ๋ฉด ์๋ฒ์ ์๋ก์ด Socket์ ์์ฑํด์ ํด๋ผ์ด์ธํธ์ Socket๊ณผ ์ฐ๊ฒฐํ๋ค.
- ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ Socket๊ณผ ์๋ก ์์ฑ๋ ์๋ฒ์ Socket์ ServerSocket๊ณผ ๊ด๊ณ์์ด 1:1 ํต์ ์ ํ๋ค.
ServerSocket์ ํฌํธ์ ๊ฒฐํฉ(bind)๋์ด ํฌํธ๋ฅผ ํตํด ์๊ฒฉ ์ฌ์ฉ์์ ์ฐ๊ฒฐ์์ฒญ์ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ ์ฐ๊ฒฐ์์ฒญ์ด ์ฌ๋๋ง๋ค ์๋ก์ด Socket์ ์์ฑํด์ ์๋ํธ Socket๊ณผ ํต์ ํ ์ ์๋๋ก ์ฐ๊ฒฐํ๋ค. ์ฌ๊ธฐ๊น์ง๊ฐ ServerSocket์ ์ญํ ์ด๊ณ ์ค์ ๋ฐ์ดํฐ ํต์ ์ Socket๊ณผ Socket๊ฐ์ ์ด๋ฃจ์ด์ง๋ค.
์์ผ๊ณผ ์ ์ถ๋ ฅ ์คํธ๋ฆผ
์์ผ๋ค์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ฐ๊ฒฐํต๋ก๋ ์ ์ถ๋ ฅ์คํธ๋ฆผ์ด๋ค.
Socket์ ์ ๋ ฅ ์คํธ๋ฆผ๊ณผ ์ถ๋ ฅ ์คํธ๋ฆผ์ ๊ฐ๊ณ ์์ผ๋ฉฐ ํ ์์ผ์ ์ ๋ ฅ ์คํธ๋ฆผ์ ์๋ํธ ์์ผ์ ์ถ๋ ฅ ์คํธ๋ฆผ๊ณผ ์ฐ๊ฒฐ๋๊ณ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์๋ํธ ์์ผ์ ์ ๋ ฅ ์คํธ๋ฆผ๊ณผ ์ฐ๊ฒฐ๋๋ค.
Socket๊ณผ ServerSocket ํด๋์ค
์๋ฐ์์๋ TCP ์์ผ ํ๋ก๊ทธ๋๋ฐ์ ์ํด Socket๊ณผ ServerSocket ํด๋์ค๋ฅผ ์ ๊ณตํ๋ค.
Socket : ํ๋ก์ธ์ค๊ฐ์ ํต์ ์ ๋ด๋นํ๋ฉฐ InputStream๊ณผ OutputStream์ ๊ฐ๊ณ ์๋ค. ์ด ์คํธ๋ฆผ์ ํตํด ํ๋ก์ธ์ค๊ฐ์ ํต์ (์ ์ถ๋ ฅ)์ด ์ด๋ฃจ์ด์ง๋ค.
ServerSocket : ํฌํธ์ ์ฐ๊ฒฐ(bind)๋์ด ์ธ๋ถ์ ์ฐ๊ฒฐ ์์ฒญ์ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ ์์ฒญ์ด ๋ค์ด์ค๋ฉด Socket์ ์์ฑํด์ ์์ผ๊ณผ ์์ผ๊ฐ์ ํต์ ์ด ์ด๋ฃจ์ด์ง๋๋ก ํ๋ค. ํ ํฌํธ์ ํ๋์ ServerSocket๋ง ์ฐ๊ฒฐํ ์ ์์ผ๋ ํ๋กํ ์ฝ์ด ๋ค๋ฅด๋ฉด ๊ฐ์ ํฌํธ๋ฅผ ๊ณต์ ํ ์ ์๋ค.
Socket socket = new Socket("www.kocw.net", 80);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintStream out = new PrintStream(socket.getOutputStream());
1) ์๋ฒ ์ ๋ณด๋ฅผ ๊ฐ๊ณ Socket์ ์์ฑํ๋ค. ์ ์ํ ์น ์๋ฒ๋ KOCW ์ฌ์ดํธ์ด๊ณ ์น ์๋ฒ์ ๊ธฐ๋ณธ ํฌํธ๋ 80์ด๋ค. ์์ผ์ ์์ฑํ๋ฉด ์๋์ผ๋ก ์๋ฒ์ ์ฐ๊ฒฐ์์ฒญ์ ํ๋ค.
์๋ฒ์ ์ฐ๊ฒฐ๋๋ฉด ์์ผ์ ์ ๋ ฅ ์คํธ๋ฆผ์ ์ป์ด์(socket.getInputStream()) ์๋ฒ๊ฐ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ค.
InputStreamReader๋ ๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ์ ๋ฌธ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ์ผ๋ก ์ฐ๊ฒฐํด์ค๋ค.
BufferedReader๋ ๋ฒํผ๋ฅผ ์ด์ฉํด์ ์ ์ถ๋ ฅ์ ํจ์จ์ ๋์ผ ์ ์๊ฒ ํ๋ค. BufferedReader์ readLine()์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ผ์ธ ๋จ์๋ก ์ฝ์ ์ ์๋ค.
PrintStream์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ ์คํธ๋ฆผ์ ๋ค์ํ ํํ๋ก ์ถ๋ ฅํ ์ ์๋ print, println, printf์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ก๋ฉํ์ฌ ์ ๊ณตํ๋ค.
out.println("GET / HTTP/1.1");
2) ์๋ฒ์๊ฒ ์ํํ ์์ ์ ์๋ ค์ฃผ๋ ์์ฒญ ๋ผ์ธ(request line)์ ๋ณด๋ธ๋ค. ์์ฒญ ํ์(๋ฉ์๋)๋ GET, ์์ฒญ ์์์ ์น ์๋ฒ ๋ฃจํธ ํด๋์ ๊ธฐ๋ณธ ๋ฌธ์(/), ์ฌ์ฉํ ํ๋กํ ์ฝ์ HTTP, ๋ฒ์ ์ 1.1์ด๋ค.
out.println("Host: www.kocw.net");
out.println("User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0)"
+ " AppleWebKit/537.36 (KHTML, like Gecko)"
+ " Chrome/30.0.1599.101 Safari/537.36");
3) ์น ์๋ฒ์ ์์ฒญ ํค๋ ์ ๋ณด๋ฅผ ๋ณด๋ธ๋ค. ์ ์ํ๋ ค๋ ์น ์๋ฒ์ ์ฃผ์(Host)๋ www.kocw.net, ์์ฒญ์์ ์ ๋ณด(User-Agent)๋ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋ผ๊ณ ์์๋ก ์ค์ ํ๋ค.
out.println();
4) ์์ฒญ ๋ฉ์์ง์ ๋์ ํ์ํ๊ธฐ ์ํด ๊ณต๋ฐฑ ๋ผ์ธ์ ๋ณด๋ธ๋ค.
String line = null;
while((line = in.readLine()) != null) {
System.out.println(line);
}
5) ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ line ๋จ์๋ก ์ฝ์ด์ ์ถ๋ ฅํ๋ค.
์คํ ๊ฒฐ๊ณผ :
HTTP ์๋ต ํ์๋๋ก ์ฒซ ๋ผ์ธ์ ์๋ต ์ํ๋ผ์ธ, ๋ ๋ฒ์งธ ๋ผ์ธ๋ถํฐ ๊ณต๋ฐฑ ๋ผ์ธ๊น์ง๋ ์๋ต ํค๋, ๊ณต๋ฐฑ ๋ผ์ธ ๋ค์์๋ HTML๋ก ๋ ๋ณธ๋ฌธ ๋ฐ์ดํฐ๊ฐ ์จ๋ค. ์ด๋ ๊ฒ HTTP ๊ท์ฝ์ ๋ง์ถ์ด ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๋ฐ์ผ๋ฉด HTTP ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ฅผ ๋ง๋ค ์ ์๋ค.
๋๊ธ