4次挥手
- 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
A进入终止等待1(FIN-WAIT-1)状态
- 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
tcp处于半关闭状态(half-close)
a收到b端的确认后,就进入终止等待2状态
- 由B 端再提出反方向的关闭请求,将FIN置1
进入last-wait状态
- 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.
进入时间等待状态(time-wait)
时间等待计数器设置的时间过了2msl以后,进入closed状态
三次握手的原因
如果只有两次握手的话,比如说失效的报文段,突然发送到服务端,服务端收到失效报文段的请求后,会发送确认报文,新的连接就建立起来了。但现在由于客户端并没有发出请求,所以并不会理睬服务端的确认,也不会像服务端发送数据。而服务端以为已经连接起来了,一直在等待,浪费资源。
四次挥手的原因
TCP建立连接要进行3次握手,而断开连接要进行4次,这是由于TCP的半关闭造成的,因为TCP连接是全双工的(
即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭,这个单方向的关闭就叫半关闭.
关闭的方法是一方完成它的数据传输后,就发送一个FIN来向另一方通告将要终止这个方向的连接.当一端收到一个FIN,它必须
通知应用层TCP连接已终止了这个方向的数据传送,发送FIN通常是应用层进行关闭的结果.
名词解释
ACK TCP报头的控制位之一,对数据进行确认.确认由目的端发出,用它来告诉发送端这个序列号之前的数据段
都收到了.比如,确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性.
SYN 同步序列号,TCP建立连接时将这个位置1
FIN 发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置1
Http 是在应用层上的传输协议,底层是 TCP 协议实现的,
它一种面向无状态的连接,短连接,
之所以说他无状态,是因为在每一次请求完成之后,都会把连接关了,不会记住是哪一个客户端连接。
四种请求方式
get,post,pull,delete
请求信息有请求行,请求头,请求正文
请求行:请求方式,请求地址,请求协议
请求头:头名称,头值
请求正文:(只有post请求才会有)
响应信息有相应行,响应头,响应正文
响应行:响应协议,状态码,状态信息
响应 头:头名称和头值
响应正文
Http1.0与Http1.1,Http2.0的区别
http 2.0采用二进制的格式传送数据,不再使用文本格式传送数据
http2.0对消息头采用hpack压缩算法,http1.x的版本消息头带有大量的冗余消息
http2.0 采用多路复用,即用一个tcp连接处理所有的请求,真正意义上做到了并发请求,流还支持优先级和流量控制
http2.0支持server push,服务端可以主动把css,jsp文件主动推送到客户端,不需要客户端解析HTML,再发送请求,当客户端需要的时候,它已经在客户端了。
-
Http1.0一次只能处理一个请求和响应,Http1.1一次能处理多个请求和响应
-
多个请求和响应过程可以重叠
-
增加了更多的请求头和响应头,比如Host、If-Unmodified-Since请求头等
http和https的区别
https相当于http加上安全套接字,采用ssl加密技术
主要的区别
-
在osi模型中,http工作于应用层,https工作与传输层
-
http传输的时候采用明文传输,https采用加密传输
-
http不需要证书,https需要响应额证书
-
http以http开头,默认端口是80,https 以https开头,默认的端口是243
上传视频的时候为什么不用 Http 协议?
因为上传视频的时候文件一般比较长,如果我们采用 post 请求的话,写到输出流中,它并不会直接写到服务器中,而是会缓存在内存中,会影响我们的执行效率
停止等待机制:是指每发送完一个分组,就会停止发送,必须受到对这个分组的确认才会继续发送下一个分组
超时重传:是指每发送一个分组,就会为这个分组启动一个超时计数器,在规定的时间内没有受到确认,就会再次发送这个分组。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
更多学习和讨论,欢迎加入我们的知识星球!
群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
F-1711137751973)]
更多学习和讨论,欢迎加入我们的知识星球!
群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
这里有2000+小伙伴,让你的学习不寂寞~·