计算机网络协议 TCP、IP、HTTP、HTTPS
一、HTTP (HyperText Transfer Protocol 超文本传输协议)
HyperText 超文本
Transfer 传输
Protocol 协议
按范围大小来说:协议>传输>超文本
HyperText 超文本:文字、图片、视频、音频等能被计算机解析的二进制数据包,被传统定义扩大的语义,称为超文本;
Transfer 由传输载体(光缆,电话线,电缆等)把超文本解析问二进制数据包由一个计算机终端传输到另一个计算机重点的过程叫做传输;
Protocol 协议,就是网络传输过程中需要遵守的规范。
二、TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,同时是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。
2.1、TCP/IP分层管理图
也有按4层或者7层的分类说法。
问:为何要分层?
答:在设计的角度来讲变得灵活了,当某一层需要修改时,只需要拿掉对相应的层,实现可拔插,无需变动所有层。对于使用者来讲,屏蔽了底层复杂的传输过程。
2.2、应用层
TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。这一层主要的代表有DNS域名解析/http协议
2.3、传输层
在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP和用户数据报协议UDP
2.4、 网络层
网络层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。网络层定义了分组格式和
协议,即IP协议(Internet Protocol )
2.5、物理层
该层负责 比特流在节点之间的传输,即负责物理传输,这一层的协议既与链路有关,也与传输的介质有关。通俗来说就是把计算机连接起来的物理手段
2.6、数据链路层
控制网络层与物理层之间的通信,主要功能是保证物理线路上进行可靠的数据传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据结构的结构包,他不仅包含原始数据,还包含发送方和接收方的物理地址以及纠错
和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧无差错到达。如果在传达数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧
2.7、UDP和TCP的区别
UDP(User Datagram Protocol)用户数据报协议
特点:
- 无连接,尽最大努力的交付;
- 面向报文;无拥塞控制;
- 支持一对一、一对多、多对一、多对多的交互通信;
- 首部开销小(只有四个字段:源端口、目的端口、长度、检验和;
- UDP是面向报文的传输方式是应用层交给UDP多长的报文,UDP发送多长的报文,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。
TCP(Transmission Control Protocol)传输控制协议
特点:
- 面向连接;每一个TCP连接只能是点对点的(一对一);
- 提供可靠交付服务;
- 提供全双工通信;
- 面向字节流;
- 应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流;
- TCP有一个缓冲,当应该程序传送的数据块太长,TCP就可以把它划分短一些再传送。
2.8、TCP三次握手和四次挥手
流程:
- 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=y,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认 ;
- 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=y+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态;
- 第三次握手: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 报文段后,向服务端发送 ACK 报文段,然后客户端进入 TIME_WAIT状态。服务端收到客户端的 ACK 报文段以后,就关闭连接。此时,客户端等待2MSL(指一个片段在网络中最大的存活时间)后依然没有收到回复,则说明服务端已经正常关闭,这样客户端就可以关闭连接了。
问题一:为什么要四次挥手?
答:客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。
问题二:http长链接(持久连接)?
答:如果有大量的连接,每次在连接,关闭都要经历三次握手,四次挥手,这显然会造成性能低下。因此。Http 有一种叫做 长连接(keepalive connections) 的机制。它可以在传输数据后仍保持连接,当客户端需要再次获取数据时,直接使用刚刚空闲下来的连接
而无需再次握手。
三、HTTP和HTTPS的区别和优缺点
3.1、HTTP
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
3.2 、HTTP的特点
- 无状态 。协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作。
- 无连接。HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和 流量。
- 基于请求和响应。 基本的特性,由客户端发起请求,服务端响应。
- 简单快速、灵活。
- 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性。
3.3、HTTP报文组成
- 请求行:包括请求方法、URL、协议/版本;
- 请求头(Request Header);
- 请求正文;
- 状态行;
- 响应头;
- 响应正文。
3.4、缺点
- 通信使用明文(不加密),内容可能会被窃听;
- 不验证通信方的身份,因此有可能遭遇伪装;
- 无法证明报文的完整性,所以有可能已遭篡改。
3.5、HTTPS
是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。通常,HTTP 直接和 TCP 通信。当使用 SSL时,则演变成先和 SSL通信,再由 SSL和 TCP 通信了。简言之,所谓 HTTPS,其实就是身披SSL协议这层外壳的 HTTP。
3.6、HTTPS通讯方式
- 客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接;
- Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端;
- 客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级;
- 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站;
- Web服务器利用自己的私钥解密出会话密钥;
- Web服务器利用会话密钥加密与客户端之间的通信。
3.7、为什么https安全?
- SSL不仅提供加密处理,加密方式为混合加密;
- SSL而且还使用了一种被称为证书的手段,可用于确定方。证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。另外,伪造证书从技术角度来说是异常困难的一件事。所以只要能够确认通信方(服务器或客户端)持有的证书。
3.8、加密方式
1、对称加密
加密和解密同用一个密钥的方式称为共享密钥加密(Common keycrypto system),也被叫做对称密钥加密。
缺点:对成加密的方式效率比较低,加密速度慢。另外对称加密存在安全隐患的问题,堆成加密的密钥必须要传到对方对方才能解密,要是对方在密钥传输的过程获取到密钥,那不是密钥失去了加密的意义,所以完全使用对称加密也是不安全的。
2、非对称加密
公开密钥加密使用一对非对称的密钥。一把叫做私有密钥(private key),另一把叫做公开密钥(public key)。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。公钥加密,私钥解密使用公开密钥加密方式,发送密
文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。
缺点:那么非对称个加密就一定安全吗?非对称加密也不安全,为什么呢?因为存在中间伪造公钥和私钥,假如在公钥传给对方的时候,有人获取到公钥,虽然她不能用你的公钥做什么,但是它截获公钥后,把自己伪造的公钥发送给对方,这样对方获取的就不
是真正的公钥,当对方用公钥进行加密文件,再将文件发送给对方,这样即使截获人没有获取到真正的私钥,但是加密时的公钥是截获人的,他获取到加密文件,只需要用自己的私钥进行解密就成功获取到文件了。
3、混合加密
对称加密和非对称加密的方式相结合。
如何证明公开没要本身的真实性。因为在公开秘钥传输的过程中,可能真正的公开秘钥已经被攻击者替换掉了。
为了解决上述问题,于是除了CA认证证书。服务器将CA证书发送给客户端,以进行公开密钥加密方式通信。接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:
- 认证服务器的公开密钥的是真实有效的数字证书认证机构;
- 服务器的公开密钥是值得信赖的。
那么公开密钥如何交接给客户端是一件非常重要的事,因此多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥,这样就确保公钥是使用认证机构的公钥避免了公钥伪造的过程,进而确保了安全。