本文首要内容

一.HTTP协议
二.HTTPS与网络安全
三.TCP/UDP
四.DNS解析
五.Session/Cookie

全方位剖析iOS高级技术问题(八)之网络相关问题

一.HTTP协议

HTTP便是超文本传输协议。首要包含如下内容:

  • 恳求/呼应报文
  • 衔接树立流程
  • HTTP的特色

1.1 恳求报文 & 呼应报文

  • 恳求报文
    • 恳求行
      1.方法字段包含GET、POST等;
      2.URL指恳求的地址;
      3.协议版本一般为HTTP1.1版本;
      4.CRLF:回车换行。

    • 恳求头部字段:Key&Value的形式组装起来
      1.首部字段名–:–值–回车换行; 2.由多个首部字段名构成首部字段区域

    • 恳求实体主体:Get恳求没有,Post恳求才有。

全方位剖析iOS高级技术问题(八)之网络相关问题

  • 呼应报文
    • 呼应行
      1.版本;
      2.状况码;
      3.短语指状况码的描绘; 4.CRLF回车换行。

    • 呼应头部字段:Key&Value的形式组装起来
      1.首部字段名–:–值–回车换行; 2.由多个首部字段名构成首部字段区域

    • 呼应实体主体

问题一:什么是HTTP?

  • 恳求报文和呼应报文组成结构;

问题二:HTTP的恳求方法都有哪些?

  • GET、POST、HEAD、PUT、DELETE、OPTIONS

问题三:GET和POST方法的区别
根本描绘

  • GET恳求参数以?分割拼接到URL后面,POST恳求参数在Body里面;
  • GET参数长度限制2048个字符,POST一般没有该限制;
  • GET恳求不安全,POST恳求比较安全。

深层描绘:从语义的视点来答复,即从协议的界说标准。

  • GET用来获取资源,是安全的幂等的可缓存的
  • POST用来处理资源,是非安全的非幂等的不行缓存的

安全性:不应该引起Server端的任何状况变化。常用的安全性的恳求方法有GETHEADOPTIONS
幂等性:同一个恳求方法执行屡次和执行一次的作用完全相同。如PUTDELETE等。 可缓存行:恳求是否能够被缓存。如GET、HEAD等。

问题四:了解哪些状况码?意义是什么

  • 1XX:
  • 2XX:呼应成功等
  • 3XX:网路重定向
  • 4XX:客户端恳求问题
  • 5XX:Server端反常

1.2 衔接树立流程

  • 三次握手
  • 四次挥手
    全方位剖析iOS高级技术问题(八)之网络相关问题

1.3 HTTP的特色

  • 无衔接。HTTP的衔接有树立衔接和开释衔接的进程。处理无衔接的问题能够运用HTTP的耐久衔接
  • 无状况。在屡次发送HTTP恳求时,server端无法知道是否是同一用户。触及到Cookie/Session。

非耐久衔接和耐久衔接

  • 非耐久衔接
    客户端Client和服务端Server在进行交互时,会翻开一个TCP衔接进行网络数据的传输,然后会封闭此TCP衔接。当发送第二个恳求时,会从头树立一个新的TCP衔接。即每次发送的网络恳求,都需求从头创建TCP衔接,从头进行三次握手和四次挥手的进程,此进程便对错耐久衔接。

    全方位剖析iOS高级技术问题(八)之网络相关问题

  • 耐久衔接
    (1)翻开一条TCP通道后,在必定时间内,多个HTTP恳求或许在同一条TCP链路上进行恳求和呼应的传递,在继续必定时间后,再封闭TCP衔接通道。

    全方位剖析iOS高级技术问题(八)之网络相关问题

(2)头部字段

  • Connection: Keep-alive,客户端期许选用耐久衔接;
  • time:20,耐久衔接或TCP衔接需求继续多长时间有效;
  • max:10,此条TCP衔接最多能发送多少条HTTP恳求和呼应对。

(3)在耐久衔接中,怎么判别一个恳求是否完毕?

  • Content-length:恳求报文和呼应报文都有头部字段,在呼应报文的头部字段中有Content-length头部字段,在发送恳求时Server端会携带呼应数据的数据巨细经过此字段标识,客户端依据接收数据的字节数是否到达此字段的对应的值,假如到达,阐明此条HTTP恳求的呼应现已接收完毕,HTTP恳求完毕。
  • chunked:在POST恳求数据时,Server回来给客户端的数据需求屡次呼应回来,能够经过HTTP呼应报文中头部字段chunked来判别恳求是否完毕。当有多个块经过HTTP的TCP衔接传输给客户端,每一个报文都带有chunked字段,最终一个块有一个空的chunked,经过判段此字段是否为空来判别前一个HTTP恳求是否完毕。

问题五:Charles抓包原理是怎样的?

  • 也称中间人进犯;
  • 原理是:对客户端伪装成服务器,对服务器伪装成客户端。Charles 经过将自己设置成系统的网络拜访代理服务器,使得一切的网络拜访恳求都经过它来完成,从而完成了网络封包的截取和剖析。 进程中,Charles需求拿到服务器证书公钥 和 HTTPS衔接的对称密钥,条件是客户端选择信任并安装Charles的CA证书。

全方位剖析iOS高级技术问题(八)之网络相关问题

全方位剖析iOS高级技术问题(八)之网络相关问题

二.HTTPS与网络安全

2.1 HTTPS和HTTP的区别

全方位剖析iOS高级技术问题(八)之网络相关问题

  • HTTP在应用层,SSL/TLS坐落应用层和传输层之间的协议中间层。HTTPS便是在应用层HTTP的基础上,在应用层和传输层之间插入了SSL/TLS的协议中间层,完成网络安全的机制。
  • HTTPS是安全的HTTP,其安全是由插在应用层和传输层之间的SSL/TLC协议中间层来保障的

2.2 HTTPS衔接树立流程

全方位剖析iOS高级技术问题(八)之网络相关问题

全方位剖析iOS高级技术问题(八)之网络相关问题

问题:HTTPS都运用了哪些加密手法?

  • 衔接树立进程中运用非对称加密,非对称加密很耗时!
  • 后续通讯进程运用对称加密。

非对称加密

  • 当运用公钥加密时,用私钥解密;当运用私钥加密时,要公钥解密
  • 只要公钥在网络传递进程中传递,私钥保留在牢靠方Server端
    全方位剖析iOS高级技术问题(八)之网络相关问题

对称加密

  • 加密解密运用同一把密钥
  • 该密钥会在网络中进行传递,或许会发生中间人进犯。
    全方位剖析iOS高级技术问题(八)之网络相关问题

三.TCP/UDP

传输层协议:

  • TCP:传输操控协议
  • UDP:用户数据报协议

3.1 UDP用户数据报协议

特色

  • 无衔接:发送UDP数据报时无需事先树立衔接,也不需求开释衔接;

  • 尽最大努力交付:不确保牢靠传输;

  • 面向报文:既不兼并,也不拆分。

    既不兼并,也不拆分意义:
    1.首要应用层会产生应用层报文,该报文可大可小,假如小了不会做兼并,大了也不会做拆分,才向运输层传输。
    2.而是将报文原封不动的作为UDP用户数据报的数据部分,再拼接一个UDP首部,就组成了运输层的UDP数据报。
    3.接着将UDP数据报作为IP数据报的数据部分,组装一个IP首部,经过数据链路层、物理层向外传送。
    

全方位剖析iOS高级技术问题(八)之网络相关问题

功用

  • 复用、分用

    全方位剖析iOS高级技术问题(八)之网络相关问题

  • 过失检测

    全方位剖析iOS高级技术问题(八)之网络相关问题

3.2 TCP传输操控协议

特色

  • 面向衔接
    数据传输开端之前,需求树立衔接,即三次握手;

为什么要进行三次握手?
有一种场景:客户端发送衔接树立恳求的SYN同步报文,在网络路由传输进程中发生了超时。假如只要两次握手,当发送的SYN同步报文发生了超时(或丢掉),客户端会启用超时重传策略,从头发送一个SYN同步报文,当Server端收到SYN同步报文后,会回复客户端一个同步承认报文,此刻TCP衔接就树立了。假设在Server端回复客户端同步承认报文之后,又收到了方才超时的SYN同步报文,Server服务端会认为客户端需求又树立一个衔接,假如是两次握手,对于Server端来说相当于客户端发生了2次TCP衔接,而实际上第2次TCP衔接是因为重传机制导致的,客户端真实只想建议一个衔接。
假如是三次握手,当客户端经过重传SYN同步报文,Server端会回复客户端同步承认报文,客户端收到同步承认报文会回传给Server端一个ACK承认报文。假如此刻超时的SYN报文到达Server端,一起Server端回复给客户端同步承认报文,经过一段时间,客户端并没有再次给Server端回复ACK承认报文,Server端就能够把第2次发送的SYN报文看成是一个超时的报文,客户端并没有想真实树立衔接。

数据传输完毕之后,需求开释衔接,即四次挥手。(全双工)
客户端自动建议衔接开释,由客户端发送停止报文FIN到Server端,Server端回复给客户端一个ACK承认报文,此刻由客户端到Server的衔接就封闭了,称为半封闭状况。假如Server端还有数据能够向客户端发送,能够经过Server端到客户端方向的衔接进行数据传送,但客户端无法向Server端传递。在一段时间内,Server端会发送一个停止承认报文来断开由Server端到客户端的衔接,然后客户端回给Server端一个ACK承认报文。

全方位剖析iOS高级技术问题(八)之网络相关问题

  • 牢靠传输
    确保牢靠传输,报文需求(1)无过失(2)不丢掉(3)不重复(4)按序到达。 在TCP层面,经过停止等候协议完成,

    • 无过失情况

      全方位剖析iOS高级技术问题(八)之网络相关问题

    • 超时重传

      全方位剖析iOS高级技术问题(八)之网络相关问题

    • 承认丢掉

      全方位剖析iOS高级技术问题(八)之网络相关问题

    • 承认迟到

      全方位剖析iOS高级技术问题(八)之网络相关问题

  • 面向字节省

  • 流量操控

  • 拥塞操控 TCP慢发动:慢开端、拥塞避免

    全方位剖析iOS高级技术问题(八)之网络相关问题

四.DNS解析

1、DNS解析详细进程

域名到IP地址的映射,DNS解析恳求选用UDP数据报,且明文。

全方位剖析iOS高级技术问题(八)之网络相关问题

2、DNS解析查询方法

  • 递归查询 “我去给你问一下”

全方位剖析iOS高级技术问题(八)之网络相关问题

  • 迭代查询 “我告诉你谁或许知道”

全方位剖析iOS高级技术问题(八)之网络相关问题

3、DNS解析存在哪些常见的问题

  • DNS绑架问题

DNS绑架与HTTP的联系是怎样的? 没有联系。DNS解析发生在HTTP树立衔接之前,DNS解析恳求运用UDP数据报,端口号53。

怎样处理DNS绑架?
1.httpDNS。本身用DNS协议向DNS服务器的53端口进行恳求,换成运用HTTP协议向DNS服务器的80端口进行恳求。

全方位剖析iOS高级技术问题(八)之网络相关问题

2.长衔接

全方位剖析iOS高级技术问题(八)之网络相关问题

  • DNS解析转发问题

全方位剖析iOS高级技术问题(八)之网络相关问题

五.Session/Cookie

Session和Cookie的产生是对HTTP协议无状况特色的补偿

全方位剖析iOS高级技术问题(八)之网络相关问题

1、Cookie

Cookie首要用来记载用户状况,区别用户;状况保存在客户端

Cookie在客户端和Server端运作进程
当客户端发送一个HTTP恳求恳求对应的Server端,Server端会生成Cookie,然后经过HTTP的呼应报文携带上Cookie回来给客户端,客户端会保存Cookie。Server端生成的Cookie是怎么经过呼应报文传送给客户端的?因为呼应报文有头部字段,Server端经过添加头部字段Set-Cookie把对应的内容经过首部字段传给客户端,客户端在后续的HTTP恳求报文中把之前Server端回来给客户端的Cookie添加到HTTP恳求报文的Cookie首部字段中,就能够传回给Server端,Server端对传回来的Cookie进行判别来对用户进行辨认。

全方位剖析iOS高级技术问题(八)之网络相关问题

  • 客户端发送的Cookie在HTTP恳求报文的Cookie首部字段中;
  • 服务器端设置HTTP呼应报文的Set-Cookie首部字段

问题一:怎样修正Cookie

  • 新Cookie掩盖旧Cookie
  • 掩盖规矩:name、path、domain等需求与原Cookie共同;

问题二:怎样删除Cookie

  • 新Cookie掩盖旧Cookie
  • 掩盖规矩:name、path、domain等需求与原Cookie共同;
  • 设置Cookie的expires=曩昔的一个时间点,或许macAge=0

问题三:怎样确保Cookie的安全?

  • 对Cookie进行加密处理;
  • 只在HTTPS上携带Cookie;
  • 设置Cookie为HTTPOnly,防止跨站脚本进犯。

2.Session

Session也是用来记载用户状况,区别用户的;状况存放在服务器端

问题一:Session和Cookie的联系是怎样的?

  • Session需求依赖于Cookie机制;
  • Session工作流程

全方位剖析iOS高级技术问题(八)之网络相关问题

本文总结

问题1:HTTP中的GET和POST方法有什么区别?

从语义的视点来答复,即从协议的界说标准。

  • GET用来获取资源,是安全的幂等的可缓存的
  • POST用来处理资源,是非安全的非幂等的不行缓存的

问题2:HTTPS衔接树立流程是怎样的?

客户端给服务器端发送一个支持的加密算法列表,包含TLS版本号和随机数C,然后服务器端会回给客户端server证书、商定的加密算法和随机数S。接着先经过非对称加密进行对称加密的密钥传输,之后HTTP之间的网络恳求经过被非对称加密所维护的对称密钥进行网络拜访等。

全方位剖析iOS高级技术问题(八)之网络相关问题

问题3:TCP和UDP有什么区别?

从特色和功用方面:

  • TCP面向衔接,支持牢靠传输,面向字节省,并且供给了流量操控和拥塞的操控;
  • UDP无衔接,简单供给复用、分用以及过失检测等根本的传输层功用。

问题4:简述TCP的慢开端进程?

TCP拥塞操控的机制原理,触及慢开端拥塞避免算法。

问题5:客户端怎样避免DNS绑架?

  • 1.httpDNS。本身用DNS协议向DNS服务器的53端口进行恳求,换成运用HTTP协议向DNS服务器的80端口进行恳求;
  • 2.长衔接。

有任何问题,欢迎各位评论指出!觉得博主写的还不错的费事点个赞喽