美文网首页
总结2 -网络篇

总结2 -网络篇

作者: percivals | 来源:发表于2021-04-29 15:27 被阅读0次

[toc]

1.http和https区别

HTTPS: 是以安全为目标的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基础是 SSL。
SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。SSL 协议可分为两层:SSL 记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL 握手协议(SSL Handshake Protocol),它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

  1. HTTPS 设计目标:

(1) 数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么 。

(2) 数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收 。

(3) 身份校验安全性:保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方 。

2.HTTP 与 HTTPS 的区别

1)、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)

2)、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

3)、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4)、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

3.HTTPS 相对于 HTTP 的改进
双向的身份认证

客户端和服务端在传输数据之前,会通过基于X.509证书对双方进行身份认证 。具体过程如下:

客户端发起 SSL 握手消息给服务端要求连接。

服务端将证书发送给客户端。

客户端检查服务端证书,确认是否由自己信任的证书签发机构签发(客户端内置了所有受信任 CA 的证书)。 如果不是,将是否继续通讯的决定权交给用户选择 ( 注意,这里将是一个安全缺陷 )。如果检查无误或者用户选择继续,则客户端认可服务端的身份。

服务端要求客户端发送证书,并检查是否通过验证。失败则关闭连接,认证成功则从客户端证书中获得客户端的公钥,一般为 1024 位或者 2048 位。到此,服务器客户端双方的身份认证结束,双方确保身份都是真实可靠的。

CA认证介入我们的HTTPS连接的过程如下:

1)、服务器拥有自己的私钥与公钥

2)、服务器将公钥交给CA认证机构,请求给予一份数字证书

3)、CA认证机构生成数字证书,并颁发给服务器

4)、服务器将带有公钥信息的数字证书发给客户端

5)、进入客户端生成对称密钥再进行对接的过程......

参考:
https://blog.csdn.net/qq_38289815/article/details/80969419
https://blog.csdn.net/qq_35642036/article/details/82788421

2.TCP和UDP

  1. TCP

1)tcp协议和报文格式:

image.png
  • 源端口号/目的端口号:表示数据从哪个进程来,要到那个进程去

  • 32位序号:序号是可靠传输的关键因素。TCP将要传输的每个字节都进行了编号,序号是本报文段发送的数据组的第一个字节的编号,序号可以保证传输信息的有效性。比如:一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为401。

32位确认序号:每一个ACK对应这一个确认号,它指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0。

  • 6位标志位:

URG:它为了标志紧急指针是否有效。
ACK:标识确认号是否有效。
PSH:提示接收端应用程序立即将接收缓冲区的数据拿走。
RST:它是为了处理异常连接的, 告诉连接不一致的一方,我们的连接还没有建立好, 要求对方重新建立连接。我们把携带RST标识的称为复位报文段。
SYN: 请求建立连接; 我们把携带SYN标识的称为同步报文段。
FIN:通知对方, 本端要关闭连接了, 我们称携带FIN标识的为结束报文段。

  • 16位的紧急指针:按序到达是TCP协议保证可靠性的一种机制,但是也存在一些报文想优先被处理,这时就可以设置紧急指针,指向该报文即可,同时将紧急指针有效位置位1。

  • 16位窗口大小:如果发送方发送大量数据,接收方接收不过来,会导致大量数据丢失。然后接收方可以发送给发送发消息让发送方发慢一点,这是流量控制。接收方将自己接收缓冲器剩余空间的大小告诉发送方叫做16位窗口大小。发送发可以根据窗口大小来适配发送的速度和大小,窗口大小最大是2的16次方,及64KB,但也可以根据选项中的某些位置扩展,最大扩展1G。

  • 16位校验和:发送端填充,CRC校验。如果接收端校验不通过, 则认为数据有问题(此处的检验和不光包含TCP首部也包含TCP数据部分)。

2)确认应答机制:

接收端收到一条报文后,向发送端发送一条确认ACK,此ACK的作用就是告诉发送端:接收端已经成功的收到了消息,并且希望收到下一条报文的序列号是什么。这个确认号就是期望的下一个报文的序号。

超时重传:

TCP在传输数据过程中,还加入了超时重传机制。假设主机A发送数据给主机B,主机B没有收到数据包,主机B自然就不会应答,如果主机A在一个特定时间间隔内没有收到主机B发来的确认应答,就会进行重发,这就是超时重传机制。
当然还存在另一种可能就是主机A未收到B发来的确认应答,也可能是因为ACK丢失了。

因此主机B会收到很多重复数据,那么TCP协议需要能够识别出那些包是重复的包, 并且把重复的包丢弃掉,这时候我们可以利用前面提到的16位序列号, 就可以很容易做到去重的效果。

在正常情况下, TCP要经过三次握手建立连接,四次挥手断开连接。

3)流量控制

接收端处理数据的速度是有限的,如果发送端发的太快,导致接收端的缓冲区被装满,这个时候如果发送端继续发送,就会造成丢包,然后引起丢包重传等等一系列连锁反应。因此TCP支持根据接收端的处理能力,来决定发送端的发送速度,这个机制就叫做流量控制(Flow Control)。

  • 接收端将自己可以接收的缓冲区大小放入TCP首部中的"窗口大小"字段,通过ACK确认报文通知发送端

  • 窗口大小字段越大,说明网络的吞吐量越高,接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给发送端

  • 发送端接受到这个窗口之后,就会减慢自己的发送速度,如果接收端缓冲区满了, 就会将窗口置为0。这时发送方不再发送数据,但是需要定期发送一个窗口探测数据段,使接收端把窗口大小告诉发送端。

4)拥塞控制

虽然TCP有了滑动窗口这个大杀器能够高效可靠的发送大量的数据,但是如果在刚开始阶段就发送大量的数据,仍然可能引发问题,因为网络上有很多的计算机,可能当前的网络状态就已经比较拥堵,在不清楚当前网络状态下,贸然发送大量的数据是很有可能引起雪上加霜的,造成网络更加堵塞。

TCP引入慢启动机制,先发少量的数据探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据。

image.png

图中的cwnd为拥塞窗口,在发送开始的时候定义拥塞窗口大小为1,每次收到一个ACK应答拥塞窗口加1。每次发送数据包的时候,将拥塞窗口和接收端主机反馈的窗口大小做比较,取较小的值作为实际发送的窗口。

像上面这样的拥塞窗口增长速度,是指数级别的。"慢启动"只是指初使时慢,但是增长速度非常快。为了不增长的那么快,因此不能使拥塞窗口单纯的加倍,此处引入一个叫做慢启动的阈值当拥塞窗口超过这个阈值的时候,不再按照指数方式增长, 而是按照线性方式增长。


image.png

当TCP开始启动的时候,慢启动阈值等于窗口最大值
在每次超时重发的时候,慢启动阈值会变成原来的一半同时拥塞窗口置回1
少量的丢包,我们仅仅是触发超时重传。大量的丢包,我们就认为网络拥塞。当TCP通信开始后,网络吞吐量会逐渐上升。随着网络发生拥堵,吞吐量会立刻下降。拥塞控制归根结底是TCP协议想尽可能快的把数据传输给对方,但是又要避免给网络造成太大压力的折中方案。

拥塞控制的标志:

  • 重传计时器超时
  • 接收到三个重复确认

拥塞避免:(按照线性规律增长)

拥塞避免并非完全能够避免拥塞,在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。
拥塞避免的思路是让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞控制窗口加一。

5)拥塞控制与流量控制的区别:

拥塞控制是防止过多的数据注入到网络中,可以使网络中的路由器或链路不致过载,是一个全局性的过程。 流量控制是点对点通信量的控制,是一个端到端的问题,主要就是权衡发送端发送数据的速率,以便接收端来得及接收。

  1. UDP

UDP协议的特点:

  • 无连接:只知道对端的IP和端口号就可以发送,不需要实现建立连接。

  • 不可靠:没有确认机制, 没有重传机制。如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息。

  • 面向数据报: 应用层交给UDP多长的报文, UDP原样发送既不会拆分,也不会合并。如果发送端调用一次sendto, 发送100个字节, 那么接收端也必须调用对应的一次recvfrom, 接收100个 字节,而不能循环调用10次recvfrom, 每次接收10个字节。所以UDP不能够灵活的控制读写数据的次数和数量。

  • UDP没有发送缓冲区,在调用sendto时会直接将数据交给内核,由内核将数据传给网络层协议进行后续的传输动作。为什么UDP不需要发送缓冲区? 因为UDP不保证可靠性,它没有重传机制,当报文丢失时,UDP不需要重新发送,而TCP不同,他必须具备发送缓冲区,当报文丢失时,TCP必须保证重新发送,用户不会管,所以必须要具备发送缓冲区。

  • UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报文的顺序和发送UDP报的顺序一致,如果缓冲区满了再到达的UDP数据报就会被丢弃。

  1. 区别

TCP 是面向连接的,UDP 是面向无连接的
UDP程序结构较简单
TCP 是面向字节流的,UDP 是基于数据报的
TCP 保证数据正确性,UDP 可能丢包
TCP 保证数据顺序,UDP 不保证

参考:
https://blog.csdn.net/hansionz/article/details/86435127
https://blog.csdn.net/zhang6223284/article/details/81414149

3.AFNetworking2.0和3.0有什么区别

2.0使用的NSURLConnection,3.0使用的是NSURLSession,

1)NSURLConnection下载文件时,先是将整个文件下载到内存,然后再写入到沙盒,如果文件比较大,就会出现内存暴涨的情况。而使用NSURLSessionUploadTask下载文件,会默认下载到沙盒中的tem文件中,不会出现内存暴涨的情况。

2)NSURLConnection停止请求的发送,停止后不能继续访问,需要创建新的请求。NSURLSession有三个控制方法,取消(cancel)、暂停(suspend)、继续(resume),暂停以后可以通过继续恢复当前的请求任务。

3)AFN3.0 NSURLSession 不需要2.0NSURLConnection 的常驻线程。
2.0需要常驻线程是因为请求回调依赖当前线程,而AFN3.0 NSURLSession的请求回调不需要依赖当前线程,可以指定回调的delegateQueue,这样也就不需要再对线程进行保活。AF3.0指定的用于接收回调的Queue的maxConcurrentOperationCount需要设为1,这里目的是想要让并发的请求串行的进行回调。

4.get post区别

参考:https://www.zhihu.com/question/28586791

请求头里面包含哪些

tcp/ip

计算机网络知识扫盲:https://blog.csdn.net/hansionz/article/details/85224786
网络编程套接字:https://blog.csdn.net/hansionz/article/details/85226345
HTTP协议详解:https://blog.csdn.net/hansionz/article/details/86137260

相关文章

  • 总结2 -网络篇

    [toc] 1.http和https区别 HTTPS: 是以安全为目标的 HTTP 通道,是 HTTP 的安全版。...

  • iOS网络篇总结

    网络阶段# 应用程序如何连接互联网## 1.基于HTTP协议 HTTP:超文本传输协议(Hyper-Text Ma...

  • 网络资料总结2

    网络层相关 一 IP 1.1 IP协议 ​ 子网掩码、默认网关 10.100.122.2/24 ​ 广播地...

  • 2019-04-25 第六周作业

    1. 总结IP地址规划 有类地址网络ID固定 无类地址网络ID不固定 2. 总结常见网络管理命令 ifconfig...

  • 19年2月总结--迈出成功的第一步

    一、本月实绩 1、工作。 2、写作:公众号 4篇,公众号运营总结报告 1篇,运营方案 1个;个人 1篇《2月总结》...

  • OC总结篇 - 网络基础

    相关文章: https://www.jianshu.com/p/dc5b91f826f0 HTTP的发展 HTTP...

  • 18年12月总结--个人战略

    一、本月实绩 1、工作; 2、写公众号:3篇文章; 3、自己的文章:2篇《12月总结》和《18年总结》; 4、课程...

  • 《PyTorch深度学习实践》(6)

    主题 卷积神经网络(高级篇) 总结:Inception 通常的神经网络是串行结构的,但也有并行结构的神经网络。 I...

  • Retrofit2.0基本使用

    Android网络编程(九)Retrofit2前篇[基本使用] Android网络编程(十)Retrofit2后篇...

  • 区块链网络拥堵怎么办?

    内容提要:1 网络拥堵的概念。2 网络拥堵怎么发生的呢?3 网络拥堵怎么解决?4 总结 1 网络拥堵的概念 ...

网友评论

      本文标题:总结2 -网络篇

      本文链接:https://www.haomeiwen.com/subject/mxqtkltx.html