是目前应用最广泛的应用层协议,它规定了浏览器和服务器通信的数据格式。就像写信要按照某种格式写一样。
包括请求行、请求头、请求正文
请求行:请求方法(GET OR POST OR 其他) + 请求URL + http版本号空行请求头:包括很多可选的键值对,通过百度进行抓包,得到几个
Accept-Encoding:指定网页编码,例如gzip、deflate、sdch、brAccept-Language:指定网页自然语言Cache-Control:控制缓存
常用字段 Public:所有内容缓存 Private:缓存到私有缓存 no-cache:所有内容不缓存 no-store:所有内容不缓存且不存到临时文件中 max-age:最大持续时间
Connection:一种在http中的长连接的选项
Cookie:小甜饼,用于保存信息Host:对方的主机名Referer:指定从什么URL过来的User-Agent:提供一些浏览器的信息空行
请求正文,里面一般存放了post时的数据包括状态行、响应头、响应正文
状态行:http版本 + 状态码 + 状态码的描述
状态码 1XX:表示请求已接收,继续处理 2XX:请求成功 3XX:请求重定向 4XX:客户端错误 5XX:服务器错误
> 常用状态码: 200:客户端请求成功 302:临时重定向,跳转地址通过Location指定 400:客户端请求有语法错误 403:服务器收到请求,但是拒绝提供服务 404:请求资源不存在 500:服务器发生不可预计错误响应头:
Cache-Control、Connection等有些是请求相应共有的Content-Encoding:指定相应的编码Content-Type:指定相应的媒体类型Server:服务器名称Content-Length:指定实体正文的长度空行
响应正文:就是准备显示在浏览器窗口上的东西
实际上,www.baidu.com这个文件只有两行
<!DOCTYPE html> <!--STATUS OK-->所谓的http,主要就是在学习请求头和响应报头
TCP向上层提供面向连接的、可靠的连接服务,通过多种方式保证其发送的数据一定会传送给对方。就像写完信然后封装好寄出去一样
TCP对来自上层的数据进行分组,加上相应的TCP头部,构成一定的格式,然后发送出去。
TCP 数据包 这是一个TCP数据包的基本形式。
端口号:16位端口对应电脑上的16位端口序号确认号:是TCP面向连接的一部分,通过不同数据包的号码来控制发送和接收首部长度:每增加一代表首部增加4个字节,最小为5(0101),代表首部最小为20字节(保留及)六个标志位:每个标志位为1或者0,用来在传输过程中发送某种关键信息,常用为ACK、SYN、FIN。窗口大小:TCP协议通过一个滑动窗口来控制发送接收流量。简单说的说就是一次发送多个,每收到一个ACK就将窗口移动一位。16位检验和:同时校验首部和数据16位紧急指针:指示紧急指针的个数(之后是普通数据),仅在标志位URG=1时启用选项:最长40个字节这是在网络层起作用的协议,发送数据到确定主机。 IP协议是一种!尽力而为!的协议,它会尽量发送数据包,而不会保证数据包的完整。 IP数据包的格式为:
版本:主要指明是IPV4还是IPV6
首部长度:至少为5,至多为15,每一对应四字节,即 5 * 4 = 20是首部的最小长度,若首部长度不是4的整数倍会有填充服务类型:总长度:指明这个IP数据包的总长度,最大65535,但是由于链路层限制,所以最大150016位标识:在IP分割数据时,指明是同一个数据的IP包标志:表示还有无分片和能不能分片片偏移:指明前面来自同一个数据的IP包的相对位置生存时间:指明这个IP数据包可以被转发多少次,每转发一次减一。8位协议:指定所携带的数据是什么协议(用的TCP还是UDP还是什么什么。。)首部校验和:只检验数据包的首部,不检验数据。使用CRC算法。原地址和目标地址:各32位,对应IPV4的32位地址。