·http
定义:http,超文本传输协议,是一个基于请求与响应的,无状态的,应用层协议,常基于TCP/IP协议进行传输数据,是互联网上最为广泛运用的传输协议,所有的www文件均需遵守该标准。设计http的初衷是为了提供一种发布和接收html页面的方法。端口号为80
特点:
1.基于请求和响应:由客户端发起请求,服务器响应请求
2.无状态:协议对客户端没有状态存储,访问一个网站需要反复登录
3.无连接:HTTP/1.1之前,每次请求都得TCP三次握手四次挥手来与服务器建立连接。如果多次请求同一资源,服务器并不能区分是否响应过用户的请求,每次都需要重新响应请求。
4.简单快速、灵活
5.通信时使用明文,请求和响应不会的通信方进行确认,无法确保数据完整性
·https
定义:https,即http的安全通信版,使用SSL进行加密处理数据,验证对方的身份,保证了数据的完整性。端口号为443
特点:
1.内容加密:采用混合加密技术,中间者无法直接查看明文内容
2.验证身份:通过证书认证客户端访问的是自己的服务器
3.保证数据完整性:可防止传输内容被中间人冒充或篡改
·TCP
定义:tcp,传输控制协议,是面向连接的,可靠的,基于字节流的传输层通信协议。tcp就是为了在不可靠的网络上,建立可靠的一个端与端之间的安全传输通道。
·三次握手--连接
过程:客户端向服务器发送请求报文syn请求连接,验证服务器是否可以发送请求,此为第一次;服务器接收到报文后响应了一个报文,发送了syn和ack,验证客户端发送和接收功能是否正常,此为第二次;客户端接收到报文后发送一个确认报文ack,表明自己接收正常,双方开始通信,此为第三次。
·发送syn确保双方有通信功能,发送ack确保双方有数据收发功能;第三次才可携带数据,第一二次不可以,因为这样服务器很容易被恶意攻击。
·握手失败原因:1.服务器端没有收到syn,无法进行下一步导致失败;2.服务端发送syn+ack后没有等来客户端的syn+ack确认,超时后会自动释放资源导致连接失败。
·isn:数据发送的初始序列号,需要动态生成,如果是静态的,容易被猜到后续的确认号导致报文掺入虚假信息。
·四次挥手--释放
过程:客户端发起关闭连接的请求,向服务器发送FIN报文段,进入FIN_wait1状态,此为第一次;服务器接收到后发送一个ack表示我知道了,然后进入close_wait状态,此为第二次,在第二次中,虽然客户端不再发送了,但是服务器端可能还有数据在发送,所以客户端接收到ack后会进入FIN_wait2状态;服务器发送完毕数据后会在末尾加上结束报文段FIN,服务器进入last_ack阶段等待客户端确认,此为第三次;客户端收到结束报文FIN后进入time_wait阶段,并向服务器发送一个确认的ack,服务器收到ack后关闭,而客户端等待msl之后也会关闭,此为第四次。
·FIN为结束报文,ack为确认报文,TCP在握手时将ack与FIN合并传输并无大碍,但是结束时客户端发送完了不代表服务器端也发送完了,所以需要将此两个报文段分开发送,故有四次。
·time_wait作用:如果客户端不等待直接关闭,得服务器端无法收到客户端的ack确认报文,服务器会不停发送FIN,会存在两个危害,1.新的客户端绑定地址成功后会接收到FIN,对新的连接造成危害,2.新的客户端会收到FIN而不是ack+syn,建立无法连接。
·2MSL作用:因为服务器发送FIN后需要ack结束,如果客户端发送的ack缺失了服务器无法正常关闭,所以需要等待2MSL。
标签:http,ack,报文,TCP,发送,https,服务器,FIN,客户端 From: https://www.cnblogs.com/jackdongdong/p/16893358.html