好看的单页面网站模板免费下载,ftp下的内部网站建设,国外免费wordpress,宠物app页面设计一、TCP/IP协议
Transmission Control Protocol/Internet Protocol的简写#xff0c;中译名为传输控制协议/因特网互联 协议#xff0c;是Internet最基本的协议、Internet国际互联网络的基础#xff0c;由网络层的IP协议和传输层的TCP 协议组成。协议采用了4层的层级结构。…一、TCP/IP协议
Transmission Control Protocol/Internet Protocol的简写中译名为传输控制协议/因特网互联 协议是Internet最基本的协议、Internet国际互联网络的基础由网络层的IP协议和传输层的TCP 协议组成。协议采用了4层的层级结构。然而在很多情况下它是利用 IP 进行通信时所必须用到的 协议群的统称。 对于TCP/IP四层模型我们可以简单的理解为
网络接入层将需要互相连接的节点接入网络中从而为数据传输提供条件。 网际互联层找到要传输数据的目标节点。IP协议 传输层实际传输数据。TCP、UDP协议 应用层使用接受到的数据HTTP、HTTPS、DNS协议 二、TCP与UDP协议
1、TCP协议
Transmission Control Protocol传输控制协议是一种传输层通信协议。
特点
面向连接、面向字节流、全双工通信、可靠
面向连接指的是要使用TCP传输数据必须先建立TCP连接传输完成后释放连接就像打电话一样必须先拨号建立一条连接打完后挂机释放连接。
全双工通信即一旦建立了TCP连接通信双方可以在任何时候都能发送数据。
可靠的指的是通过TCP连接传送的数据无差错不丢失不重复并且按序到达。
面向字节流流指的是流入到进程或从进程流出的字符序列。简单来说虽然有时候要传输的数据流太大TCP报文长度有限制不能一次传输完要把它分为好几个数据块 但是由于可靠性保证接收方可以按顺序接收数据块然后重新组成分块之前的数据流所以TCP看起来就像直接互相传输字节流一样面向字节流。
TCP建立连接
必须进行三次握手若A要与B进行连接则必须 第一次握手建立连接。客户端发送连接请求报文段将SYN位置为1Sequence Number为x然后客户端进入SYN_SEND状态等待服务器的确认。即A发送信息给B
第二次握手服务器收到客户端的SYN报文段需要对这个SYN报文段进行确认。即B收到连接信息后向A返回确认信息
第三次握手客户端收到服务器的SYNACK报文段并向服务器发送ACK报文段。即A收到确认信息后再次向B返回确认连接信息此时A告诉自己上层连接建立B收到连接信息后告诉上层连接建立。
这样就完成TCP三次握手 一条TCP连接建立完成 可以开始发送数据 为什么TCP建立连接需要三次握手
防止服务器端因为接收了早已失效的连接请求报文从而一直等待客户端请求从而浪费资源。
TCP释放连接四次挥手
现在假设A主动释放连接数据传输结束后通信的双方都可释放连接其释放TCP连接的过程如下
第一次握手 A发送释放信息到B发出去之后A-B发送数据这条路径就断了
第二次握手 B收到A的释放信息之后回复确认释放的信息我同意你的释放连接请求
第三次握手 B发送“请求释放连接“信息给A
第四次握手 A收到B发送的信息后向B发送确认释放信息我同意你的释放连接请求。
首先进行关闭的一方将执行主动关闭而另一方执行被动关闭。 为什么TCP释放连接需要四次挥手
为了保证双方都能通知对方“需要释放连接”即在释放连接后都无法接收或发送消息给对方。
需要明确的是TCP是全双工模式这意味着是双向都可以发送、接收的
释放连接的定义是双方都无法接收或发送消息给对方是双向的
当主机1发出“释放连接请求”FIN报文段时只是表示主机1已经没有数据要发送 / 数据已经全部发送完毕 但是这个时候主机1还是可以接受来自主机2的数据。
当主机2返回“确认释放连接”信息ACK报文段时表示它已经知道主机1没有数据发送了但此时主机2还是可以发送数据给主机1
当主机2也发送了FIN报文段时即告诉主机1我也没有数据要发送了此时主机1和2已经无法进行通信主机1无法发送数据给主机2主机2也无法发送数据给主机1此时TCP的连接才算释放。
2、UDP协议
User Data Protocol 用户数据报协议是与TCP相对应的协议。它是面向非连接的协议它不与对方建立连接而是直接就把数据包发送过去
特点
无连接的、不可靠的、面向报文、没有拥塞控制
无连接的和TCP要建立连接不同UDP传输数据不需要建立连接就像写信在信封写上收信人名称、地址就可以交给邮局发送了至于能不能送到就要看邮局的送信能力和送信过程的困难程度了。
不可靠的因为UDP发出去的数据包发出去就不管了不管它会不会到达所以很可能会出现丢包现象使传输的数据出错。
面向报文数据报文就相当于一个数据包应用层交给UDP多大的数据包UDP就照样发送不会像TCP那样拆分。
没有拥塞控制拥塞是指到达通信子网中某一部分的分组数量过多使得该部分网络来不及处理以致引起这部分乃至整个网络性能下降的现象严重时甚至会导致网络通信业务陷入停顿即出现死锁现象就像交通堵塞一样。TCP建立连接后如果发送的数据因为信道质量的原因不能到达目的地它会不断重发有可能导致越来越塞所以需要一个复杂的原理来控制拥塞。而UDP就没有这个烦恼发出去就不管了。
3、TCP与UDP区别总结
1、TCP面向连接如打电话要先拨号建立连接;UDP是无连接的即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说通过TCP连接传送的数据无差错不丢失不重复且按序到达;UDP尽最大努力交付即不保 证可靠交付
3、TCP面向字节流实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制因此网络出现拥塞不会使源主机的发送速率降低对实时应用很有用如IP电话实时视频会议等
4、每一条TCP连接只能是点到点的;UDP支持一对一一对多多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道UDP则是不可靠信道。
三、Http与Https协议
1、Http协议
HTTP协议是Hyper Text Transfer Protocol超文本传输协议的缩写,是用于从万维网 WWW:World Wide Web 服务器传输超文本到本地浏览器的传送协议。是应用层协议在TCP/IP协议接收到数据之后通过HTTP协议来解析才可以使用。 Http的请求过程
1、域名解析
2、发起TCP的3次握手
3、建立TCP连接后发起Http请求
4、服务器端响应Http请求并回传数据
5、客户端获取数据并解析展示在前端界面
6、关闭 TCP 连接
Http的特点
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应在请求结束后会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
HTTP的缺点
HTTP虽然使用极为广泛, 但是却存在不小的安全缺陷主要有以下3点
1明文传送。HTTP协议无法加密数据所有通信数据都在网络中明文“裸奔”。通过网络的嗅探设备及一些技术手段就可以窃取http的内容。
2无法证明报文的完整性。HTTP在传输客户端请求和服务端响应时, 唯一的数据完整性检验就是在报文头部包含了本次传输数据的长度, 而对内容是否被篡改不作确认。因此攻击者可以轻易的发动中间人攻击, 修改客户端和服务端传输的数据, 甚至在传输数据中插入恶意代码, 导致客户端被引导至恶意网站被植入木马。
3不验证通信方的身份。黑客可以伪装他人身份进通信。HTTP协议中的请求和响应不会对通信方进行确认。在HTTP协议通信时由于不存在确认通信方的处理步骤任何人都可以发起请求。另外服务器只要接收到请求不管对方是谁都会返回一个响应。
2、Https协议
Https是一种Http加密安全版的协议在Http连接的基础上对数据采用SSL的加密方式使得在没有密钥的情况下根本无法破解其中的数据保证了其中的安全性。它仍然使用的http进行数据的传输不同的是https传输的数据都是经过tcp和http之间的ssl层进行加密的。
在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性所谓的 HTTPS就是HTTP SSL/TLS。HTTPS 在HTTP 的基础下加入SSLHTTPS 的安全基础是 SSL因此加密的详细内容就需要 SSL。HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层在 HTTP与 TCP之间。这个系统提供了身份验证与加密通讯方法。
3、SSL协议
Secure Sockets Layer 安全套接字协议及其继任者传输层安全Transport Layer SecurityTLS是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。
4、对称加密
采用单钥密码系统的加密方法同一个密钥可以同时用作信息的加密和解密这种加密方法称为对称加密也称为单密钥加密。
需要对加密和解密使用相同密钥的加密算法。由于其速度快对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。
所谓对称就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则规定如何进行加密和解密。
因此加密的安全性不仅取决于加密算法本身密钥管理的安全性更是重要。因为加密和解密都使用同一个密钥如何把密钥安全地传递到解密者手上就成了必须要解决的问题因为任何人只要持有密钥就能解密了。
5、非对称加密
非对称加密算法实现机密信息交换的基本过程是甲方生成一对密钥并将公钥公开需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方
甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反使用乙方的公钥对数据进行加密同理乙方使用自己的私钥来进行解密。
另一方面甲方可以使用自己的私钥对机密信息进行签名后再发送给乙方乙方再用甲方的公钥对甲方发送回来的数据进行验签。
甲方只能用其私钥解密由其公钥加密后的任何信息。非对称加密算法的保密性比较好它消除了最终用户交换密钥的需要。
私有密钥不能让其他任何人知道而公开密钥则可以随意发布任何人都可以获得。使用公开密钥加密方式发送密文的一方使用对方的公开密钥进行加密处理对方收到被加密的信息后再使用自己的私有密钥进行解密。
利用这种方式不需要发送用来解密的私有密钥也不必担心密钥被攻击者窃听而盗走。
这种方式有以下缺点
1公钥是公开的所以针对私钥加密的信息黑客截获后可以使用公钥进行解密获取其中的内容。
2公钥并不包含服务器的信息使用非对称加密算法无法确保服务器身份的合法性存在中间人攻击的风险服务器发送给客户端的公钥可能在传送过程中被中间人截获并篡改
3非对称加密的加解密效率是非常低的而 http 的应用场景中通常端与端之间存在大量的交互非对称加密的效率是无法接受的。
在 HTTPS 的场景中只有服务端保存了私钥一对公私钥只能实现单向的加解密所以 HTTPS 中内容传输加密采取的是对称加密而不是非对称加密。
6、HTTPS请求流程
HTTPS就把对称加密和非对称加密结合起来在证书验证阶段使用非对称加密在数据传输阶段使用对称加密。
1客户端发起https请求将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器。
2服务器从算法列表中选择一种加密算法并将它和一份包含服务器公用密钥的SSL证书发送给客户端该证书还包含了用于认证目的的服务器标识如证书的发布机构CA、证书的有效期、证书所有者、签名等服务器同时还提供了一个用作产生密钥的随机数。
3客户端对服务器的证书进行验证 a. 首先浏览器读取证书中的证书所有者、有效期等信息进行逐个校验 b. 浏览器开始查找操作系统中已内置的受信任的证书发布机构CA与服务器发来的证书中的颁发者CA比对用于校验证书是否为合法机构颁发 c. 如果找到那么浏览器就会从操作系统中取出颁发者CA 的公钥然后对服务器发来的证书里面的签名进行解密如果找不到浏览器就会显示警告信息说明服务器发来的证书是不可信任的让用户选择
4抽取服务器的公用密钥然后再产生一个随机密码串并使用服务器的公用密钥对其进行加密非对称加 / 解密并将加密后的信息发送给服务器。
5服务器用私钥对随机密码串进行解密并且结合随机数值构造对称加密算法。
6客户端通过对称加密密钥对请求内容进行加密发送给服务器。
7服务器通过对称密钥对客户端发送的内容进行解密然后将响应内容通过对称密钥返回给客户端。
7、HTTPS 的工作原理
我们都知道 HTTPS 能够加密信息以免敏感信息被第三方获取所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用 HTTPS 协议。
1客户端发起 HTTPS 请求
用户在浏览器里输入一个 https 网址然后连接到 server 的 443 端口。
2服务端的配置
采用 HTTPS 协议的服务器必须要有一套数字证书可以自己制作也可以向组织申请区别就是自己颁发的证书需要客户端验证通过才可以继续访问而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥如果对公钥和私钥不太理解可以想象成一把钥匙和一个锁头只是全世界只有你一个人有这把钥匙你可以把锁头给别人别人可以用这个锁把重要的东西锁起来然后发给你因为只有你一个人有这把钥匙所以只有你才能看到被这把锁锁起来的东西。
3传送证书
这个证书其实就是公钥只是包含了很多信息如证书的颁发机构过期时间等等。
4客户端解析证书
这部分工作是有客户端的TLS来完成的首先会验证公钥是否有效比如颁发机构过期时间等等如果发现异常则会弹出一个警告框提示证书存在问题。如果证书没有问题那么就生成一个随机值然后用证书对该随机值进行加密就好像上面说的把随机值用锁头锁起来这样除非有钥匙不然看不到被锁住的内容。
5传送加密信息
这部分传送的是用证书加密后的随机值目的就是让服务端得到这个随机值以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
6服务端解密信息
服务端用私钥解密后得到了客户端传过来的随机值(私钥)然后把内容通过该值进行对称加密所谓对称加密就是将信息和私钥通过某种算法混合在一起这样除非知道私钥不然无法获取内容而正好客户端和服务端都知道这个私钥所以只要加密算法够彪悍私钥够复杂数据就够安全。
7传输加密后的信息
这部分信息是服务段用私钥加密后的信息可以在客户端被还原。
8客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息于是获取了解密后的内容整个过程第三方即使监听到了数据也束手无策。
8、Http与Https差异比较
1https协议需要到ca申请证书一般免费证书很少需要交费。
2http是超文本传输协议信息是明文传输https 则是具有安全性的ssl加密传输协议。
3http和https使用的是完全不同的连接方式用的端口也不一样前者是80后者是443。
4http的连接很简单是无状态的HTTPS协议是由SSLHTTP协议构建的可进行加密传输、身份认证的网络协议比http协议安全。
5HTTPS基于传输层HTTP基于应用层。