网站开发技术支持与保障,网站建设培训深圳,大秦wordpress付费阅读,怎样只做自己的网站图解HTTP学习笔记 1.2 HTTP的诞生 CERN#xff08;欧洲核子研究组织#xff09;的蒂姆 • 伯纳斯 - 李#xff08;Tim BernersLee#xff09;博士提出了一种能让远隔两地的研究者们共享知识的设想。最初设想的基本理念是#xff1a;借助多文档之间相互关联形成的超文本欧洲核子研究组织的蒂姆 • 伯纳斯 - 李Tim BernersLee博士提出了一种能让远隔两地的研究者们共享知识的设想。最初设想的基本理念是借助多文档之间相互关联形成的超文本HyperText连成可相互参阅的 WWWWorld Wide Web万维网。
1990 年 11 月CERN 成功研发了世界上第一台 Web 服务器和 Web 浏览器。两年后的 1992 年 9 月日本第一个网站的主页上线了。
1993 年 1 月现代浏览器的祖先 NCSANational Center for Supercomputer Applications美国国家超级计算机应用中心研发的Mosaic 问世了。它以 in-line内联等形式显示 HTML的图像在图像方面出色的表现使它迅速在世界范围内流行开来。
1994 年 的 12 月网景通信公司发布了 Netscape Navigator 1.01995年微软公司发布 Internet Explorer 1.0 和 2.0。 2004 年Mozilla 基金会发布了 Firefox 浏览器 Internet Explorer 浏览器的版本从 6 升到 7 前后花费了 5 年时间。之后接连不断地发布了 8、9、10 版本。另外Chrome、Opera、Safari 等浏览器也纷纷抢占市场份额。
1.3 网络基础TCP/IP TCP/IP 协议族里重要的一点就是分层。TCP/IP 协议族按层次分别分为以下 4 层应用层、传输层、网络层和数据链路层。
把 TCP/IP 层次化是有好处的。比如如果互联网只由一个协议统筹某个地方需要改变设计时就必须把所有部分整体替换掉。而分层之后只需把变动的层替换掉即可。把各层之间的接口部分规划好之后每个层次内部的设计就能够自由改动了。 值得一提的是层次化之后设计也变得相对简单了。处于应用层上的应用可以只考虑分派给自己的任务而不需要弄清对方在地球上哪个地方、对方的传输路线是怎样的、是否能确保传输送达等问题。
链路层又名数据链路层网络接口层 用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NICNetwork Interface Card网络适配器即网卡及光纤等物理可见部分还包括连接器等一切传输媒介。硬件上的范畴均在链路层的作用范围之内
网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径所谓的传输路线到达对方计算机并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时网络层所起的作用就是在众多的选项内选择一条传输路线。
传输层对上层应用层提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议TCPTransmission Control Protocol传输控制协议和 UDPUser Data Protocol用户数据报协议。
应用层决定了向用户提供应用服务时通信的活动。 TCP/IP 协议族内预存了各类通用的应用服务。比如FTPFile Transfer Protocol文件传输协议和 DNSDomain Name System域名系统服务就是其中两类。
IP 协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里则需要满足各类条件。其中两个重要的条件是 IP 地址和 MAC地址Media Access Control Address。
IP 地址指明了节点被分配到的地址MAC 地址是指网卡所属的固定地址。IP 地址可以和 MAC 地址进行配对。IP 地址可变换但 MAC地址基本上不会更改。
IP 间的通信依赖 MAC 地址。在网络上通信的双方在同一局域网LAN内的情况是很少的通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时会利用下一站中转设备的 MAC地址来搜索下一个中转目标。这时会采用 ARP 协议AddressResolution Protocol。ARP 是一种用以解析地址的协议根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
在到达通信目标前的中转过程中那些计算机和路由器等网络设备只能获悉很粗略的传输路线。这种机制称为路由选择routing有点像快递公司的送货过程。想要寄快递的人只要将自己的货物送到集散中心就可以知道快递公司是否肯收件发货该快递公司的集散中心检查货物的送达地址明确下站该送往哪个区域的集散中心。接着那个区域的集散中心自会判断是否能送到对方的家中。
确保可靠性的 TCP 协议 为了准确无误地将数据送达目标处TCP 协议采用了三次握手three-way handshaking策略。用 TCP 协议把数据包送出去后TCP不会对传送后的情况置之不理它一定会向对方确认是否成功送达。
握手过程中使用了 TCP 的标志flag —— SYNsynchronize 和 ACKacknowledgement。发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后发送端再回传一个带 ACK 标志的数据包代表“握手”结束。
负责域名解析的 DNS 服务 DNS 协议提供通过域名查找 IP 地址或逆向从 IP 地址反查域名的服务。www.baidu.com会去请求最近的域名服务器解析出ip地址。http负责生成对目标服务的器的http请求报文、解析请求url原来你是要某某主机某个目录的下的资源呀tcp负责字节流服务分割出多个报文段、重组到达的报文段ip负责搜索对方地址中转路由传送。
持久连接旨在建立 1 次 TCP 连接后进行多次请求和响应的交互持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销减轻了服务器端的负载。另外减少开销的那部分时间使HTTP 请求和响应能够更早地结束这样 Web 页面的显示速度也就相应提高了。在 HTTP/1.1 中所有的连接默认都是持久连接。
持久连接使得多数请求以管线化pipelining方式发送成为可能。从前发送请求后需等待并收到响应才能发送下一个请求。管线化技术出现后不用等待响应亦可直接发送下一个请求。
假设要求登录认证的 Web 页面本身无法进行状态的管理不记录已登录的状态那么每次跳转新页面不是要再次登录就是要在每次请求报文中附加参数来管理登录状态。
Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。 Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时客户端会自动在请求报文中加入 Cookie 值后发送出去。 服务器端发现客户端发送过来的 Cookie 后会去检查究竟是从哪一个客户端发来的连接请求然后对比服务器上的记录最后得到之前的状态信息。
3.2 请求报文及响应报文的结构 请求报文结构 请求 URL:https://www.mydrivers.com/zhuanti/tianti/cpu/index.html 请求方法:GET 状态代码:304 Not Modified 远程地址:101.28.132.13:443 引用者策略:strict-origin-when-cross-origin Accept:text/html,application/xhtmlxml,application/xml;q0.9,image/webp,image/apng,/;q0.8,application/signed-exchange;vb3;q0.7 Accept-Encoding:gzip, deflate, br Accept-Language:zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6 Cache-Control:max-age0 Connection:keep-alive Cookie:Hm_lvt_5c6ea7c88034ab979d4a14f9d840e0d01690280205,1690532327,1690771670,1690859915; Hm_lpvt_5c6ea7c88034ab979d4a14f9d840e0d01690859915; Hm_lvt_fa993fdd33f32c39cbb6e7d66096c4221690280205,1690532327,1690771670,1690859915; Hm_lpvt_fa993fdd33f32c39cbb6e7d66096c4221690859915 Host:www.mydrivers.com If-Modified-Since:Sun, 09 Jul 2023 14:59:48 GMT If-None-Match:“c4d451176b2d91:0” Sec-Ch-Ua:“Not/A)Brand”;v“99”, “Microsoft Edge”;v“115”, “Chromium”;v“115” Sec-Ch-Ua-Mobile:?0 Sec-Ch-Ua-Platform:“Windows” Sec-Fetch-Dest:document Sec-Fetch-Mode:navigate Sec-Fetch-Site:none Sec-Fetch-User:?1 Upgrade-Insecure-Requests:1 User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188
响应报文结构 Connection:keep-alive Content-Type:text/html Date:Tue, 01 Aug 2023 03:18:38 GMT Etag:“c4d451176b2d91:0” Last-Modified:Sun, 09 Jul 2023 14:59:48 GMT Vary:Accept-Encoding X-Cache:HIT from BC13_lt-hebei-handan-6-cache-1(baishan) X-Ser:BC13_lt-hebei-handan-6-cache-1
Title
HTTP 通信时除客户端和服务器以外还有一些用于通信数据转发的应用程序例如代理、网关和隧道。它们可以配合服务器工作。这些应用程序和服务器可以将请求转发给通信线路上的下一站服务器并且能接收从那台服务器发送的响应再转发给客户端。 代理 代理是一种有转发功能的应用程序它扮演了位于服务器和客户端“中间人”的角色接收由客户端发送的请求并转发给服务器同时也接收服务器返回的响应并转发给客户端。 网关 网关是转发其他服务器通信数据的服务器接收从客户端发送来的请求时它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉自己的通信目标是一个网关。 隧道 隧道是在相隔甚远的客户端和服务器两者之间进行中转并保持双方通信连接的应用程序。
使用代理服务器的理由有利用缓存技术稍后讲解减少网络带宽的流量组织内部针对特定网站的访问控制以获取访问日志为主要目的等等。 代理有多种使用方法按两种基准分类。一种是是否使用缓存另一种是是否会修改报文。 缓存代理 代理转发响应时缓存代理Caching Proxy会预先将资源的副本缓存保存在代理服务器上。当代理再次接收到对相同资源的请求时就可以不从源服务器那里获取资源而是将之前缓存的资源作为响应返回。 透明代理 转发请求或响应时不对报文做任何加工的代理类型被称为透明代理Transparent Proxy。反之对报文内容进行加工的代理被称为非透明代理。
利用网关能提高通信的安全性因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。比如网关可以连接数据库使用SQL语句查询数据。另外在 Web 购物网站上进行信用卡结算时网关可以和信用卡结算系统联动。
隧道可按要求建立起一条与其他服务器的通信线路届时使用 SSL等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信。隧道本身不会去解析 HTTP 请求。也就是说请求保持原样中转给之后的服务器。隧道会在通信双方断开连接时结束。
请求首部字段名 说明 Cache-Control 控制缓存的行为 Connection 逐跳首部、连接的管理 Date 创建报文的日期时间 Pragma 报文指令 Trailer 报文末端的首部一览 Transfer-Encoding 指定报文主体的传输编码方式 Upgrade 升级为其他协议 Via 代理服务器的相关信息 Warning 错误通知
响应首部字段名 说明 Accept-Ranges 是否接受字节范围请求 Age 推算资源创建经过时间 ETag 资源的匹配信息 Location 令客户端重定向至指定URI Proxy-Authenticate 代理服务器对客户端的认证信息 Retry-After 对再次发起请求的时机要求 Server HTTP服务器的安装信息 Vary 代理服务器缓存的管理信息 WWW-Authenticate 服务器对客户端的认证信息
实体首部字段名 说明 Allow 资源可支持的HTTP方法 Content-Encoding 实体主体适用的编码方式 Content-Language 实体主体的自然语言 Content-Length 实体主体的大小单位字节 Content-Location 替代对应资源的URI Content-MD5 实体主体的报文摘要 Content-Range 实体主体的位置范围 Content-Type 实体主体的媒体类型 Expires 实体主体过期的日期时间 Last-Modified 资源的最后修改日期时间