webService.Communication.url

웹 서비스와 통신하는 방법

by jeromeNa

인터넷은 ‘노드'와 ‘노드'가 네트워크로 연결된 공간이다. 이 ‘노드’에 IP 주소가 있으면 ‘host’라고 부른다. ‘host’라는 건 ‘집주인', ‘운영자'라는 의미를 가지고 있다. 쇼핑 호스트가 대표적인 예가 될 것 같다.


‘host’는 서비스 제공을 진행하는 것으로, 쇼핑 호스트는 방송으로 상품을 소개하고 판매를 진행한다. 마찬가지로 인터넷에서 서비스를 진행하고 제공하는 컴퓨터를 ‘host’라고 한다. 서비스를 제공하는 컴퓨터는 ‘서버'라고 한다.


모든 ‘서버'는 ‘host’이지만, 모든 ‘host’는 ‘서버'가 아니다.


예를 들어 친구끼리 파일을 주고받거나, 내 컴퓨터에 원격 접속해서 컴퓨터를 고쳐주는 것은 서비스를 제공하는 별도의 컴퓨터(서버)가 필요 없이 바로 내 컴퓨터와 친구 컴퓨터가 연결된다. 이 경우에도 내 컴퓨터와 친구 컴퓨터는 ‘host’라고 한다. 웹 호스팅이라는 단어는 많이 들어봤을 듯하다. 웹 호스팅은 웹에 서비스를 할 수 있도록 서버의 일부 자원을 임대해 운영해 주는 서비스를 말한다.




호스트 서버가 있으면 웹 서비스를 할 수 있는 관문은 마련되었다. 이제 사용자가 웹 브라우저에서 도메인이나 IP주소로 접속하게 되면 웹브라우저는 HTTP-HyperText Transfer Protocol 통신으로 호스트 서버에 요청(Request) 하게 된다. Request 받은 서버는 처음에 무엇을 줘야 할지 미리 정해진 html이 있다면 해당 html 파일로 응답(Response) 한다.


요청을 의미하는 Request와 응답을 의미하는 Response는 상당히 자주 쓰이면 중요한 개념이다. 모든 사용자와 서버 사이에는 요청 Request 하고 응답 Response 한다.


원하는 요청을 해야지 원하는 답을 준다.
요청이 없으면 서버는 당연히 답을 주지 않는다.


우리가 흔히 ‘상식적으로 이건 이래야 하는 거 아냐?’ 같은 자동적으로 내 생각에 내가 원하는 답을 주기를 바라지만, 컴퓨터는 ‘인간의 상식'이 없다. 처음 개발하시는 분들이 의외로 굉장히 많이 간과하는 부분이다. 요청을 하지 않고 응답만 기다리거나, 원하는 요청을 하지 않고 원하는 답이 안 나오면, 컴퓨터가 이상하다고 컴퓨터 탓을 한다. 이런 것에 상당히 많은 분들이 시간을 허비한다.


원하는 요청(Request)을 해야 원하는 답(Response)을 얻을 수 있다.



어쨌건, 웹 브라우저는 HTTP 통신으로 서버에 Request 하고 서버는 html로 Response 한다. 웹 브라우저는 Response 받은 html을 분석하여 화면에 보여준다. html은 HyperText Markup Language로 문서 간 이동이 가능하도록 태그(Tag)로 둘러싼(Markup) 구조화된 언어로 작성된 문서이다. 여기에서 태그(Tag)는 간단히 말해, 워드 문서의 스타일 같은 형태라고 보면 된다. 제목 스타일은 굵고 크게 하거나, 목록 스타일은 앞이나, 숫자들 달거나, 글에 밑줄이나 색상을 다르게 하거나 하는 것을 말한다. 웹브라우저는 이런 태그(Tag)를 분석하여 워드 문서처럼 화면에 보여준다.




웹 브라우저에 사이트를 접속하기 위해 도메인 주소 www.dodorida.com과 같은 주소만 입력하지만, 웹 브라우저는 도메인 주소 앞에 http://라는 것을 추가하여 보낸다. 이런 것을 스킴(Scheme)이라고 부른다. 스킴은 ‘계획', ‘설계'라는 의미를 가지고 있다.


http로 설계된 도메인을 접속하라는 의미로 해석될 수 있다. http://www.dodorida.com은 http로 설계된 www.dodorida.com 도메인에 접속하라는 의미이고, ftp://www.dodorida.com 이면 ftp로 설계된 www.dodorida.com으로 접속하라는 의미다. 다시 말해 하나의 도메인에 여러 개의 인터넷 서비스를 할 수 있다는 의미도 된다. 하지만, www.dodorida.com 서버가 http 서비스로 설정되어 있으면 ftp 서비스는 찾을 수 없다는 오류를 응답한다.




어떻게 하면 하나의 도메인 또는 IP 주소에 여러 개의 서비스가 가능하게 할까 고민하던 중 Port라는 개념을 도입한다. Port는 ‘항구'라는 의미를 가지고 있다. 항구는 배가 들어왔다 나가는 곳이고, 중세에는 해외에서 바다를 통해 들어오는 유일한 통로였다. 하나의 서버에서도 여러 개의 서비스가 가능하도록 여러 개의 항구 번호를 만들어 각 서비스에 맞게 열었다. 흔히 www.dodorida.com으로 접속하면 기본으로 약속된 80이라는 port로 접속하게 된다. 80은 http 서비스가 가능한 모든 서버의 공통 포트이다.


각 포트마다 목적이 다르기 때문에 특정인만 들어오도록 close 할 수 있고, 모든 사람이 다 접속할 수 있도록 open 할 수 있다. 기본 80 포트는 오픈된 http 포트이다.


웹 브라우저로 www.dodorida.com 만 입력하지만, 웹 브라우저는 http://www.dodorida.com:80으로 서버에 요청을 하게 된다.


정리하면 웹 서버에 접속하기 위한 전체 주소는 ‘스킴://도메인:포트’로 정의된다. 이것을 URL Uniform Resource Locator이라고 부른다. ‘통합 자원 위치 지정자'라고 해석될 수 있다. 좀 더 확장된 개념으로 URI Uniform Resource Identifier ‘통합 자원 식별자'가 있다. 간단히 말해서 url은 http://www.dodorida.com/aaa.pdf라고 하면 www.dodorida.com서버의 aaa.pdf 파일 위치를 말하는 거라면 uri는 http://www.dodorida.com/aaa/b처럼 파일 자원의 위치가 아닌 aaa/b라는 고유 식별자로 접속하면 식별자에 해당하는 서비스를 제공한다는 의미이다.





keyword