网络协议,你了解了吗

目录

1.前言

1.1 为什么需要了解网络协议?

   1.2 OSI七层模型与TCP/IP四层概念模型

2.网络协议

   2.1 什么是网络协议

      2.1.1 网络协议的组成

   2.2 网络协议的类型

   2.3 TCP协议

   2.4 UDP协议

   2.5 HTTP协议

      2.5.1 http与RPC的区别

   2.6 HTTPS协议

   2.7 websocket协议

3.总结


1.前言

作为一个软件开发人员,以前认为,精通开发技术就ok了。其实不然,要想进阶,还需要从点到面,不仅要深度,也需要提升自己的技术知识广度。

那么,今天所要分享学习的网络协议便是技术栈中,需要了解的一项。

1.1 为什么需要了解网络协议?

首先,如果你做通讯业务开发,或是与某其他语种之间进行数据传递,那么网络协议,可谓是必修课。因为你不清楚协议规则,就不能很好的开发完成以上但不仅限的工作内容。

其次,很多人可能会说,我不做上面说的那些相关工作。那么,网络协议也是我们需要了解到的选修课。因为我们不仅要了解业务间的接口调用周期,也需要熟悉一个请求,是如何在网络间,从一个网络端传递到另一个网络端的。

1.2 OSI七层模型与TCP/IP四层概念模型

在介绍网络协议之前,我觉得有必要先说一下OSI七层模型(开放式系统互联通信参考模型)与TCP/IP四层概念模型。因为这样,大家才能有一个由表及里的带入感。从整体,到局部,这样才能了解的更全面。

这个模型图介绍的很详细,但看上去也过于复杂。下面我们用一张表格进行概括:

表格里的内容,用一个图简单汇总对比。更直观的了解,如下:

而我们做开发的,其实主要打交道的就是上图TCP/IP模型中的应用层和传输层了。以下也主要针对这两层的协议做一下具体学习。

 

2.网络协议

2.1 什么是网络协议

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

2.1.1 网络协议的组成

  • 语义,解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。

  • 语法,用户数据与控制信息的结构与格式,以及数据出现的顺序。

  • 时序,对事件发生顺序的详细说明。

可以形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。

2.2 网络协议的类型

常用的网络协议有如下类型:TCP  UDP     HTTP   HTTPS    FTP  DNS  Telnet    TCP/IP    SSL/TLS   websocket

下面主要介绍一下我们常见且常用的几种协议:

2.3 TCP协议

定义:TCP协议是一种面向连接的、可靠的、传输速度慢、基于字节流传输层通信协议

作用:主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换

特点

(1)面向连接的

(2)提供可靠的数据传输服务

(3)提供流量控制。TCP能够控制进程发送数据的速率,保证另一端不被大量的数据“淹没”而出现溢出。

(4)提供拥塞控制。当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞。

(5)提供全双工通信。TCP提供双向的数据传输服务。TCP允许通信双方的应用进程在任何时候发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。

(6)TCP是面向字节流的。TCP中的“流”是指流入到进程或从进程流出的字节

2.4 UDP协议

定义:UDP协议是OSI(Open System Interconnection,开放式系统互联)模型中的一种无连接的、简单不可靠的、传输速度快、面向事务传输层通信协议

特点

(1)无连接的。

(2)UDP是一种尽力而为的服务方式,不提供可靠的数据传输服务(比如数据的丢失、重复和无序)。

(3)UDP是高效的传输协议。

(4)UDP没有拥塞控制和流量控制。

TCP和UDP协议的区别

A、TCP面向连接(打电话要先拨号建立连接);

      UDP是无连接的(发送数据之前不需要建立连接)。

B、TCP提供可靠的服务(通过TCP连接传送的数据,无差错、不丢失、不重复、按序到达);

      UDP尽最大努力交付,不保证可靠交付。

C、TCP基于字节流(实际上是TCP把数据看成一连串无结构的字节流)。

      UDP是基于报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低

     (对实时应用很有用,IP电话,实时视频电话)。

D、TCP保证数据正确性;

      UDP可能丢包。

E、TCP保证数据顺序;

      UDP不保证。

F、每一条TCP连接只能是点到点的;

     UDP支持一对一、一对多、多对一、多对多的交互通信

G、TCP的逻辑通信信道是全双工的可靠信道

      UDP则是不可靠信道

H、TCP的首部开销20字节

       UDP的首部开销8字节

I、TCP要求系统资源较多,UDP较少
 

2.5 HTTP协议

定义:● 是用于从万维网(www)服务器传输超文本到本地浏览器的超文本传送协议( Hyper Text Transfer Protocol )

           ● 是 基于TCP/IP通信协议来传递数据(HTML、图片、查询结果等)的协议

           ● 是一个属于应用层的、面向对象的协议

           ● 由于其简捷、快速的适用于分布式超媒体信息系统

工作原理:HTTP协议工作在客户端-服务端架构上。

                  浏览器作为HTTP客户端通过URL向HTTP服务端(即WEB服务器)发送请求,

                  WEB服务器根据接收到的请求后,向客户端发送响应信息。

HTTP请求/响应的步骤:

               A、客户端连接到web服务器:一个HTTP客户端通常是浏览器,与web服务器的

                    HTTP端口(默认为80)建立一个TCP套接字连接

               B、发送HTTP请求:通过TCP套接字,客户端向web服务器发送一个文本的请求

                    报文,一个请求报文由请求行、请求头部、空行和请求数据组成

               C、服务器接收请求并返回HTTP响应:WEB服务器解析请求,定位请求资源。服

                     务器将资源副本写到TCP套接字,由客户端读取。一个响应由状态行、响应头

                     部、空行、响应数据组成

               D、释放TCP连接:若connection模式为close,则服务器主动关闭TCP连接,客户

                     端被动关闭连接,释放TCP连接;若connection模式为keepalive,则该连接

                     会保持一段时间,在该时间内可以接着接收请求

                E、客户端(浏览器)解析HTML内容:客户端首先解析状态行,查看表明请求是

                     否成功的状态代码  ;然后解析每一个响应头,向应头告知以下为若干字节的

                      HTML文档和文档的字符集。客户端读取响应数据HTML,根据HTML的语法

                      对其进行格式化,并在浏览器窗口中显示

特点:● 无连接:其含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收

                   到客户的应答后,断开连接,可以节省传输时间

           ● 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。

                               缺少状态意味着如果后续处理需要前面的信息,则必须重传。这可能导致

                               每次连接传送的数据量增大。但是在服务器不需要先前信息时,他的应答

                               就较快

           ● 简单快速:客户向服务器发送请求时,只需传送请求方法和路径。

                                   请求方法常用POST  GET  HEAD,每种方法规定了客户与服务器联系的

                                   类型不同。

                                   HTTP协议简单,似的HTTP服务器的程序规模小,因而通信速度快

           ● 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type

                              标记

           ● 支持B/S   C/S模式

 HTTP请求方法:HTTP1.0定义三种方法,即POST   GET   HEAD

                            HTTP1.1新增5种方法,OPTIONS   PUT  DELETE  TRACE  CONNECT

                 ● GET:请求指定页面信息,并返回实体主体

                 ● POST:向指定资源提交数据进行处理请求(例如提交表单、上传文件)

                 ● HEAD:类似GET请求,只不过返回的响应中没有具体的内容,用于获取报头

                 ● PUT:从客户端向服务器传送的数据取代指定的文档的内容

                 ●  DELETE:请求服务器删除指定的页面

                 ●  CONNECT:HTTP/1.1协议中预留给能够将连接改为管道式的代理服务器

                 ●  OPTIONS:允许客户端查看服务器的性能

                 ● TRACE:回显服务器收到的请求,主要用于测试或诊断

 POST和GET的区别:

                 ● GET提交的数据会显示在地址栏中(即数据放在URL之后,以?分割URL和传输的

                    数据,参数之间以&相连);

                   POST提交的数据放在HTTP包的body中,因此地址栏不会显示提交的数据

                 ● GET提交的数据大小有限制(因为浏览器对URL的长度有限制);

                    POST提交的数据没有限制

                 ● GET方式提交数据会带来安全问题,比如登录页面,通过GET方式提交数据时,

                    用户名和密码会出现在地址栏上,如果页面可以被缓存或者其他人可以访问这台

                    机器,就可以从历史记录获得该用户的用户名和密码。

                     POST不存在安全问题

                ● GET方式需要使用Request.QueryString来取得变量的值

                    POST通过Request.Form来取得变量的值

2.5.1 http与RPC的区别

  • 最本质的区别,就是RPC主要是基于TCP/IP协议的,而HTTP主要是基于HTTP协议的。
  • HTTP协议是在传输层协议TCP之上的应用层,效率上,RPC当然是要更胜一筹

2.6 HTTPS协议

定义:HTTPS协议是HTTP协议和SSL/TLS协议的组合

特点:

    ● 兼容性:基于TCP传输;单独使用新的协议将HTTP,把HTTP协议包裹起来

    ● 可扩展性

    ● 保密性(防泄密)

    ●  完整性(防篡改)

    ● 真实性(防假冒)

    ● 性能

对称加密:“加密”和“解密”使用“相同密钥”

非对称加密:加密”和“解密”使用“不同密钥”

对称加密和非对称加密的优缺点

    ● ”非对称加密“的功能比”对称加密“的功能要多

    ● ”非对称加密“涉及复杂的数学问题,所以其性能相对”对称加密“要差

2.7 websocket协议

①WebSocket 是Web应用程序的传输协议,是一个Html5协议,它提供了双向的,按序到达的数据流

②WebSocket的连接是持久的,他通过在客户端和服务器之间保持双工连接,服务器的更新可以被及时推送给客户端,而不需要客户端以一定时间间隔去轮询 

③WebSocket 连接允许客户端和服务器之间进行全双工通信,以便任一方都可以通过建立的连接将数据推送到另一端。④WebSocket 只需要建立一次连接,就可以一直保持连接状态,这相比于轮询方式的不停建立连接显然效率要大大提高

3.总结

本篇内容主要是对网络模型以及协议做了一个整体性的介绍,针对协议规则和使用没有做具体介绍,有兴趣的朋友可自行了解。后续有时间,我可能会补充相关内容。但通过这篇文章,我相信一般人应该都对网络协议方面也有了一个深刻的认识。

参考链接:

https://www.jianshu.com/p/177cf254d596

https://www.cnblogs.com/xyjknb/archive/2019/07/09/11160752.html

https://blog.csdn.net/qdmoment/article/details/94635734

https://blog.csdn.net/qq_41923622/article/details/85805003

发布了43 篇原创文章 · 获赞 39 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/yy339452689/article/details/103918785