"안녕, 아미고!"

"안녕, 빌라보!"

"오늘은 어떤 새로운 소식을 알려줄까요?"

"많은 것들이 있습니다. 하지만 먼저 네트워크와 인터넷 작업에 대해 논의해야 할 것 같습니다. 관심 있으신가요?"

"그래. 은하계 인터넷은 정말 멋져."

"알겠습니다. 하지만 역사부터 시작하겠습니다. 21세기 초의 상황은 이랬습니다..."

"인터넷에 연결된 모든 컴퓨터에는 고유 번호가 있습니다. 이것은 일반적인 4바이트 숫자였습니다. 이를 IP 주소라고 합니다."

"그러나 인간은 기억력이 좋지 않고 2108458776과 같은 것을 기억하는 데 어려움을 겪기 때문에 종종 각 바이트를 별도로 씁니다."

"4바이트 숫자 2108458776을 별도의 바이트로 나누면 125.172.135.24가 됩니다. 각 바이트는 8비트로 구성되며 0에서 255까지의 숫자를 포함할 수 있습니다."

"그럼 번호는 그렇게 쓰는 건가요?"

"네. (인간이) 이렇게 쓰면 4바이트 숫자를 기억하기가 더 쉽습니다."

"공교롭게도, 4바이트만 사용하기로 한 선택은 곧 그들에게 잔인한 속임수를 썼습니다. 인터넷에 연결된 장치의 수가 너무 빨리 증가하여 곧 그 수가 바닥났습니다."

"그들은 어떻게 그 문제를 해결했습니까?"

"그들은 인간이 일반적으로 하는 일을 했습니다."

"그들은 IP 주소에 대한 새로운 표준을 제시했고 이를 자랑스럽게 IPv6라고 명명했습니다."

"4바이트를 사용하여 고유 번호를 형성하는 일반 IP 주소(IPv4라고 함)와 달리 새로운 표준은 16을 사용합니다."

"생각해보면 인간은 보통 숫자(예: 2108458776)에서 10자리를 기억하지 못해서 4부분으로 나누어야 했는데 16바이트로 구성된 숫자를 사용하려고 생각했습니다."

"그래, 가끔 인간은 이상해."

"그래. 인간은 인간이다."

"즉, 그들은 곤경에서 벗어났습니다."

"그들은 숫자를 기억하는 데 지쳐서 단어로 대체하기로 결정했습니다."

"어때요? 예를 들어 주시겠어요?"

"물론, web.mail.com , google.com , new.books.amazon.com , …"

"이런 종류의 이름을 도메인이라고 합니다."

"이 인터넷이 제대로 작동하기 위해 그들은 각 도메인 이름의 IP 주소를 저장하는 DNS(도메인 이름 시스템)라는 특수 테이블을 만들었습니다."

"작동 방식은 다음과 같습니다."

1)  사용자가 브라우저에 주소를 입력합니다(예: web.mail.com ) .

2)  브라우저는 DNS에 액세스하고 도메인 이름을 사용하여 IP 주소를 가져옵니다.

3)  필요한 URL이 포함된 요청이 이 IP 주소로 전송됩니다.

"그건 그리 간단해 보이지 않습니다."

"그러나 이 접근 방식에는 몇 가지 이점이 있습니다."

" 1) 인간은 말로 표현할 수 있는 이름을 기억하기 쉽다."

" 2) 이름 앞에 하위 도메인을 추가하여 도메인 이름을 계층적으로 만들 수 있습니다. Java의 패키지 이름과 완전히 같습니다."

" 3) 웹 서버의 IP 주소를 변경해야 하는 경우 DNS 레코드만 변경하면 모든 것이 이전처럼 작동합니다. 사용자는 새 주소를 기억할 필요가 없습니다."

"DNS는 다음과 같습니다."

도메인 이름 IP 주소
mail.com 128.35.36.189
web.mail.com 145.12.17.13
new.mail.com 192.155.15.3
google.com 92.117.151.100
google.com 193.168.0.1
docs.google.com 217.12.222.1

"말이된다."

"어쨌든 도메인은 컴퓨터의 이름이지만 우리는 컴퓨터가 필요하지 않습니다. 컴퓨터에 있는 것이 필요합니다. 이것이 URL의 목적입니다."

"처음에 URL은 실제로 다른 컴퓨터에 있는 파일에 대한 링크였습니다. 예를 들면 다음과 같습니다."

http://info.codegym.cc/user/info/profile.html _ _ _ _
설명
http  는 클라이언트-서버 통신을 위한 프로토콜입니다.
info.codegym.cc  는 컴퓨터의 도메인 이름입니다.
user/info/profile.html  은 컴퓨터에 있는 파일의 경로입니다.

"네트워크 개발 초기에 웹 서버는 URL을 사용하여 어딘가에 저장하고 있는 파일을 제공할 수 있었습니다. URL은 실제로 파일에 대한 전역 경로(컴퓨터 이름 + 경로)였습니다."

"나중에 웹 서버가 스스로 파일을 생성하기 시작했을 때 URL이 약간 변경되어 웹 서버에 대한 요청이 되었습니다. 요청 매개변수도 추가되었습니다."

"오늘날 URL 끝에 파일 확장자가 표시되는 경우는 드뭅니다. "최신 URL은 매개변수가 있는 고유한 링크일 뿐입니다. 전역 파일 경로라기보다는 메서드 호출에 더 가깝습니다."

"클래식 최신 URL은 다음과 같습니다."

URL 구문 분석
http://codegym.cc/alpha/api/contacts ? _ _ _ _ 사용자 ID=13&필터=없음&페이지=3
URL 부분에 대한 설명
codegym.cc  는 인터넷에서 컴퓨터의 고유한 이름(주소)인 도메인 이름입니다.
http  는 클라이언트-서버 통신을 위한 프로토콜입니다.
alpha/api/contacts는  웹 서버 요청 또는 서버의 웹 페이지 요청입니다.
userid=13 & filter=none & page=3은  요청 매개변수가 포함된 문자열입니다.

"예, 기억합니다. 최근에 URL에 대해 말씀해 주셨습니다."

"그리고 항구에 대해서도요. 당신은 아파트 건물의 예를 사용했습니다."

"'http'가 무엇인지 알려주는 것이 좋을 것 같습니다. 여기저기서 '프로토콜'이 쓰여 있는 것을 볼 수 있지만 그게 무엇인지 잘 모르겠습니다."

"좋아. 더 이상 고민하지 않고 말할게."

IP 주소, 도메인, URL - 1

" HTTP는 Hyper T ext T ransport Protocol 약자로 하이퍼텍스트 를 전송하기 위한 것입니다."

"하이퍼텍스트가 무엇인가요?"

"HTML입니다."

"대략적으로 말해서 프로토콜은 통신을 위한 일련의 규칙입니다. 프로토콜은 웹 서버에 보낼 수 있는 요청과 형식, 웹 서버가 응답하는 방법을 설명합니다."

"요컨대 상황은 이렇습니다. 일반 텍스트 파일 또는 원하는 경우 대량의 텍스트가 클라이언트와 서버 간에 전송됩니다. "

" 서버에 요청이 들어오고 서버는 각 요청에 대한 응답을 제공합니다 ."

"다음은 이러한 요청 및 응답의 예입니다."

요구
GET alpha/api/contacts HTTP/1.1
Host: codegym.cc
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
설명
GET – request subtype
alpha/api/contacts – request to the web server
HTTP/1.1 – protocol version – HTTP/1.1
Host: codegym.cc – domain name
User-Agent: Mozilla/5… – unique browser name
Accept: text/html – requested document type: HTML
Connection: close – close the server connection after processing the request.

"첫 번째 줄은 실제 요청입니다. 다음은 '헤더 필드'라고도 하는 추가 요청 매개변수입니다."

"다음은 응답의 예입니다."

응답
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: en
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
<html><body><a href="http://ample.com/about.html#contacts">Click here</a></body></html>
HTTP/1.1 200 OK - «200 OK» means everything is okay.
Date: Wed, 11 Feb 2009 - Date on which the request was processed
Server: Apache - Name of the web server
X-Powered-By: PHP - The server uses PHP
Last-Modified: Wed, 11 Feb 2009 - The time of the last update of the requested file
Content-Language: en - The language of the file
Content-Type: text/html; charset=utf-8 – This is an HTML-file with UTF-8 encoding
Content-Length: 1234 - The response is 1234 bytes long
Connection: close - The connection will be closed after the request is handled
<html><body><a href="http://ample - The HTML file itself.

"두 가지 사항에 주의를 기울이고 싶습니다."

"첫째, 무엇을 요청하든 서버에 대한 파일 요청처럼 보입니다. 파일이 서버에 있는지 또는 서버가 요청에 대한 응답으로 파일을 생성하는지 여부는 중요하지 않습니다."

"둘째, 파일 자체가 HTTP 응답의 일부로 전송 됩니다 . 즉, 서버 응답의 시작 부분에 추가 데이터가 표시되고 제공되는 파일의 본문이 표시됩니다. "

"재미있다! 내가 모든 것을 이해했는지 확신이 서지 않는다. 나중에 다시 읽을 것이다."

"아, 또 다른 작지만 흥미로운 것, 즉 쿠키에 대해 말씀드리고 싶습니다."

"그게 뭐야?"

"HTTP 프로토콜에 따르면 쿠키는 서버가 클라이언트에 저장하기 위해 클라이언트에 보내는 작은 정보입니다. 그리고 후속 요청의 일부로 서버로 다시 전송됩니다. "

"그게 무슨 소용이야?"

"사용자가 웹 사이트의 홈 페이지에 로그인한다고 가정합니다. 서버는 이 사용자를 위해 서버에 세션 개체를 생성하고 고유한 세션 번호가 클라이언트에 쿠키로 전송됩니다. 클라이언트에서 이 세션 번호는 다른 쿠키와 함께 서버로 다시 전송됩니다. 이는 서버가 새 요청을 보낸 사용자를 인식할 수 있음을 의미합니다."

"얼마나 흥미로운가!"

"네. 자신의 서블릿을 작성할 때 이 주제를 자세히 살펴보겠습니다. 하지만 지금은 잠시 쉬도록 합시다."

"너가 말하는거 아무거나."