network

network

Posted by Jow on August 21, 2019

目录

  1. 网络的分层
  2. TCP/IP四层体系结构
  3. 常见的网络问题

effective work is important, if work without heart just are wasting time. so you should work or study hard whatever.

网络的分层

OSI七层体系结构具有概念清楚、理论完整的特点,是一个理论上的国际标准,但却不是事实上的国际标准;而具有简单易用特点的TCP/IP 四层体系结构则是事实上的标准。 需要指出的是,五层体系结构虽然综合了 OSI 和 TCP/IP 的优点,但其只是为了学术学习研究而提出的,没有具体的实际意义。三者结构示意图如下所示:

TCP/IP四层体系结构

TCP/IP 是Internet上的标准通信协议集,该协议集由数十个具有层次结构的协议组成,其中TCP和IP是该协议集中的两个最重要的核心协议。TCP/IP协议族按层次可分为以下四层:应用层、传输层、网络层和网络接口层,各层对应的PDU数据单元的名称如下图所示:

应用层

应用层决定了向用户提供服务时的通信的活动。TCP/IP协议族内预存了各类通用的应用服务,比如FTP和DNS服务就是其中两类,HTTP协议也处于该层。

应用层协议分布在多个端系统上,而一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组。我们把这种位于应用层的信息分组称为报文。

传输层

传输层对上层应用层提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP和UDP。其中TCP是面向连接的传输协议,其在数据传输之前会建立连接,并把报文分解成多个段进行传输,在目的站在重新装配这些段,必要时重新传输没有收到或者错误的,因此它是可靠的。而UDP是无连接传输协议,其在数据传输之前不建立连接,并且对发送的段不进行校验和确认,所以它是不可靠的。

我们把运输层的分组称为保温段。

传输层和应用层之间的关系如下:

网络层

网络层用来处理在网络上流动的数据包,其中,数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。也就是说,网络层主要功能是把数据报通过最佳路径送到目的端,其中,网际层的核心协议——IP,提供了无连接的数据报传输服务(不保证送达,不保序)。

因特网的网络层负责将称为数据报的网络分组从一台主机移动到另一台主机。

网络层与传输层之间的关系如下:

链路层

因特网的网络层通过源和目的地之间的一系列路由器有数据报。为了将分组从一个节点(主机或路由器)移动到路径上的下一个节点,网络层必须依靠该链路层的服务。特别是每个节点,网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一个节点。在该下一个节点,链路层将数据报上传给网络层。

我们把链路层的分组称为帧。

物理层

虽然链路层的任务是将整个帧从一个网络元素移动到邻近的网络元素,而物理层的任务是将该帧中的一个个比特从一个节点移动到下一个节点。在这层中的协议仍然是链路层相关的并且进一步与该链路的实际传输媒体相关。

链路层和物理层合并称为网络接口层

网络接口层用来处理连接网络的硬件部分,包括硬件的设备驱动、NIC(network interface card)以及光纤等物理可见部分,还包括连接器等一切传输媒介。

常见的网络问题

  • http和https的区别

http协议运行在TCP上,明文传输,客户端和服务器都无法验证对方的身份;https是身披SSL(Secure Socket Layer)外壳的http,运行在SSL上,SSL运行在TCP之上,是添加了加密和认证的HTTP。它的加密机制是一种共享加密和公开秘钥加密并用的混合加密机制。

  • 端口不同:http:80,https:443
  • 资源消耗
  • 开销,https需要向认证机构购买证书
  • 对称加密和非对称加密

对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。

由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

  • 三次握手和四次握手

三次握手(我要和你建立连接,你真的要和我建立连接么,我真的要和你建立连接,成功);

  • 第一次:Client将标志位SYN置为1,随机产生一个值seq=J,并将改数据包发送给Server,client进入SYN_SENT状态,等待server确认。
  • 第二次握手:server收到数据包又标志位SYN=1知道client请求连接,server将SYN和ACK都置为1,ack = J + 1,随机产生一个值seq = K,并将该数据包发送费client已确认连接请求,sever进入SYN——RECD状态
  • 第三次:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

四次挥手(我要和你断开连接;好的,断吧。我也要和你断开连接;好的,断吧)

  • 第一次:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
  • 第二次握手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。此时TCP链接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。
  • 第三次:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
  • 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

三次握手的重要性:客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达Server。这是,Server误以为这是Client发出的一个新的链接请求,于是就向客户端发送确认数据包,同意建立链接。由于client此时并未发出建立链接的请求,所以其不会理睬Server的确认,也不与Server通信;而这时Server一直在等待Client的请求,这样Server就白白浪费了一定的资源。

  • TCP协议如何来保证传输的可靠性

通过数据包的校验,对失序数据包的重排序、丢弃重复数据、应答机制、超时重发以及流量控制。

  • TCP和UDP的区别
  • TCP是面向连接的,UDP是无连接的;
  • TCP是可靠的,UDP是不可靠的;
  • TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式;
  • TCP是面向字节流的,UDP是面向报文的;
  • TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信;
  • TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大;