<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=HyperText_transfer_protocol</id>
	<title>HyperText transfer protocol - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=HyperText_transfer_protocol"/>
	<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=HyperText_transfer_protocol&amp;action=history"/>
	<updated>2026-05-19T11:19:54Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://junhoahn.kr/noriwiki/index.php?title=HyperText_transfer_protocol&amp;diff=998&amp;oldid=prev</id>
		<title>Ahn9807: 새 문서: 분류:애플리케이션 계층  == 개요 == &#039;&#039;&#039;H&#039;&#039;&#039;yper&#039;&#039;&#039;T&#039;&#039;&#039;ext &#039;&#039;&#039;T&#039;&#039;&#039;ransfer &#039;&#039;&#039;P&#039;&#039;&#039;rotocol 또는 &#039;&#039;&#039;H&#039;&#039;&#039;yper&#039;&#039;&#039;T&#039;&#039;&#039;ex&#039;&#039;&#039;T&#039;&#039;&#039; &#039;&#039;&#039;P&#039;&#039;&#039;rotocol[* &#039;&#039;&#039;H&#039;&#039;&#039;yper&#039;&#039;&#039;T&#039;&#039;&#039;ex&#039;&#039;&#039;T&#039;&#039;&#039; &#039;&#039;&#039;P&#039;&#039;&#039;rotocol로 읽는 사람들이 가끔 있는데, 그렇다고 틀린 것은 아니다.]의 약자. 하이퍼텍스트를 빠르게 교환하기 위한 프로토콜의 일종으로 즉, HTTP는 서버와 클라이언트의 사이에서 어떻게 메...</title>
		<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=HyperText_transfer_protocol&amp;diff=998&amp;oldid=prev"/>
		<updated>2023-03-24T11:56:57Z</updated>

		<summary type="html">&lt;p&gt;새 문서: &lt;a href=&quot;/noriwiki/index.php?title=%EB%B6%84%EB%A5%98:%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98_%EA%B3%84%EC%B8%B5&quot; title=&quot;분류:애플리케이션 계층&quot;&gt;분류:애플리케이션 계층&lt;/a&gt;  == 개요 == &lt;a href=&quot;/noriwiki/index.php?title=Http://http.badssl.com&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Http://http.badssl.com (없는 문서)&quot;&gt;&amp;#039;&amp;#039;&amp;#039;H&amp;#039;&amp;#039;&amp;#039;yper&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;ext &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;ransfer &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;rotocol&lt;/a&gt; 또는 &amp;#039;&amp;#039;&amp;#039;H&amp;#039;&amp;#039;&amp;#039;yper&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;ex&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;rotocol[* &amp;#039;&amp;#039;&amp;#039;H&amp;#039;&amp;#039;&amp;#039;yper&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;ex&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;rotocol로 읽는 사람들이 가끔 있는데, 그렇다고 틀린 것은 아니다.]의 약자. &lt;a href=&quot;/noriwiki/index.php?title=%ED%95%98%EC%9D%B4%ED%8D%BC%ED%85%8D%EC%8A%A4%ED%8A%B8&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;하이퍼텍스트 (없는 문서)&quot;&gt;하이퍼텍스트&lt;/a&gt;를 빠르게 교환하기 위한 &lt;a href=&quot;/noriwiki/index.php?title=%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C&quot; title=&quot;프로토콜&quot;&gt;프로토콜&lt;/a&gt;의 일종으로 즉, HTTP는 &lt;a href=&quot;/noriwiki/index.php?title=%EC%84%9C%EB%B2%84&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;서버 (없는 문서)&quot;&gt;서버&lt;/a&gt;와 &lt;a href=&quot;/noriwiki/index.php?title=%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;클라이언트 (없는 문서)&quot;&gt;클라이언트&lt;/a&gt;의 사이에서 어떻게 메...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[분류:애플리케이션 계층]]&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
[[http://http.badssl.com|&amp;#039;&amp;#039;&amp;#039;H&amp;#039;&amp;#039;&amp;#039;yper&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;ext &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;ransfer &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;rotocol]] 또는 &amp;#039;&amp;#039;&amp;#039;H&amp;#039;&amp;#039;&amp;#039;yper&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;ex&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;rotocol[* &amp;#039;&amp;#039;&amp;#039;H&amp;#039;&amp;#039;&amp;#039;yper&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;ex&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;rotocol로 읽는 사람들이 가끔 있는데, 그렇다고 틀린 것은 아니다.]의 약자. [[하이퍼텍스트]]를 빠르게 교환하기 위한 [[프로토콜]]의 일종으로 즉, HTTP는 [[서버]]와 [[클라이언트]]의 사이에서 어떻게 메시지를 교환할 지를 정해놓은 규칙인 것이다. 80번 [[포트]]를 사용하며 HTTP의 구조는 요청(Request)과 응답(Response)으로 구성되어 있다. 예시를 들자면 &amp;#039;클라이언트가 웹 페이지에서 링크가 걸려있는 텍스트를 클릭(요청)하면 링크를 타고 새로운 페이지로 넘어간다(응답)&amp;#039;. 따라서 우리가 사용하는 [[웹 브라우저]]에서 인터넷 주소 맨 앞에 들어가는 &amp;#039;&amp;#039;&amp;#039;http://&amp;#039;&amp;#039;&amp;#039;는 바로 이 프로토콜을 사용해서 정보를 교환하겠다는 표시인 것이다.HTTP 서버는 클라이언트에 대한 정보를 유지하지 않으므로, HTTP를 비상태 프로토콜 (stateless Protocol)이라고 한다. &lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
1996년에 첫 상용화버전인 HTTP/1.0가 발표되었고, 1999년에 HTTP/1.1, 그리고 2015년 [[HTTP/2]]를 공식으로 발표하였다. 현재 HTTP/1.1을 대부분 사용중이지만 Google계열의 사이트(Google, youtube 등)는 HTTP/2와 HTTP/1.1을 동시에 지원하고 있고, 그 외 해외의 대부분의 Major사이트들(facebook, twitter, yahoo 등)은 적어도 SPDY를 사용하고 있고 점차적으로 HTTP/2로 바꾸는 추세다. 하지만 국내의 Major사이트들(Naver, Daum)은 아직까지도 HTTP/1.1만을 지원하고 있다.&lt;br /&gt;
&lt;br /&gt;
== 비지속 연결과 지속 연결 ==&lt;br /&gt;
=== 비지속 연결 HTTP ===&lt;br /&gt;
# HTTP 클라이언트는 80번 [[포트|포트번호]]를 통해 웹서버에 접속한다.&lt;br /&gt;
# HTTP 클라이언트는 1단계에서 설정된 TCP 연결 소켓을 통해 서버로 HTTP 요청 메시지를 보낸다.&lt;br /&gt;
# HTTP 서버는 1단계에서 설정된 연결 소켓을 통해 요청 메시지를 받는다. 요청된 객체를 추출하여 응답 메시지에 그 객체를 캡슐화 한다. 그리고 메시지를 소켓을 통해 전송한다.&lt;br /&gt;
# HTTP 서버는 클라이언트에게 소켓 종료 요청을 보낸다.&lt;br /&gt;
# HTTP 클라이언트가 응답 매시지를 받으면 TCP 연결이 중단된다. 클라이언트는 HTML파일과 요청된 객체를 끄내어 정보를 추출한다.&lt;br /&gt;
# 클라이언트는 객체의 링크를 클릭하여 윗 단계를 반복한다.&lt;br /&gt;
&lt;br /&gt;
즉 비지속 연결에서는 TCP연결이 다른 객체를 위해 유지되지 않는다. 각 TCP 는 하나의 객체당 하나씩 생성된다. 만약 11개의 객체를 (11개의 png 파일과 같이) 클라이언트가 요구하면 11개의 TCP 연결이 생성된다. &lt;br /&gt;
==== 단점 ====&lt;br /&gt;
# 각 요청 객체에 대한 새로운 연결이 설정되고 유지되어야 한다. 이는 서버에 심한 부하를 준다.&lt;br /&gt;
# 각 객체는 2RTT를 요구한다. TCP 연결에 1, 객체를 요청하고 받는데 1&lt;br /&gt;
&lt;br /&gt;
=== 지속 연결 ===&lt;br /&gt;
HTTP1.1 지속 연결에서는 서버는 TCP연결을 그대로 유지한다. 같은 클라이언트와 서버간의 이후 요청과 응답은 같은 연결을 통해 보내진다. 특히 전체 웹 패이지를 하나의 지속 TCP 연결을 통해 보낼 수 있다. 일반적으로 타임아웃 시간이 지나면 연결을 닫는다. [RFC 7540] 참조&lt;br /&gt;
&lt;br /&gt;
== 매시지 포맷 ==&lt;br /&gt;
[[파일:HTTP Fromat.png|프레임|가운데]]&lt;br /&gt;
&lt;br /&gt;
=== 요청 메시지 ===&lt;br /&gt;
SP: 스페이스, CR:  캐리지 리턴, LF: 라인 피드&lt;br /&gt;
# 요청 라인: GET/POS/HEAD... (SP) URL (SP) Version of HTTP&lt;br /&gt;
# 헤더 라인: 호스트의 브라우저명, 요구사항등등&lt;br /&gt;
# 개체 몸체: GET 방식에서는 비어있고, 주로 POST 방식에서 사용된다. &lt;br /&gt;
==== 예시 ====&lt;br /&gt;
다음은 HTTP 문서에 접근하기 위한 패킷을 [[와이어샤크]]로 분석한 내용이다. &lt;br /&gt;
[[파일:HTTP 패킷 분석.png|400픽셀|프레임없음|오른쪽]] &lt;br /&gt;
# GET으로 단순히 정보만을 요청하고 있으며 요청한 URL 을 나타낸다. HTTP1.1을 사용하고 있다는 것을 보여준다.&lt;br /&gt;
# 호스트는 gongdol.ml&lt;br /&gt;
# 클라이언트의 브라우저 정보&lt;br /&gt;
# 브라우저가 해석가능한 정보 처리 방식&lt;br /&gt;
# 브라우저가 원하는 언어&lt;br /&gt;
# 브라우저가 원하는 인코딩 정보&lt;br /&gt;
# 마지막으로 정보를 받은 URL 위치&lt;br /&gt;
# 지속 연결 / 비지속 연결 종류&lt;br /&gt;
# 쿠키 정보&lt;br /&gt;
&lt;br /&gt;
==== 방식의 종류 ====&lt;br /&gt;
* GET : 클라이언트가 서버에게 URL에 해당하는 자료의 전송을 요청한다.&lt;br /&gt;
* HEAD : GET 요청으로 반환될 데이터 중 헤더 부분에 해당하는 데이터만 요청한다.&lt;br /&gt;
* [[POST]] : 클라이언트가 서버에서 처리할 수 있는 자료를 보낸다. 예를 들어, 게시판에 글을 쓸 때 클라이언트의 문서가 서버로 전송되어야 한다.&lt;br /&gt;
* PUT : 클라이언트가 서버에게 지정한 URL 에 지정한 데이터를 저장할 것을 요청한다.&lt;br /&gt;
* DELETE : 클라이언트가 서버에게 지정한 URL 의 정보를 제거할 것을 요청한다.&lt;br /&gt;
* TRACE : 클라이언트가 서버에게 송신한 요청의 내용을 반환해 줄 것을 요청한다.&lt;br /&gt;
* CONNECT : 클라이언트가 특정 종류의 프록시 서버에게 연결을 요청한다.&lt;br /&gt;
* OPTIONS : 해당 URL 에서 지원하는 요청 메세지의 목록을 요청한다.&lt;br /&gt;
&lt;br /&gt;
=== 응답 메시지 ===&lt;br /&gt;
# 상태 라인: 버전 빌드, HTTP/응답코드, 해당 상태 매시지&lt;br /&gt;
# 헤더 라인: &lt;br /&gt;
* Connection 클라이언트에게 메시지를 보낸 후 TCP 연결을 닫을 것인가. &lt;br /&gt;
* Date: HTTP 응답이 서버에 의해 생성되고 보낸 날짜와 시간. &lt;br /&gt;
* Server: HTTP [[데몬]] 정보&lt;br /&gt;
* Last-Modified: 객체가 마지막으로 새성되거나 수정된 시간. 객체를 캐싱하는데 상요된다.&lt;br /&gt;
* Content-Length: 객체의 바이트 수&lt;br /&gt;
* Content-Type: 개체 몸체 내부의 객체가 어떤 타입인가?&lt;br /&gt;
&lt;br /&gt;
== 쿠키 ==&lt;br /&gt;
[[파일:쿠키.png|프레임없음|가운데|쿠키]]&lt;br /&gt;
# HTTP 응답 메시지 쿠키 헤더 라인&lt;br /&gt;
# HTTP 요청 매시지 쿠키 헤더 라인&lt;br /&gt;
# 사용자의 브라우저에 사용자 종단 시스템과 관리를 지속시키는 쿠키 파일&lt;br /&gt;
# 웹 사이트의 백엔드 데이터 베이스&lt;br /&gt;
&lt;br /&gt;
서버가 쿠키를 클라인어트에게 알려주고, 클라이언트는 요청 메시지에 쿠키 번호를 첨가 함으로써, 서버가 과거의 상태를 기억할 수 있도록 해준다. &lt;br /&gt;
&lt;br /&gt;
== 웹 캐싱 ==&lt;br /&gt;
웹 캐시[Web Cache]는 프록시 서버[Proxy Server]라고도 한다. [[프록시 서버]] 참고&lt;br /&gt;
&lt;br /&gt;
== 보안 ==&lt;br /&gt;
TLS를 통한 보안이 적용된 버전은 [[HTTPS]] 참고.&lt;br /&gt;
&lt;br /&gt;
=== [[HTTP/응답 코드]] ===&lt;br /&gt;
[[HTTP/응답 코드]] 참조. [[https://http.cat/|응답코드별 고양이]]&lt;/div&gt;</summary>
		<author><name>Ahn9807</name></author>
	</entry>
</feed>