学习笔记-HTTP
笔记目录:https://blog.csdn.net/weixin_42717928/article/details/114343085
昨天下了雨,今天刮了风,明天太阳就出来了
一:简单了解
如在百度输入www.baidu.com,回车,就能打开百度的网页
这种通过发送请求获取服务器资源的Web浏览器,可以称为客户端(client)
Web使用HTTP(超文本传输协议)为规范,完成两端之间的运作流程
HTTP于96年5月正式公布,命名HTTP/1.0
97年1月公布HTTP/1.1,是目前主流版本
二:TCP/IP基础
网络是在TCP/IP协议族的基础上运作的,HTTP是它内部的一个子集
TCP/IP是网络相关联的协议集合起来的总称(也有其他说法)
TCP/IP协议族按照分层分为为4层:应用层、传输层、网络层、数据链路层
分层的好处:某个地方有改动,就无需整体改动;各层间接口规划好,每个层次内部设计也能自由改动
应用层:向用户提供应用服务时通信的活动,如:
FTP(文件传输协议)、DNS(域名系统)、HTTP协议
传输层:提供处于网络连接中的两台计算机之间的数据传输
TCP(传输控制协议)、UDP(用户数据协议)
网络层(网络互连层):用来处理在网络上流动的数据包(数据包是网络传输的最小数据单位)
该层规定了通过怎样的传输路线到达对方计算机,并把数据包传送给对方
链路层(数据链路层,网络接口层):用来处理连接网络的硬件部分
流程:
- 客户端在应用层(HTTP协议),发出一个请求
- 在传输层(TCP协议)把应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层
- 在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层
- 接收端的服务器在链路层接受到数据,按序往上层发送,直到应用层为止
- 发送端在层与层之间传输数据,每经过一层就打上一个该层所属的首部信息,接收端再一层层的去掉,这种将数据信息包装起来的做法称为封装(HTTP数据-TCP首部-IP首部-以太网首部)
(一)IP协议
IP网际协议位于网络层,,它是一种协议的名称,作用是将数据包传送给对方,其中需要2个条件(IP地址和MAC地址)
IP地址指明节点被分配的地址,MAC地址是指网卡所属的固定地址,它们之间会进行匹配,IP可变换,MAC基本不更改
通信双方在同一个局域网(LAN)的情况很少,通常需要经过多台计算机和网络设备中转才能连接到对方,在中转时,会使用下一站中转设备的MAC地址,需要ARP协议(用于解析地址的协议,根据通信双方的IP地址就能反查出对应的MAC地址)
(2)TCP协议
TCP位于传输层,提供可靠的字节流服务
就是将大块数据分割成以报文段为单位的数据包进行管理
TCP采用了三次握手策略,确保数据送达目标处,握手过程中使用了TCP的标志(flag)-SYN(synchronize)-ACK(acknowledgement)
流程:
- 发送端发送带SYN标志的数据包给对方
- 接收端接收后,回传带SYN/ACK标志的数据包,表示传达确认信息
- 发送端再回传一个带ACK标志的数据包,表示“握手”接收
(3)DNS服务
DNS服务也是应用层的协议,提供域名到IP地址之间的解析服务
计算机可以被赋予IP地址,也可以被赋予主机名和域名,用户通常使用主机名或域名来访问对方的计算机,因为IP可能难记忆
DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务
(如发送端想访问A网页,DNS把A网页对应的IP地址给发送端,发送端再向该地址发起请求)
总结流程:
- 客户端告诉DNS想请求baidu.com
- DNS告诉客户端对应的IP地址
- 客户端向该地址发起请求
- 在应用层,HTTP生成针对目标Web服务器的HTTP请求报文
- 在传输层,TCP为了通信方便,将HTTP请求报文分割成报文段
- 在网络层,IP协议搜索对方的地址,一边中转一边传送(中途可能经过多个路由器)
- 在另一端的传输层,TCP再将接收的报文段,按序号重组请求报文段
- 在另一端的应用层,HTTP协议对Web服务器请求的内容处理
- 请求的处理结果同理回传
三:URI和URL
(1)URL(统一资源定位符),如:http://a.com
表示指定的URI,又分为绝对/相对URL。相对URL是指从浏览器中基本URI处指定的URL
绝对URL形式:
http://user:pass@www.a.jp:80/dir/index.htm?uid=1#ch1
- http://:协议方案名
- user:pass:登录信息(认证)(可选项)
- www.a.jp:服务器地址(也可以是192.168.1.1这类的IPv4地址名,或[0:0:0:0:0:0:0:1]这类的IPv6地址名)
- 80:端口号(可选项,省略则用默认的端口号)
- dir/index.htm:带层次的文件路径
- uid:查询字符串
- ch1:片段标识符(标记出已获取资源中的子资源)
(2)URI(统一资源标识符,Uniform Resource Identifier)
Uniform:规定统一格式可分别处理多种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式,后续新增协议方案也容易(如http:或ftp:)
Resource:“可标识的任何东西”
Identifier:标识符
综上所述:URI是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称。(如采用HTTP协议,协议方案就是http)