보통 인터넷이라하면 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 프로토콜의 버전 그 다음은 응답 코드 그리고 응답 메시지 등이 나올 수 있다. 나머지 헤더
부분에는 날짜, 웹 서버 이름/버전, 콘텐츠 타임, 캐시 제어 방식, 콘텐츠 길이 등의 값이 나오게 된다.
응답 바디
는 실제 응답 리소스 데이터가 나오는 부분이다.
참고