HTTP,超文本传输协定(HyperText Transfer Protocol),是一个Client端(使用者)和服务器端(网站)之间请求和应答的标准。
使用URL要求 Web Page 的物件位址
流程:
(1)Server 开一个 TCP Port 80
(2)由HTTP Client端建立Socket 与远方的 Server指定埠(预设是80埠)进行TCP连线。
(3)Client端发出要资料的请求(request(containing URL)),HTTP服务器则在那个埠监听Client端的请求。一旦收到请求,服务器会向Client端回覆(response)并返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的Web Page 里面的档案、错误讯息、或者其它讯息,之後在Client 的浏览器里做美化与呈现。
(4)交换完资料,TCP 连线 closed
/*口诀:连,传,关/
=> Socket 是资源共享的,不会一直占用,因此会有 Set up 阶段 与 释放阶段。
就是Server 不用记得以前服务过谁。举一个简单的情境:透过 HTTP 请求成功登入服务後,想使用服务。无状态的特性会让服务器无法知道「使用服务的请求」跟「刚刚已成功登入服务的请求」是同一个使用者,也因此无状态在身分验证上会出现较多问题。
如果是状态化(state)就会比较复杂:例如收信与送信的app,他可能有帐密登入,记得你已经读过的信等,比较复杂。
at most one object
sent over a single TCP
connection
在HTTP1.0的时候使用多次连线(Non Persistent),TCP连线在每一次请求/回应对之後会关闭,就一直开开关关(有10个Object就重新连线10次)。
如图:
multiple objects can
be sent over single
TCP connection
between client, server
现在使用的HTTP1.1使用 持续连线(Persistent),一个连接可以重复在多个请求/回应使用,大大减少等待时间。
如图:
一来一往经过的时间
time for a
small packet to travel from
client to server and back
Non Persistent 每次传一个物件都要两个RTT(1.要求Set up 与 2.资料往返)
参见:
超文本传输协议(HTTP)是什麽?
简介 HTTP 协定
wikipedia HTTP
<<: 追求JS小姊姊系列 Day30 -- 所以姊姊追到哪了?
>>: Day30 - 使用 Rails Generator 快速实作卡米狗学说话
本篇会有不少冷门范例。 其实我觉得很奇妙,就是我老是踩到一些超冷门连 Google 都找不太到的雷...
自动化 什麽东西可以自动化?对我而言只要可以列出SOP的事情,都可以实现自动化。 价值 一致性 当不...
今天算是主菜⋯⋯可惜还剩一点尾巴,明天才能读完全本。 不过实际在读的时候,要参照很多的案例,把所有的...
Purpose:运用’回呼函数Callback’,列举(筛选)子目录下符合档案 Enviro:Del...
介绍div及span容器标签使用方式及注意事项 浅谈div区块元素及span行内元素 <di...