TCP/IP的分为4层。 应用层:向用户提供应用服务时通信的活动。如FTP、DNS、HTTP 传输层:提供处于网络连接中的两台计算机之间的数据传输。TCP、UDP 网络层:用来处理网络上流动的数据包。规定了通过怎样的路径到达对方计算机,并把数据包传送给对方。也就是在众多选项内选择一条传输路线。 链路层:用来处理连接网络的硬件部分。如网卡、光纤、控件操作系统、硬件的设备驱动。 在传输的过程中,发送端每经过一层时必定会被打上一个该层所属的首部信息。接收端在层与层传输数据时,每经过一层就会把对应的首部去掉。 IP协议的作用:把各种数据包传送给对方。其中两个重要的条件就是IP地址和MAC地址。IP地址指明了节点被分配到的地址。MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可更换,但MAC地址基本上不会更改。 IP间的通信依赖MAC地址。熊掌是经过多台计算机和网络设备中转才能连接到对方。而在中转中,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这时会使用ARP协议。ARP就是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。 路由选择:就像选择快递的路线一样。没有哪一个环节的人能够全面掌握细节。 TCP协议:提供可靠的字节流服务。为了更容易传送大数据才把数据分割(把大数据分割成以报文段为单位的数据包),而且TCP协议能够确认数据最终能否送达对方。 为了可靠到达。采用了三次握手的策略。如果握手在某个阶段中断,TCP协议会再次以相同的顺序发送相同的数据包。 DNS服务:提供了域名到IP地址之间的解析服务。 HTTP方法: GET/POST/PUT/HEAD/DELETE/OPTIONS/TRACE/CONNECT(要求用隧道协议连接代理)
持久连接节省通信量 使用浏览器浏览一个包含多张图片的HTML页面时,在发送请求访问HTML页面资源的同时,也会请求该HTML页面里面包含的其他资源。因为,每次的请求都会造成的TCP连接建立和断开,增加通信量的开销。 持久连接(HTTP1.1默认):只要什么问题一端没有明确提出断开连接,则保持TCP连接状态。 管线化:不用等待响应可以直接发送下一个请求。这样就能够做到同时并行发送多个请求。
使用Cookie的状态管理 Cookie会根据从服务器端发送的响应报文内的一个叫set-cookie的首部字段信息,通知客户端保存cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入cookie值后发送出去。
请求报文及响应报文 请求报文: 请求首部(请求行、请求首部字段、通用首部字段、实体首部字段、其他) 空行(CRLF 报文主体 响应报文: 响应首部(状态行、响应首部字段、通用首部字段、实体首部字段、其他)
用单台虚拟主机实现多个域名 在相同IP地址下,由于虚拟主机可以寄存多个不同主机名和域名的web网站,因此在发送http请求时,必须在host首部内完整指定主机名或者域名URI。
代理:接收客户端发送的请求后转发给其他服务器。 缓存代理(是否使用缓存)/透明代理(是否会修改报文) 源服务器:持有资源实体的服务器/代理服务器
每次通过代理服务器转发请求或者响应时,会追加写入Via首部信息
网关:利用网关可以由HTTP请球转化为其他协议通信 工作机制和代理十分相似。而网关能使通信线路上的服务器提供非HTTP协议服务。(利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全)如:可以使用网关连接数据库,使用sql语句查询数据。
隧道:可按要求建立一条与其他服务器的通信线路,届时使用SSL等加密手段进行通信。
缓存服务器的优势在于利用缓存可避免多次从源服务器转发资源。因此客户端可就近从缓存服务器上获取资源,而源服务器也不必多次处理相同的请求了。