
보통 인터넷이라하면 www를 생각한다. 그 만큼 많은 사람들이 웹 브라우저를 사용한다.
물리적인 하나의 컴퓨터에는 여러개의 서버가 동작할 수 있다. 각각의 서버들은 포트라는 값으로 구분되어 동작한다.
| 이름 | 프로토콜 | 포트 | 기능 |
|---|---|---|---|
| WWW | HTTP | 80 | 웹서비스 |
| SMTP/POP3/IMAP | 25/110/114 | 이메일 서비스 | |
| FTP | FTP | 21 | 파일 전송 서비스 |
| DNS | TCP/UDP | 53 | 네임 서비스 |
| NEWS | NNTP | 119 | 인터넷 뉴스 서비스 |
인터넷은 웹에서 서로 통신하기 위해 HTTP를 사용한다.
HTTP는 어떤 종류의 데이터도 전송할 수 있도록 설계되어 있다.
예를 들어 이미지, 동영상, 텍스트 등 종류를 가리지 않고 전송 가능하다.

클라이언트가 요청을 서버에 보내면 서버는 클라이언트에게 응답을 보낸다. 여기서 클라이언트가 "먼저" 요청을 보낸다.

URL은 위 사진과 같이 프로토콜의 종류://자원이 있는 서버의 IP주소 or 도메인 주소 or 포트번호/자원의 위치/웹페이지로 되어 있다.
물리적인 서버를 찾기 위해 반드시 필요한 것은 IP주소나 도메인 주소이다. 이렇게 찾은 물리적인 서버 안에 존재하는 소프트웨어 서버를 찾기 위해서는 포트값이 필요하다.
여기서 IP주소는 집주소라 생각하고 포트를 집안에 있는 방들이라 생각하면 된다.
http 서버는 기본 포트 값이 80번이다.
웹이 동작하는 부분을 살펴보면 반드시 클라이언트가 먼저 원하는 서버에 접속을 해야한다. 그리고 클라이언트는 서버에게 요청을 하게 되는데 서버는 아무거나 주지 않고 반드시 클라이언트가 접속해서 요청을 했을 때 요청에 따른 응답 결과를 다시 클라이언트한테 응답해주는 과정을 거치게 된다.
이 응답이 끝나고 나면 위에서 말한 stateless와 같이 서버와 클라이언트의 연결은 끊기는 상태로 유지가 된다.
요청 헤더 부분의 첫번째 줄을 보면 GET이 보이는데 이 부분이 요청 메서드이다. 이 다음에 나오는 부분을 요청 URI라 하는데 요청하는 자원의 위치를 명시해주는 부분이다.
마지막으로 나오는 부분이 http 프로토콜의 버전으로 웹 브라우저가 사용하는 프로토콜의 버전을 명시해주는 부분이라 생각하면 된다.
요청 메서드 종류
GET : 정보를 요청하기 위해 사용 (SELECT)
POST : 정보를 밀어넣기 위해 사용 (INSERT)
PUT : 정보를 업데이트하기 위해 사용 (UPDATE)
DELETE : 정보를 삭제하기 위해 사용 (DELETE)
HEAD : (HTTP)헤더 정보만 요청, 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해 사용
OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청
TRACE : 클라이언트의 요청을 그대로 반환, echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용
요청 바디에는 아무 것도 없는 것을 볼 수 있는데 실제 GET이라는 방식은 요청할 때 가지고 가야하는 자원들도 모두 URI에 붙여서 가지고 가기 때문에 요청 바디 부분이 비어있는 것이다.
바디 요소는 요청 메서드가 POST나 PUT을 사용할 때 들어오게 된다.
응답 데이터 포맷도 요청 헤더 부분과 같이 헤더 부분, 빈 줄 부분, 응답 바디 부분으
요청되는 데이터는 정해진 규칙이 존재하는데 이것을 요청 데이터 포맷이라 한다. 웹 브라우저는 요청 메시지를 갖는데 여기에 헤더부분, 빈 줄 부분이 요청 바디 부분 이렇게 세 부분으로 나누어 진다. 첫 줄에는 반드시 응답 HTTP 프로토콜의 버전 그 다음은 응답 코드 그리고 응답 메시지 등이 나올 수 있다. 나머지 헤더부분에는 날짜, 웹 서버 이름/버전, 콘텐츠 타임, 캐시 제어 방식, 콘텐츠 길이 등의 값이 나오게 된다.
응답 바디는 실제 응답 리소스 데이터가 나오는 부분이다.
참고