반응형
Web and HTTP
Web
- 웹 페이지는 HTML file + referenced object 로 이루어져 있는데, 이 때 각 object들은 URL을 통해 reference 되는 구조이다.
- 여기서 URL이란, Uniform Resource Locator의 약자로 아래 그림과 같은 구조로 이루어져 있다.
HTTP(Hyper Text Transfer Protocol)
- HTTP는 Application layer의 여러 프로토콜 중 하나로 주로 웹에서 많이 쓰이는 프로토콜이다.
- HTTP 프로토콜을 통해 우리는 웹사이트에서 다양한 활동을 할 수 있다.
(1) HTTP의 특징
-
- HTTP는 TCP와 짝지어져 있다.
- 처음에 TCP가 연결을 맺으면 이후 HTTP 메시지가 교환되는 구조이다.
- TCP를 통해 통신을 하므로 신뢰성 있는 통신을 할 수 있다.
-
- HTTP는 'stateless' 하다.
- 클라이언트의 상태나 과거 연결했던 기록 등을 신경쓰지 않고, 그냥 그 순간 요구하는 것만을 처리한다.
- 이러한 특징 덕분에 간단하고 빠르게 프로토콜이 동작할 수 있다.
(2) HTTP 연결 종류
HTTP는 어떻게 연결을 하느냐에 따라서 다음과 같이 분류할 수 있다.
-
- non-persistent HTTP
- HTTP의 초기 모델로, 한번의 연결에 1개의 컨텐츠를 처리하는 형식이다.
-
- persistent HTTP
- 한 번 연결하는 동안에 컨텐츠를 계속해서 교환하는 형식이다.
- TCP로 처음 연결하는데 RTT(Round Trip Time)이 너무 오래 걸려서 고안된 연결 방식이다.
- RTT는 한 패킷이 end to end로 one-round-trip 하는데(다시 되돌아오는데) 소요되는 delay 시간을 나타낸다.
(3) HTTP request/response messages
HTTP 프로토콜에 사용되는 메시지들은 ASCII로 작성되어 일반 사용자들이 읽을 수 있는 형태이다. HTTP 프로토콜 메세지는 크게 HTTP request와 HTTP response로 구분할 수 있다.
HTTP request message
이름 그대로 클라이언트가 서버에게 컨텐츠를 요구할 때 사용되는 메시지로, 아래와 같은 구조로 되어 있다.
-
- request line
- HTTP request 메시지의 가장 첫번째 줄에 위치한다.
- GET, POST, PUT, DELETE와 같은 메소드 + 요청하는 object + 프로토콜 버전 정보 등으로 이루어져 있다.
-
- header line
- 주요 내용들을 담고 있다.
- 서버 호스트 주소, 클라이언트 사용자 정보, 클라이언트가 지원하는 언어 / 형식 / 파일 등을 나타낸다.
참고로 메소드 중 POST 라는 메소드는 클라이언트가 서버에게 변화를 알려줄 때 사용한다. 그래서 인스타그램에 게시글을 올리는 등 사용자가 웹페이지에 어떤 변화를 주면 POST 메소드를 이용한다.
같은 맥락으로 사용자가 구글 검색을 할때, 사용자가 입력한 검색어를 POST 메소드를 통해 서버에게 넘겨주는게 일반적이다. 하지만, POST 메소드보다 GET 메소드가 더 간단하므로, GET 메소드에 검색어를 parameter로 넘겨주는 형태로 이용하기도 한다.
HTTP response message
서버가 클라이언트에게 보낼 때 사용되는 메시지로, 아래와 같은 구조로 되어 있다.
참고 자료
- Computer Networking: A Top Down Approach 6th edition - Jim Kurose, Keith Ross Addison-Wesley March 2012
- https://ddongwon.tistory.com/m/72
- https://inyongs.tistory.com/m/57
반응형
'Computer Science > Computer Network' 카테고리의 다른 글
[네트워크] DNS (Domain Name System, 도메인 네임 시스템) (0) | 2022.10.18 |
---|---|
[네트워크] Cookies(쿠키), Web caches(웹 캐시), Proxy server(프록시 서버) (0) | 2022.10.17 |
[네트워크 애플리케이션 구조] client-server, P2P (0) | 2022.10.17 |
[네트워크] IP 주소 vs 포트 번호 - Addressing processes (0) | 2022.10.17 |
[네트워크] TCP, UDP - 인터넷 전송 프로토콜이 제공하는 서비스 (0) | 2022.10.17 |