协议栈
#1.Http协议
HyperText Transfer protocol :超文本传输协议。网络传输的一种标准,客户端与服务端请求和应答的标准。URL:统一资源定位符,是从互联网上得到资源的位置和访问方法的一种简洁的表示方法。
格式:protocol://hostname:port/directory/filename?name=value#anchor
| 部分 | 意思 |
|---|---|
| protocol | 浏览器打开文件所使用的协议,如http,https,ftp,telnet等 |
| hostname | 服务器主机名 |
| port | 端口号 |
| directory | 访问资源目录 |
| filename | 文件名 |
| ?name=value | 问号 传值 |
| #anchor | 井号 访问锚点 |
请求与响应都是由三部分构成: 请求行(响应行),请求头(响应头),请求正文(响应正文)。
请求行:
格式分为三部分,每一个斜线/ 代表不同参数 三个参数的含义
-
Method请求方式,GET,POST,必须大写
-
Request-URL统一资源标识符(URI),不含主机部分
-
HTTP-Version请求HTTP协议版本。HTTP/1.0短链接,HTTP/1.1长连接。
请求头:
里面有请求头,告诉服务器,该浏览器的基本信息,端口号,accept-language(可接受的语言),cookie(传到服务端的cookie数据),referer(记录访问来源,统计访问量)
cookie:存在本地的数据,类型为小型文本文件,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息 。
session:即服务端开辟一块内存,与cookie功能一样,区别是session记录在服务端,只允许对应的浏览器子窗口访问,就算是同一个电脑同一个浏览器也不可访问
请求体:
get方式:数据可附在url上,无消息体。
post方式:与get相反,数据不可附在url上,有消息体。
响应大致和请求的结构一样,但还有一个响应状态码,如下
2xx:请求成功;3xx:重定向,要完成请求必须进一步的操作;4xx:客户端错误;5xx:服务端错误。
#2.IP协议
Internet protocol:网际协议,负责网络之间的通信,并规定了数据从一个网络传到另一个网络的规则。其灵活性在于:只要一个网络可以从一个地点向另一个地点传送二进制数据,就可以使用IP协议,点到点的,采用无连接的数据报机制(各数据报独立传输,可能延不同路径,也可能不会按序到达目的地),对数据“尽力传递”,不能保证正确与否,也不保证分组顺序,目前是IPv4向IPv6过渡的时代,这个过渡需要很多年,要平滑的进行过渡。
随着底层网络质量的日益提高,IP协议的尽力传输的优势体现得更加明显。
-
IP协议的任务是对数据报进行相应的寻址和路由选择,并从一个网络转发到另一个网络。
-
IP协议的另一项工作是分割和重编在传输层被分割的数据包
数据报是一个可变长分组,有两部分组成:头部和数据。头部含有和路由选择和传输相关的重要信息。在IPv6出现后,IP地址格式和分组长度以及分组的格式都改变了。具体v4和v6头部各字段的意义在这里就不copy to copy 了。
v4到v6的平稳过渡有三种策略
- 双协议栈策略,就是同时支持两个版本。
- 头部转换策略,就是在过渡的过程中,一定有许多系统不能识别新的v6,这时将v6的头部转换为v4格式,就可以实现识别。
- 隧道技术策略,当两台使用IPv6的计算机要进行相互通信,但其分组数据要通过使用IPv4的网络时,该分组要封装成IPv4分组,而当分组离开时该网络时再去掉这个封装。
#3.ARP协议
address resolution protocol:地址解析协议,根据IP地址获取物理地址(MAC地址)的一个协议。
工作过程:
第1步:A想访问B,然后A主机 根据B的IP地址 在自己的本地ARP缓存中检查主机B的匹配MAC地址。
第2步:如果主机A在ARP缓存中没有找到 B主机的MAC地址,它将ARP请求帧广播(发广播询问)到本地网络上的所有主机。源主机A将B的IP地址和自身的IP和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址-->MAC地址的对应表。
ARP命令用于查询本机ARP缓存中IP地址-->MAC地址的对应关系、添加或删除静态对应关系等。
ARP欺骗:
ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。篡改后会导致所有数据都会通过攻击者的机器,有极大的安全隐患。
地址解析协议是IPv4中必不可少的协议,但在IPv6中将不再存在地址解析协议。在IPv6中,地址解析协议的功能将由**NDP(邻居发现协议,Neighbor Discovery Protocol)实现**。IPv4中地址解析协议是独立的协议,负责IP地址到MAC地址的转换,对不同的数据链路层协议要定义不同的地址解析协议。IPv6中NDP包含了ARP的功能,且运行于因特网控制信息协议ICMPv6上,更具有一般性,包括更多的内容,而且适用于各种数据链路层协议;