TCP/IP的三次握手,四次挥手
第一次握手,
客户端(C)SYN置为1,生成一个随机序号seq发送给服务器(S),进入SYN_SEND状态
第二次握手
服务器收到客户端的SYN=1的请求后,知道客户端请求建立连接,将自己的SYN置为1,ACK置为1,生成一个seq=服务器发来的数字+1,并随机产生一个自己的随机需要发送给客户端。进入SYN_RCVD状态
第三次握手
客户端收到服务器的请求后检查sqe是否等于自己的序列号加1,ACK是否等于1,检查正确后将自己的ACK置为1,也产生一个随机序号为服务器的序号+1发送服务器,进去ESTALISHED状态。服务器勘察ack为1和需要后,也进去准备状态
是否可以只进行两次握手
不可以,二次握手其实代表只要服务端发送消息给客户端就代表链接已经简历了
所以可能存在这种情况,C向S发送请求,由于网络阻塞原因,延迟发送了,之后再次发送请求,并和S建立了请求,但是过一段时间后C第一次发送的请求S接收到了,S接受到了这次请求后,误以为是发送了一次新的建立请求的链接,和服务器建立了一次链接,但是由于C没有发送创建请求,也就是SYN不会为1,就不会这次请求,但是S误以为请求已经创立,建立了一个新的请求,但是却没有数据传输,
如果第三次握手的时候
四次挥手:
1.
C向服务器发送FIN和Seq请求,侵入FINwait状态,
2、S收到FIN后发送ack=1合seq++进入close_wait状态,此时C已经没有要发送的数据了,但是仍可以接受服务器发送来的数据
3.第三次挥手,S将FIN置为1,发送给C,进去LAST_ACK状态
4.第四次挥手,C收到FIN后,进入time_wait状态,接着将ACK置为1,发送ack+1给服务器;
为什么不能把第三次和第二次结合,S收到请求后,先回复一次,次数还有数据为发送完成,等发送完成后在发送FIN
TCP如何实现流量控制
tcp使用窗口来进行流量控制,接受方会维护一个接受窗口,接受窗口根据自己的资源进行动态调整,在返回ACK的时候将接受窗口的大小放在TCP报文的窗口字段告知对方,发送窗口的大小不能超过接受窗口的大小,
且只有当发送方发送并收到确认后,才能吧窗口右移
HTTP详解
应用层
应用层决定了向用户提供服务时通信的活动
如FTP,DNS,HTTP
传输层提供位于网络链接中两台计算机之间的数据传输
TCP和UDP在次之间
网络层又名网络互联层
IP
网络层用于处理网络上流动的数据包, 网络层的作用就是在众多的选项中选择一条传输路线
脸书层
HTTP的状态吗
200请求成功
204请求成功,但没有资源可返回
206 分段neirong
300字段为重定向
401需要认证
403 不允许访问
404 服务器上没有请求的资源
500属于服务器内部错误
HTTP和HTTPS
HTTP的缺点,通信使用明文信息传输,没有加密,可能被窃取。
无法验证通信方的身份,可能遭遇伪装
无法验证报文的完整性,所以很可能遭遇串改。
HTTPS
时使用SSL和TLS组合使用来进行加密
使用SSL建立安全的通信线路后,进行HTTPS传输
SSL还提供了证书来进行伪装
HTTPS采用对称迷失和非对称密室来进行混合加密
因为非对称密钥速度较慢,所以先用对称加密来对非对称密钥进行加密,然后在通信过程使用对称密钥进行加密
对称密钥仍存在问题,无法证明对称密钥本身就是货真价实的密钥,在通信过程中,无法证明收到的公开密钥就是原本预想的服务器的公开密钥
所以使用CA公开密钥证书
首先,服务器运营人员申请一张证书。然后对公开的密钥进行签名