读书笔记---<<图解HTTP>>(一)

一、了解Web及网络基础

1. 网络基础TCP/IP

通常使用的网络包括互联网都是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集。

1.1 TCP/IP协议族

读书笔记---<<图解HTTP>>(一)

像这样吧与互联网关联的协议集合起来的总称为TCP/IP,这只是一种说法,还有其他的几种说法,比如TCP/IP指TCP和IP协议等等,这里就不深究了。

1.2 TCP/IP分层管理

记得大学的时候学的是OSI七层模型,在这本书上讲的是TCP/IP四层模型:应用层、传输层、网络层和数据链路层。

应用层

应用层决定了向用户提供应用服务时通信的活动。

FTP和DNS服务就是其中的两类,HTTP也属于该层。

传输层

传输层对上层应用层,提供网络连接中两台计算机之间的数据传输。

传输层有两个性质不同的协议:TCP和UDP

网络层

网络层用来处理网络上流动的数据包,数据包是网络传输的最小数据单位,该层规定了通过怎样的路径(传输路线)到达对方计算机,并把数据包传递给对方。

链路层

用来处理连接网络的硬件部分。

1.3 TCP/IP通信传输流

读书笔记---<<图解HTTP>>(一)

发送端从应用层往下走,接收端则往应用层往上走。

流程:发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的请求。

为了传输方便,传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在每个报文上打上标记序号及端口号后转发给网络层。

网络层(IP协议)增加作为通信目的地的MAC地址后转发给链路层。

接收端的服务器在链路层接受到数据,按序往上层发送,一直到应用层。

2. 与HTTP关系密切的协议:IP,TCP和DNS

2.1 负责传输的IP协议

IP协议的作用是把各种数据包传送给对方。为保证正确送达,其中两个正确的条件就是IP地址和MAC地址。

IP地址指明了节点被分配的地址,MAC是网卡的固定地址。IP地址会和MAC地址进行配对。

IP间通信依赖MAC地址。毕竟通信双方在同一局域网内的情况很少,通常需要多台计算机和网络设备转换才能连接到对方,而进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,此时采用ARP协议。ARP协议是一种用解析地址的协议,通过IP地址反查出对应的MAC地址。

有点像送快递,寄快递---集散中心---中转站---集散中心---收快递

2.2 确保可靠性的 TCP 协议

TCP提供可靠的字节流服务,字节流服务是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。

可靠性--->三次握手

发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后, 回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束。

2.3 负责域名解析的 DNS 服务

为了方便用户记忆,DNS协议提供通过域名查找IP或逆向查找。

3 URI和URL

URI 统一资源标识符

URL 统一资源定位符

URN  统一资源名称

读书笔记---<<图解HTTP>>(一)

URL是URI的一种实现,是URI的一个子集。举个例子,假如大家名字都不能重复的话,根据名字就能标识出唯一的一个人,那么名字就是URI的一个实例,但是现实生活中名字肯定会重复,所以身份证号才是URI,通过身份证号就能标识出唯一的一个人。而URL是通过描述人位置的的方式来确定一个人,比如某某协议://地球/中国/上海/浦东新区/xx小区/xxx,另一种方式就是通过身份证号来确定这个人了,两种方式都属于URI。

二、简单的HTTP协议

1. HTTP协议用于客户端和服务端之间的通信

客户端包括请求行、请求头、请求体。

服务端包括想响应行、响应头、响应体。

读书笔记---<<图解HTTP>>(一)

其中,①②③是请求行,分别是请求方法,资源名称,HTTP版本号,④是请求头,⑤是请求体。

2. HTTP是不保存状态的协议

协议本身不保留任何请求和发送的信息,这是为了处理大量事务,确保协议的可伸缩性,而特意把HTTP设计的如此简单。

但是为了实现保持状态的功能,便引入了Cookie机制。

3. 告知服务器意图的HTTP方法

GET:获取资源

POST:传输实体主体

PUT:传输文件,像FTP协议的文件上传一样

HEAD:获得报文首部,和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新日期等。

DELETE:删除文件,与PUT相反的方法。

OPTIONS:询问支持的方法,查询针对URI指定的资源支持的方法。

读书笔记---<<图解HTTP>>(一)

TRACE:追踪路径,让Web服务端将之前的请求通信环回给客户端的方法。容易引发XST攻击,通常不会用到。

CPMMECT:要求用隧道协议连接代理。要求与代理服务器使用隧道协议进行TCP通信,通常使用SSL和TLS协议把通信内容加密后经过网络隧道传输。

读书笔记---<<图解HTTP>>(一)

目前大部分用的HTTP协议都是1.1版本。

4. 持久连接节省通信量

HTTP协议初始版本中,每进行一次HTTP通信就要断开一次TCP连接。

读书笔记---<<图解HTTP>>(一)

随着HTTP普及,文档中包含大量图片的情况多了起来,通信量大幅度增加。

4.1 持久连接

读书笔记---<<图解HTTP>>(一)

在HTTP/1.1中,所有的默认连接都是持久连接。

Connection:keep-alive

Keep-Alive: timeout=20      表示时间为20s的持久连接。

4.2 管线化

从前发送请求后需要等待并收到响应才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。

4.3 使用Cookie的状态管理

Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出 去。

服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一 个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前 的状态信息。

IP(Internet Protocol)

FTP(File Transfer Protocol,文件传输协议)

DNS(Domain Name System,域名系统)

TCP(Transmission Control Protocol,传输控制协议)

UDP(User Data Protocol,用户数据报协议)

MAC 地址(Media Access Control Address)

字节流服务(Byte Stream Service)

SSL(Secure Sockets Layer,安全套接层)

TLS(Transport Layer Security,传输层安全)

SYN(synchronize)

ACK(acknowledgement)

URL(Uniform Resource Locator)

URN ( Universal Resource Name)

上一篇:在Flex中推断是否在组件之外单击的技巧


下一篇:POJ 1151 Atlantis(经典的线段树扫描线,求矩阵面积并)