网络模型分两种,一种是OSI模型,一种是TCP/IP模型,后者应用更加普遍。这里也主要介绍TCP/IP模型。编程
首先分为4层,从上到下依次是应用层、传输层、网络层、数据链路层。 OSI模型中将网络分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。 TCP/IP的应用层是OSI模型中应用层、表示层、会话层的集合,而物理层因为不是咱们常常考虑的问题,因此TCP/IP模型没有把物理层算上。缓存
数据链路层的核心是以太网协议。以太网协议规定一组电信号是一个数据包,叫一个振,每一个帧(frame)分为标头(head)和数据(data),标头包含一些说明性东西,好比发送者,接收者,和数据类型之类的。例如一个电脑发个数据包出去,会广播给局域网(子网)内全部电脑设备的网卡,而后每台设备都从数据包获取接收者的mac地址与本身网卡的mac地址比对,若是同样就说明这是发给本身的数据包。服务器
定义了一套IP协议,有IPV4和IPV6,以IPV4为例,由32个二进制数字组成,用4个10进制数字表示。网络
IP地址分为三类:函数
这三类IP地址构成了三级网络,将网络划分为了三层,不一样子网经过上层网关进行转发。网站
ip之间的通讯加密
ip之间是如何通讯的勒,这里有一个子网以及子网掩码的概念。好比192.168.56.1和192.168.56.2判断是不是一个子网,子网掩码是255.255.255.0,子网掩码用来与ip地址进行与运算,获得的一个值是否彻底同样来判断是不是属于一个子网。192.168.56.1与255.255.255.0进行位与与192.168.56.2与255.255.255.0进行位与是同样的,都为192.168.56.0,即他们是同一个子网。同一个子网之间的Ip能够直接进行网络通讯,由于子网内的全部设备会上传本身的ip地址和mac地址映射,设备会缓存同一子网其余设备的Ip地址以及mac地址映射,当拆开IP协议层数据包时能够迅速以目标IP查询ARP缓存,以这个mac地址构建数据链路层的数据包。3d
那么不一样子网又是如何联通的勒?这里就是网关发挥做用的时候了,网关有多张网卡。以本身家里的路由器为例,也是一个网关,路由器有一张网卡与部的网关相连,也有一张网卡与内部设备进行相连。固然路由器与网关相连使用的是一个公网ip,这里有一个NAT转换的概念,路由器上装有NAT软件,能够将私有网络(也就是咱们本身家连上这台路由器全部的网络设备)的私有ip转换为同一个公网ip,这样作主要是为了解决ip不足的问题,由于ipv4协议就那么几位,ip确定是不够的。路由器在内网与公网之间中起着转发者的做用,固然路由器上面也有网关,当咱们要访问某个Ip也不在路由器全部网卡位与的子网中时还须要进行多个网关的转发,这种转发路径由路由表决定。路由表的的生成方式能够是动态(协议共享)或者静态(手动配置)的,当匹配路由表都失败时使用缺省路由,路由到相连的其余网关。blog
传输层的协议有TCP协议或UDP协议,TCP协议是一套基于端口的点对点通讯协议,规定包括如何链接,如何发送,读取消息。是有链接的,不容许丢数据。 UDP则不须要创建链接,传完数据也不须要确认,容许丢数据。 针对此层协议的操做,可以使用SocketAPI进行编程,其函数create,listen,accept,connect,read和write等等抽象了TCP/IP协议的一些操做。dns
合并了OSI中的应用层会话层表示层,协议有好比常见的HTTP协议,邮件协议等等,定义的是经过TCP拿到数据以后怎么处理的协议。
首先解释下涉及到的TCP数据包关键头信息。
标志位含义
序号含义
注:一般状况下数据传输阶段返回的ack为上一个接收包的seq+len,但三次握手阶段和四次挥手则直接为seq+1。即三次握手四次挥手的序号计算方式忽略了报文长度。
注意:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号。
为何是三次?为了让双方都知道彼此已准备好。设想一个场景,客户端好久以前的第一次握手到达服务器了,可是在这以前,后面重试的握手请求已经创建了链接发送了数据,那么在这个时候客户端是不认识服务器的响应的,因此当服务器返回响应的时候,客户端不会认识这个响应,没法创建链接。
为何链接的时候是三次握手,关闭的时候倒是四次握手?由于当Server端收到Client端的SYN链接请求报文后,能够直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。可是关闭链接时,当Server端收到FIN报文时,极可能并不会当即关闭SOCKET,因此只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端全部的报文都发送完了,我才能发送FIN报文,所以不能一块儿发送。故须要四步握手。另外,第四次挥手后,客户端会等待一段时间在释放链接,确保不会再次收到服务器的第三次挥手(服务器若是没收到客户端的第四次挥手则会尝试重发第三次挥手)。
也就是HTTP+SSL协议,具体流程如图:
问题:
经过本地权威证书的公钥解开发过来的证书,获得证书的信息摘要,对比证书内容。
由于单钥加解密比非对称加密效率高。非对称加密的核心效果只是用做签名(保证接收者接收的信息来自受信任的私钥密码拥有者或发送的消息只能被拥有私钥方解开)。