各种⽹络协议的类型、优缺点、作⽤
⼀、⽹络协议的定义
● ⽹络协议是⼀种特殊的软件,是计算机⽹络实现其功能的基本机制
● ⽹络协议的本质是规则,即各种硬件和软件必须遵循的共同规则
● ⽹络协议并不是⼀套单独的软件,他融合于其他所有软件系统中,协议在⽹络中⽆所
不在
⼆、常⽤的⽹络协议
TCP UDP HTTP HTTPS FTP DNS Telnet TCP/IP SSL/TLS websocket
1、TCP协议,(transmission control protocol),传输控制协议。
定义:TCP协议是⼀种⾯向连接的、可靠的、传输速度慢、基于字节流的传输层通信协议。
在简化的计算机⽹络OSI模型中完成第四层传输层所指定的功能。
提供可靠的端到端的通信,可以保证接收⽅收到的数据与发送⽅发送的数据完全⼀致,能够保证数据不丢失、⽆差错,同时还有流量控制和拥塞控制的功能,所以TCP协议⽐较复杂,能够为要求可靠性的应⽤层协议提供服务,如⽂件传输、邮件收发、⽹页浏览、远程登录等等
作⽤:主要⽤于在主机间建⽴⼀个虚拟连接,以实现⾼可靠性的数据包交换
IP协议的作⽤:可以进⾏IP数据包的分割和组装
IP协议的缺点:但是通过IP协议并不能清楚的了解到数据包是否顺利的发送给⽬标计算机
TCP的特点:
(1)⾯向连接的
(2)提供可靠的数据传输服务
(3)提供流量控制。TCP能够控制进程发送数据的速率,保证另⼀端不被⼤量的数据“淹没”⽽出现溢出。
(4)提供拥塞控制。当⽹络出现拥塞的时候,TCP能够减⼩向⽹络注⼊数据的速率和数量,缓解拥塞。
(5)提供全双⼯通信。TCP提供双向的数据传输服务。TCP允许通信双⽅的应⽤进程在任何时候发送数据。TCP连接的两端都设有发送缓存和接收缓存,⽤来临时存放双向通信的数据。
(6)TCP是⾯向字节流的。TCP中的“流”是指流⼊到进程或从进程流出的字节
2、UDP协议
⽤户数据包协议(User Datagram Protocol)
UDP协议不能保证数据不丢失、⽆差错,也不能保证接收⽅收到数据的顺序和发送⽅发送数据的顺序⼀样。UDP协议⽐较简单,但效率⽐较⾼,能为对可靠性要求不⾼,对实时性要求⽐较⾼的应⽤提供服务,如传输⾳频和视频。
定义:UDP协议是OSI(Open System Interconnection,开放式系统互联)模型中的⼀种
⽆连接的、简单不可靠的、传输速度快、⾯向事务的传输层通信协议。
UDP协议的特点:
(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较少
3、TCP/IP协议
实质: TCP/IP其实就是TCP和IP等协议的组合,即传输控制协议/互联⽹协议。
应⽤场景:主要⽤于在安装了不同硬件和不同操作系统的计算机之间,实现可靠的⽹络通
信。TCP协议可以保证数据包传输的可靠性;IP协议可以保证数据包被传输到
⽬标计算机上。
4、FTP协议
⽂件传输协议(File Transfer Protocol)。
⽤途:主要⽤于在两台计算机之间实现⽂件的上传与下载,其中⼀台计算机作为FTP的客
户端,另⼀台作为FTP的服务端。通过FTP协议可以上传、下载⼏乎所有的⽂件类
型,⽐如txt exe doc pdf mp3 zip rar等
5、Telnet协议
定义:远程登录协议,是Internet上普遍采⽤的仿真⽹络协议,同时Telnet也是从远程
位置登录常⽤的程序。
作⽤:通过Telnet程序登录远程Telnet计算机。⼀般采⽤授权的⽤户名和密码登录。登录
之后就如同使⽤本地计算机⼀样,使⽤远程计算机的的硬盘、运⾏应⽤程序等。
6、DNS协议
DNS(Domain Name System,域名系统),因特⽹上作为域名和IP地址相互映射的⼀个分布式数据库,能够使⽤户更⽅便的访问互联⽹,⽽不⽤去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
作⽤:
● 该协议主要负责将域名转换成⽹络可以识别的IP地址(转换成221.122.32.15),域名和IP地址是⼀⼀对应的。
● 因为访问⽹站的时候,最终都是转换成IP地址进⾏访问的
● 直接设置DNS服务器。可以提⾼⽹络的访问速度,保证访问的正确性
DNS的两种查询⽅式:递归查询和迭代查询
a)递归解析
当局部DNS服务器⾃⼰不能回答客户机的DNS查询时,它就需要向其他DNS服务器进⾏查询。此时有两种⽅式,如图所⽰的是递归⽅式。局部DNS服务器⾃⼰负责向其他DNS服务器进⾏查询,⼀般是先向该域名的根域服务器查询,再由根域名服务器⼀级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。
b)迭代解析
当局部DNS服务器⾃⼰不能回答客户机的DNS查询时,也可以通过迭代查询的⽅式进⾏解析,如图所⽰。局部DNS服务器不是⾃⼰向其他DNS服务器进⾏查询,⽽是把能解析该域名的其他DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进⾏查询,直到得到查询结果为⽌。也就是说,迭代解析只是帮你到相关的服务器⽽已,⽽不会帮你去查。⽐如说:baidu的服务器ip地址在192.168.4.5这⾥,你⾃⼰去查吧,本⼈⽐较忙,只能帮你到这⾥了。
7、HTTP协议
超⽂本传输协议( Hyper Text Transfer Protocol )
定义:● 是⽤于从万维⽹(www)服务器传输超⽂本到本地浏览器的传送协议
● 是 基于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来取得变量的值
8、SSL/TLS协议
● SSL(Secure Sockets Layer),安全套接层。上世纪90年代由⽹景公司设计。原先互 联⽹使⽤的HTTP协议是明⽂的,存在很多缺点(传输内容会被偷窥(嗅探)和篡改)。 SSL就是为了解决这些问题
● 到了1999年,SSL因为⼴泛应⽤,已经成为互联⽹上的事实标准。IETF就在那⼀年把
SSL标准化,标准化名称改为TLS(Transport Layer Security),传输层安全协议
● SSL和TLS是同⼀个东西的不同阶段
9、HTTPS协议
定义:HTTPS协议是HTTP协议和SSL/TLS协议的组合
为什么要设计HTTPS成这样:
● 兼容性:基于TCP传输;单独使⽤新的协议将HTTP,把HTTP协议包裹起来
● 可扩展性
● 保密性(防泄密)
● 完整性(防篡改)
● 真实性(防假冒)
● 性能
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论