图解HTTP读书笔记(没搞定)

来源:互联网 发布:查看php安装目录 编辑:程序博客网 时间:2024/05/17 23:27

<图解HTTP> 是一本非常好的书,非常通俗易懂,并且有很多图画,真的很好。


HTTP(1)

Web 浏览器地址栏中指定的 URL,Web 浏览器从 Web 服务器端获取文件资源等信息,从而显示出 Web 页面。

通过发送请求获取服务器资源的 web 浏览器等,都是客户端。

TCP/IP 协议族按层次分别分为以下 4 层:应用层,传输层,网络层和数据链路层


——————————————————————————————————————(网络分层模型)
TCP/IP协议:如何探测到通信目标,使用哪种语言进行通信

应用层:向用户提供应用服务时通信的活动(FTP DNS HTTP)

传输层:数据传输(TCP UDP)

网络层:IP(MAC)

数据链路层:(网络接口层)

举例说明:
首先作为发送端的客户端在应用层(HTTP协议)发出一个想看某个 Web 页面的 HTTP 请求。
接着,为了传输方便,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。

在网络层(IP协议),增加作为通信目的地的 MAC 地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。

接受端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP 请求。

———————————————————————————————————————(网络分层模型)



——————————————————————————————————————(可靠性传输原理)

HTTP(2)

1.4.2 确保可靠性的TCP协议
按层次分,TCP位于传输层,提供可靠的字节流服务。
所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。

为了准确无误地将数据送达目标处,TCP协议采用了三次握手three-way handshaking)策略。用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。

握手过程中使用了TCP的标志(flagSYNsynchronize) 和ACKacknowledgement)。发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表握手结束。若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端。
HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。

——————————————————————————————————————(可靠性传输原理)


————————————————————————————————————(HTTP)

HTTP(3)

(31-32)

下面则是从客户端发送给某个HTTP服务器端的请求报文中的内容
GET /index.htm HTTP/1.1
Host: hackr.jp


起始行开头的GET表示请求访问服务器的类型,称为方法
(method)。随后的字符串 /index.htm 指明了请求访问的资源对象,
也叫做请求 URI(request-URI)。最后的 HTTP/1.1,即 HTTP 的版本
号,用来提示客户端使用的 HTTP 协议功能。

综合来看,这段请求内容的意思是:请求访问某台 HTTP 服务器上的
/index.htm 页面资源。

请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段
和内容实体构成的。

接收到请求的服务器,会将请求内容的处理结果以响应的形式返
回。

HTTP/1.1 200 OK
Date: Tue, 10 Jul 2012 06:50:15 GMT
Content-Length: 362
Content-Type: text/html
<html>

在起始行开头的HTTP/1.1表示服务器对应的HTTP版本。紧挨着的200 OK表示请求的处理结果的状态码(status code)和原因短语(reason-phrase)。下一行显示了创建响应的日期时间,是首部字段(header field)内的一个属性。


接着以一空行分隔,之后的内容称为资源实体的主体(entitybody)。


响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。稍后我们会对这些内容进行详细说明。


HTTP(4)

(35-40)

GET

POST

PUT


HTTP(5)

(48-50)
请求报文和相应报文的结构


(61-68)
状态码告知从服务器端返回的请求结果


(71-74)


(79-85)HTTP 报文首部


HTTP(6)

TCP 采用了三次握手策略。用 TCP 协议把数据包送出去后, TCP回向对方确认是否成功送达

DNS提供域名到 IP 地址之间的解析服务。DNS 协议提供通过域名查找 IP地址,或逆向


请求访问文本或图像等资源的一段称为客户端,而提供资源相应的一段称为服务器端


客户端发送的内容:
    GET / index.htm HTTP/1.1
    Host: hackr.jp

意思是:请求访问某台HTTP服务器上的 /index.htm 页面资源

HTTP 方法:
GET:获取资源
POST:传输实体主体
PUT:传输文件
HEAD:获得报文首部
DELETE:删除文件


持久连接

使用 Cookie 的状态管理


状态吗告知从服务器端返回的请求结果

200 OK 的相应结果表明请求被正常处理了

通信数据转发程序:代理,网关,隧道。



链接:

(1) http://www.cnblogs.com/vamei/archive/2012/11/27/2790065.html

————————————————————————————————————————(HTTP)



三次握手的过程是什么?

为什么需要三次握手,而不是两次握手?


网线属于物理层,网卡属于数据链路层,路由器属于网络层。


应用层:



Socket【套接字】:我们需要一个接口来建立起应用进程和底层协议的桥梁,叫做 API(应用编程接口)



传输层:

提供的是应用进程之间的逻辑通行进程。

协议就是 TCP 和 UDP


TCP 是一个出色的协议,提供了很多丰富的功能,它是一个点到点的,也就是端口到端口的协议,是一个可靠的,按序字节流的协议,面向连接的协议。


TCP 的报文头


TCP 的 3 次握手,4 次挥手,挥手就是断开连接的过程



不是很懂的有:

(1)TCP/IP 协议

(2)Socket编程

(3)写一个 web服务器


https://zhuanlan.zhihu.com/p/24001696


https://hit-alibaba.github.io/interview/basic/network/HTTP.html


https://github.com/woai30231/http

原创粉丝点击