常见网络协议考察知识点
说说 http,https 协议;
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议: 它是一个安全通信通道,它基于 HTTP 开发,用于在客户计算机和服务器之间交换信息,它使用安全套接字层(SSL)进行信息交换,简单来说它是 HTTP 的安全版。它是由 Netscape 开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS 实际上应用了 Netscape 的安全全套接字层(SSL)作为 HTTP 应用层的子层。(HTTPS 使用端口 443,而不是象 HTTP 那样使用端口 80 来和 TCP/IP 进行通信。)
SSL 使用 40 位关键字作为 RC4 流加密算法,这对于商业信息的加密是合适的。HTTPS 和 SSL 支持使用 X.509 数字认证,如果需要的话用户可以确认发送者是谁。总的来说,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议要比 http 协议安全。在 URL 前加 https://前缀表明是用 SSL 加密的,你的电脑与服务器之间收发的信息传输将更加安全。 Web 服务器启用 SSL 需要获得一个服务器证书并将该证书与要使用 SSL 的服务器绑定。
HTTPS 和 HTTP 的区别:
https 协议需要到 ca 申请证书,一般免费证书很少,需要交费。 http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。
http 和 https 使用的是完全不同的连接方式用的端口也不一样,前者是 80,后者是 443。 http 的连接很简单,是无状态的。 HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议 要比 http 协议安全。
HTTPS 解决的问题:
1 . 信任主机的问题.
采用 https 的 server 必须从 CA 申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的 server 的时候,客户度才信任此主机. 所以目前所有的银行系统网站,关键部分应用都是 https 的.
客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的 server ,采用的证书不管自己 issue 还是从公众的地方 issue, 客户端都是自己人,所以我们也就肯定信任该 server. 2 . 通讯过程中的数据的泄密和被窜改
一般意义上的 https, 就是 server 有一个证书.
2). 少许对客户端有要求的情况下,会要求客户端也必须有一个证书.
a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个 CA 认证过的身份. 应为个人证书一般来说别人无法模拟的,所有这样能够更深的确认自己的身份.
b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿 U 盘作为一个备份的载体.
3 .HTTPS 一定是繁琐的.
a) 本来简单的 http 协议,一个 get 一个 response. 由于 https 要还密钥和确认加密算法的需要.单握手就需要 6/7 个往返. i. 任何应用中,过多的 round trip 肯定影响性能.
b) 接下来才是具体的 http 协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密. i. 尽管对称加密/解密效率比较高,可是仍然要消耗过多的 CPU,为此有专门的 SSL 芯片. 如果 CPU 信能比较低的话,肯定会降低性能,从而不能 serve 更多的请求. ii. 加密后数据量的影响. 所以,才会出现那么多的安全认证提示
tcp/ip 协议簇;
TCP/IP 协议簇是 Internet 的基础,也是当今最流行的组网形式。TCP/IP 是一组协议的代名词,包括许多别的协议,组成了 TCP/IP 协议簇。其中比较重要的有 SLIP 协议、PPP 协议、IP 协议、ICMP 协议、ARP 协议、TCP 协议、UDP 协议、FTP 协议、DNS 协议、SMTP 协议等。
TCP/IP 协议并不完全符合 OSI 的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的 7 层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。而 TCP/IP 通讯协议采用了 4 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求
SLIP 协议编辑 SLIP 提供在串行通信线路上封装 IP 分组的简单方法,使远程用户通过电话线和 MODEM 能方便地接入 TCP/IP 网络。
SLIP 是一种简单的组帧方式,但使用时还存在一些问题。首先,SLIP 不支持在连接过程中的动态 IP 地址分配,通信双方必须事先告知对方 IP 地址,这给没有固定 IP 地址的个人用户上 INTERNET 网带来了很大的不便。其次,SLIP 帧中无校验字段,因此链路层上无法检测出差错,必须由上层实体或具有纠错能力 MODEM 来解决传输差错问题。
PPP 协议编辑为了解决 SLIP 存在的问题,在串行通信应用中又开发了 PPP 协议。PPP 协议是一种有效的点对点通信协议,它由串行通信线路上的组帧方式,用于建立、配制、测试和拆除数据链路的链路控制协议 LCP 及一组用以支持不同网络层协议的网络控制协议 NCPs 三部分组成。
PPP 中的 LCP 协议提供了通信双方进行参数协商的手段,并且提供了一组 NCPs 协议,使得 PPP 可以支持多种网络层协议,如 IP,IPX,OSI 等。另外,支持 IP 的 NCP 提供了在建立链接时动态分配 IP 地址的功能,解决了个人用户上 INTERNET 网的问题。
IP 协议编辑即互联网协议(Internet Protocol),它将多个网络连成一个互联网,可以把高层的数据以多个数据包的形式通过互联网分发出去。IP 的基本任务是通过互联网传送数据包,各个 IP 数据包之间是相互独立的。
ICMP 协议编辑即互联网控制报文协议。从 IP 互联网协议的功能,可以知道 IP 提供的是一种不可靠的无连接报文分组传送服务。若路由器或主机发生故障时网络阻塞,就需要通知发送主机采取相应措施。为了使互联网能报告差错,或提供有关意外情况的信息,在 IP 层加入了一类特殊用途的报文机制,即 ICMP。
分组接收方利用 ICMP 来通知 IP 模块发送方,进行必需的修改。ICMP 通常是由发现报文有问题的站产生的,例如可由目的主机或中继路由器来发现问题并产生的 ICMP。如果一个分组不能传送,ICMP 便可以被用来警告分组源,说明有网络,主机或端口不可达。ICMP 也可以用来报告网络阻塞。
ARP 协议编辑即地址转换协议。在 TCP/IP 网络环境下,每个主机都分配了一个 32 位的 IP 地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网上传送,必须知道彼此的物理地址。这样就存在把互联网地址变换成物理地址的转换问题。这就需要在网络层有一组服务将 IP 地址转换为相应物理网络地址,这组协议即 ARP。
TCP 协议编辑即传输控制协议,它提供的是一种可靠的数据流服务。当传送受差错干扰的数据,或举出网络故障,或网络负荷太重而使网际基本传输系统不能正常工作时,就需要通过其他的协议来保证通信的可靠。TCP 就是这样的协议。TCP 采用“带重传的肯定确认”技术来实现传输的可靠性。并使用“滑动窗口”的流量控制机制来提高网络的吞吐量。TCP 通信建立实现了一种“虚电路”的概念。双方通信之前,先建立一条链接然后双方就可以在其上发送数据流。这种数据交换方式能提高效率,但事先建立连接和事后拆除连接需要开销。
UDP 协议编辑即用户数据包协议,它是对 IP 协议组的扩充,它增加了一种机制,发送方可以区分一台计算机上的多个接收者。每个 UDP 报文除了包含数据外还有报文的目的端口的编号和报文源端口的编号,从而使 UDP 软件可以把报文递送给正确的接收者,然后接收者要发出一个应答。
由于 UDP 的这种扩充,使得在两个用户进程之间递送数据包成为可能。我们频繁使用的 OICQ 软件正是基于 UDP 协议和这种机制。
FTP 协议编辑即文件传输协议,它是网际提供的用于访问远程机器的协议,它使用户可以在本地机与远程机之间进行有关文件的操作。FTP 工作时建立两条 TCP 链接,分别用于传送文件和用于传送控制。FTP 采用客户/服务器模式?它包含客户 FTP 和服务器 FTP。客户 FTP 启动传送过程,而服务器 FTP 对其作出应答。
DNS 协议编辑即域名服务协议,它提供域名到 IP 地址的转换,允许对域名资源进行分散管理。DNS 最初设计的目的是使邮件发送方知道邮件接收主机及邮件发送主机的 IP 地址,后来发展成可服务于其他许多目标的协议。
SMTP 协议编辑即简单邮件传送协议互联网标准中的电子邮件是一个简单的基于文本的协议,用于可靠、有效地数据传输。SMTP 作为应用层的服务,并不关心它下面采用的是何种传输服务,它可通过网络在 TXP 链接上传送邮件,或者简单地在同一机器的进程之间通过进程通信的通道来传送邮件,这样,邮件传输就独立于传输子系统,可在 TCP/IP 环境或 X.25 协议环境中传输邮件。
tcp,udp 区别;
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个 TCP 连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,
只简单的描述下这三次对话的简单过程:主机 A 向主机 B 发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机 B 向主机 A 发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机 A 再发出一个数据包确认主机 B 的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机 A 才向主机 B 正式发送数据
UDP(User Data Protocol,用户数据报协议)
(1) UDP 是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP 传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP 把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3) UDP 信息包的标题很短,只有 8 个字节,相对于 TCP 的 20 个字节信息包的额外开销很小。
(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5)UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
(6)UDP 是面向报文的。发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付给 IP 层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。我们经常使用“ping”命令来测试两台主机之间 TCP/IP 通信是否正常,其实“ping”命令的原理就是向对方主机发送 UDP 数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。
UDP 的包头结构:源端口 16 位目的端口 16 位长度 16 位校验和 16 位
TCP 与 UDP 的区别:
1 .基于连接与无连接;
2 .对系统资源的要求(TCP 较多,UDP 少);
3 .UDP 程序结构较简单;
4 .流模式与数据报模式 ;
5 .TCP 保证数据正确性,UDP 可能丢包,TCP 保证数据顺序,UDP 不保证。
版权声明: 本文为 InfoQ 作者【浅羽技术】的原创文章。
原文链接:【http://xie.infoq.cn/article/f1edc4365c6eb2fb8d819c437】。文章转载请联系作者。
评论