Web and HTTP
웹페이지는 객체들로 구성이 되며 객체는 단일 URL로 지정할 수 있는 하나의 파일입니다. 이는 HTML파일, JPEG파일, Java applet, 오디오 파일 등이 있습니다.
웹페이지는 기본 HTML파일과 URL에 의해 주소 지정되는 여러 개의 참조 객체들로 구성되어 있습니다.
http://www.someschool.edu/someDept/pic.gif
프로토콜 / 호스트 네임 / 파일 path
HTTP : hypertext transfer protocol
이는 웹의 응용 계층 프로토콜로 클라이언트/서버 모델입니다. 클라이언트는 브라우저에 해당합니다. 서버는 클라이언트 요청에 따라서 해당하는 객체를 전달해주는 기능을 합니다.
http 프로토콜은 pc에서 동작하는 프로토콜을 보내면 서버는 http로 response 해줍니다.
TCP 사용
신뢰성을 요구하는 프로토콜을 필요로 하기 떄문에 TCP를 씁니다.
- 클라이언트가 TCP 80 커넥션 요구
- 서버가 accept(TCP connect 만들어짐)
- 연결 설정되면 HTTP 메시지 서버에 보냄 서버는 응답
- TCP 연결 closed
HTTP는 stateless 즉 형태를 가지지 않는 프로토콜입니다.
서버는 과거 어떤 요청도 유지하지 않습니다.
프로토콜 중에서 상태를 가지는 프로토콜도 있지만 이는 훨씬 더 복잡합니다. 이는 과거 히스토리를 기억해야 하는 부분이 필요하고 서버와 클라이언트가 동기화를 해야 하기 때문입니다.
HTTP 연결
비지속(Nonpersistent)HTTP
- 하나의 객체를 주고받으면 연결 closed
- 여러개의 연결을 하고 싶으면 여러개의 연결 만들어야 합니다.
- HTTP1.0이 가지고 있느 default connection
지속(Persistent)HTTP
- 하나의 connection에 여러개의 객체를 전달 가능
- HTTP 1.1 에서 default connection
비지속(Nonpersistent)HTTP 응답시간 모델링
RTT(Rount Trip Time)
클라이언트가 서버쪽으로 아주 작은 패킷을 하나 보냈을 때 해당 패킷이 서버에 도착해서 다시 클라이언트로 되돌아올 때의 시간 클라이언트가 서버로 돌아올 때 다시 클라이언트로 되돌아보낼 떄 시간으로 전파지연, 큐잉지연, 처리지연 등을 포함합니다.
HTTP response time
TCP 연결 초기화를 위해 하나의 RTT를 가지며 HTTP request와 HTTP response를 위해 하나의 RTT입니다.
HTTP의 nonpersistent에서 파일이 전송되는 시간은 2RTT + file transmission time입니다. 이것이 nonpersistent의 응답시간입니다.
따라서 이 비지속 HTTP의 단점은
- 객체당 2개의 RTT를 필요
- OS가 각 TCP연결 설정을 해야 하고 호스트 자원을 할당해야 합니다.
- 이는 수많은 클라이언트로부터 동시에 요청을 받는 웹서버에 심각한 부담을 줍니다.
지속(Persistent)HTTP
- 커넥션이 끊기지 않고 계속해서 연결이 유지되는 것
- 동일한 클라이언트/서버간의 이후 요청과 응답은 같은 연결을 통해 전송됨
- 서버는 연결이 일정기간동안 사용되지 않으면 연결을 닫음
지속 HTTP의 세분과
파이프라인을 지원하는 지속 HTTP
- 클라이언트가 이전 요청에 대한 응답을 수신한 후에 새로운 요청 보냄
- 각 참조된 객체에 대해 하나의 RTT
파이프라인을 지원하지 않는 지속 HTTP
- HTTP/1.1의 기본 모드
- 클라이언트는 참조를 만나자마자 요청을 발생
- 모든 요청들이 연속적으로 보내지고 응답들이 연속적으로 보낻진다면, 모든 참조 객체에 단지 하나의 RTT만 필요
HTTP 메세지
Request
- ASCII
Response
UPLOADING form input
POST method
사용자가 입력하는 값이 entity body부분에 사용자 입력이 포함되어서 서버에 전달되는 방식입니다.
GET method
검색을 하기 위해서 키워드를 입력했을 때 서버로 전달되는 과정에서 get 방식이면 ~~~~?monkey&banana 같이 url 뒷부분에 사용자가 입력한 값이 전달되는 것이 get 방식이라고 얘기합니다.
HTTP1.0
- GET
- POST
- HEAD
HTTP 1.1
- GET, POST, HEAD
- PUT
- DELETE
HTTP response message
서버가 클라이언트에 응답하는 것으로 status line이 나타나고 HTTP/1.1 200 ok 이런 식으로 나타납니다. 이는 정상적으로 처리가 되었음을 의미합니다.
이런식으로 구분이 되어 있습니다.
HTTP 메세지 표현해보기
Telnet
이 다음 request메세지를 입력하면 됩니다. 이것이 화면상에는 보이지는 않아서 정확하게 입력하는 것이 중요한데요. 요청하는 객체 url, 포로토콜 버전, 서버주소 입력 등등을 하면 request body부분의 공백은 request message가 완성이 되었습니다.
'IT 프로그래밍 > 컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터네트워크] part3-1 이메일 포맷 (2) | 2024.10.06 |
---|---|
[컴퓨터네트워크] part2.4 state user (0) | 2024.10.06 |
[컴퓨터네트워크] part2 -2장 응용 계층 프로토콜 (0) | 2024.10.06 |
[컴퓨터네트워크] 2강 part1 응용계층 프로토콜 (0) | 2024.10.06 |
[컴퓨터네트워크] part 3 -2 공격받는 네트워크 (2) | 2024.10.06 |