移动端网络知识概览

Posted by Maqy on March 18, 2018

基础网络分层

应用层:http,dns,fdp等协议所在的分层
传输层:tcp,udp等协议
网络层:ip协议
数据链路层&物理层:网关,链路等

HTTP

HTTP:
1.0版本每次请求都是一次链接,1.1及之后为长链接,主要通过header的collection字段实现
请求数据报文包括:方式 版本 URI header body
响应数据报文包括:状态码 原因短语 版本 header body

GET POST
html约束get将参数拼接在url后,post放置在body中
浏览器对url长度进行了限制,所以get参数受限,post不受限
post的参数必须通过劫持才能看见

Header
Content-MD5:用于验证数据完整
Range:用于断点重传,请求时会根据范围选择传送数据
User-Agent:包含很多个人信息
Connection:keep-alive保持长链接,close关闭

加密算法

对称加密AES
有一对密钥,加密解密速度快
非对称加密RSA
存在公钥和私钥,私钥负责解密,公钥负责加密,同时私钥负责签名,公钥可以验证,缺点是速度较慢
签名和验证
机制类似于MD5,如果公钥验证后得到的数据与预期不一致说明被劫持

HTTPS

即先建立SSL通道,在用HTTP协议传输
SSL链接过程
A发送支持的算法给B
B选择算法,将公钥&签名&证书给A
A本地验证证书保证对方正确&验证签名保证没被劫持&用公钥加密密钥给B
B用私钥解密,得到用来加密的密钥,之后都用密钥加密
MD5
修改其中任何数据所计算的结果完全不同,所以能够验证数据有没有被劫持

TCP

可靠性
建立链接会通过三次握手,断开连接会通过四次挥手
会将数据报文分成最小的传输单位数据包,并打上序列号及首部信息,传输时如果收不到反馈则会重传
慢开始&拥塞控制
建立链接初期,会设置满开始门限cwd,从1开始传,接收到确认翻倍,直到大于cwd时,再除2成线性增长
快恢复
中期时为了快恢复,设置门限减半的值,再成线性增长
滑动窗口
主要包含已发送且已确认&已发送但未确认&未发送但已准备&未发送且未准备窗口调整会根据确认情况来调整

UDP

包头较小,无连接,主要包含目的地址等,发送较快,不能保证可靠性