http协议理解

三次握手:

第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND(发送)状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV(接收)状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(已建立)状态,完成三次握手。

说明:
1)SYN和ACK是标志位(0/1)(ACK=1表明ack有效),seq是序列号,ack是确认号。2)给对方的确认方式就是把对方传来的seq+1并赋给ack。

四次挥手:

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1。

第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

说明:

1)SYN攻击 用众多伪造ip地址向服务器发送SYN=1(请求连接),让服务器处于SYN-RCVD状态,但都无法第三次握手(因为伪造ip不存在)

2)4次挥手中的FIN就相当于三次握手中的SYN。

3)序号seq,确认序号ack,确认标志位ACK作用还是一样的,就是确认作用(把seq加上1赋给ack,并把ACK置1)

4)为什么一个3次1个4次不一样?

因为两端的数据并不是同时发送完,所以两端谁发送完数据都需要自己告诉对方一次,并且对方确认一次。

在这里插入图片描述

1)SYN攻击 用众多伪造ip地址向服务器发送SYN=1(请求连接),让服务器处于SYN-RCVD状态,但都无法第三次握手(因为伪造ip不存在)

2)4次挥手中的FIN就相当于三次握手中的SYN。

3)序号seq,确认序号ack,确认标志位ACK作用还是一样的,就是确认作用(把seq加上1赋给ack,并把ACK置1)

4)为什么一个3次1个4次不一样?

因为两端的数据并不是同时发送完,所以两端谁发送完数据都需要自己告诉对方一次,并且对方确认一次。

7,TCP和UDP的区别
这是传输层的两个协议,先说一下传输层的两大功能:

复用:在发送端,多个应用进程公用一个传输层;
分用:在接收端,传输层会根据端口号将数据分给不同的应用进程。
传输层和网络层的区别:

网络层为不同的主机提供通信服务,传输层为不同应用进程提供通信服务。
网络层只对报文头部进行差错检测,而传输层对整个报文进行差错检测。
UDP(User Data Protocol)用户数据报协议

无连接
不可靠(不能保证都送达)
面向报文(UDP数据传输单位是报文,不会对数据进行拆分和拼接操作,只是给上层传来的数据加个UDP头或者给下层来的数据去掉UDP头)
没有拥塞控制,始终以恒定速率发送数据
支持一对一、一对多、多对多、多对一
首部开销小,只有8字节

TCP(Transmission Control Protocol)传输控制协议

有连接
可靠的
面向字节流
全双工通信,TCP两端既可以作为发送端也可以作为接收端
连接的两端只能是两个端点,即一对一,不能一对多
至少20个字节,比UDP大的多
什么是TCP连接

HTTP协议采用 请求 / 响应 的工作方式
1.GET通过url的参数向服务器发送信息,而POST将信息保存在请求体中。

2.GET提交的数据有长度限制,而POST没有,因为浏览器对URL的长度有限制。

3.GET方式效率高,但数据 存在安全性问题,可通过对URL加密提高安全性

HTTP的请求报文由 请求行、请求头 & 请求体 组成,如下图
在这里插入图片描述

请求行
作用
声明 请求方法 、主机域名、资源路径 & 协议版本
结构
请求行的组成 = 请求方法 + 请求路径 + 协议版本
在这里插入图片描述

请求头
作用:声明 客户端、服务器 / 报文的部分信息
使用方式:采用”header(字段名):value(值)“的方式
常用请求头1. 请求和响应报文的通用Header2 常见请求Header

请求体
作用:存放 需发送给服务器的数据信息
可选部分,如 GET请求就无请求数据

相应报文
HTTP的响应报文包括:状态行、响应头 & 响应体
在这里插入图片描述
状态行
作用
声明 协议版本,状态码,状态码描述

响应头
作用:声明客户端、服务器 / 报文的部分信息
使用方式:采用”header(字段名):value(值)“的方式
常用请求头

响应体
作用:存放需返回给客户端的数据信息
使用方式:和请求体是一致的,同样分为:任意类型的数据交换格式、键值对形式和分部分形式

cookie机制和session机制的区别(解决无状态问题)

Cookie是客户端的存储空间,由浏览器来维持。具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于才服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制(“PHPSESSID”)来达到保存标识的目的,但实际上还有其他选择,比如说重写URL和隐藏表单域。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值