티스토리 뷰

반응형

자바의 HTTP 연결에 대한 포스팅.


웹서비스는 기본적으로 다음과 같은 순서로 동작한다.


클라이언트 -> 서버 접속요청(Request) -> 서버 접속 -> 서버 응답(Response)


여기서 HTTP 라는 프로토콜을 간단하게 알아보자면


Hypertext Transport Protocol의 약자로, 웹 문서(HTML,CSS, JS)를 전송할 때 사용하는 규약이다.


클라이언트는 일반적으로 사용하는 웹 브라우저를 뜻한다(IE, Chrome, Firefox 등)


즉, 사용자가 단순히 URL을 입력했을 때 브라우저는 대상 서버로 접속한 뒤 해당 페이지를 다운로드 하여 사용자에게 보여주는 방식이다.


웹문서는 초기에 HTML으로 한정되어 있었지만, 웹 서버들이 다양하게 생기기 시작하면서 포맷 또한 많이 바뀌게 되었다.


JSP, PHP, ASP 등등..


심지어 알수없는 확장자가 될 수도 있다. 예를 들어 네이버에서 사용하는 지식인 페이지의 URL은 http://kin.naver.com/index.nhn 이다.


.nhn은 표준 규약에 없는 확장자 이지만, 네이버의 웹 서버는 .nhn으로 접근했을 때 이를 처리하는 동작을 구현함으로써 사용자에게 페이지를 변환하여 보여줄 수 있다.


HTTP 프로토콜의 구조 Header와 Body로 이루어진다.


먼지연구소에 접속하려면 다음과 같은 헤더를 티스토리 서버로 전송한다.


GET / HTTP/1.1

Host: gompangs.tistory.com

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

Pragma: no-cache

Cache-Control: no-cache


서버가 이를 해석하고 던져주는 응답(Response)는 다음과 같다.


HTTP/1.1 200 OK

Date: Mon, 30 Nov 2015 10:06:51 GMT

Server: Apache

X-UA-Compatible: IE=Edge

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

P3P: CP='ALL DSP COR MON LAW OUR LEG DEL'

Vary: Accept-Encoding

Content-Encoding: gzip

Content-Length: 16622

Keep-Alive: timeout=5, max=99

Connection: Keep-Alive

Content-Type: text/html; charset=utf-8


보다시피 각 필드가 직관적이라 해석에 어려움은 없다.


날짜, 서버, 캐시컨트롤, 컨텐츠의 압축방식, 길이, 타임아웃 시간, 연결방법, 컨텐츠의 타입 등의 정보를 담아 보낸다.


이 때 파란색으로 칠한 HTTP 1.1 200 OK 이란 뜻이 문서를 성공적으로 전송했다는 코드가 된다.


주요 HTTP 코드

200 OK, 성공적으로 전송됨.

300번대 Redirection, 파일이 이동됨.

404 Page Not Found, 파일 존재하지 않음.

500 Server Error, 서버의 문제가 있어서 페이지 표시 못함.



자세한 HTTP 상태 코드에 대한 정보(위키피디아)


브라우저는 이 응답 헤더를 받은 뒤 \r\r <- CR(Carriage Return)이 두번 기입되고 따라오는 응답 본문(Body)를 받게 된다.


Body는 익히 보았던 HTML 문서이다.


<html>

<head>

...

</head>

<body>

...

</body>

</html>


와 같은 구조의 문서를 받게 되며 이를 브라우저가 DOM(Document Object Model)이라는 태그 구조를 파악하여 모니터 화면에 뿌려주게 된다.


각 브라우저들이 DOM을 해석하는 방식이 다르기 때문에 출력되는 양식 또한 각기 다르다.


이러한 출력 양식의 표준을 HTML5, XML 등으로 규정하여 전송하게 된다. (아직까진 크롬이 가장 웹 표준에 가까운 DOM 파싱을 지원한다)


* DOM이란?




HTML DOM의 구조


DOM은 위와 같은 트리구조로 생성/해석되며, 간단하게 말하자면 태그 라고 생각하는게 쉽다.

반응형

'IT 배경지식 > IT용어 및 기술' 카테고리의 다른 글

HTTP(Hypertext Transport Protocol)  (0) 2015.11.30
[IT기술] VCS(Version Control System) 란?  (0) 2015.11.22
댓글
댓글쓰기 폼