我是靠谱客的博主 无语柚子,最近开发中收集的这篇文章主要介绍常见协议总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。

本文将讲解数据链路层协议ARP、网络层协议IP、传输层协议TCP和UDP、应用层协议HTTP、FTP、POP3等常用协议。

(1)ARP协议(2)IP报文(3)ICMP报文(4)TCP三次握手(5)UDP协议

(6)HTTP协议(7)FTP(8)POP3和SMTP协议(9)DHCP(10)常用端口及协议

1.    ARP协议

在以太网中,源主机和目标主机进行通信,那么必须要知道目标主机的IP地址与MAC地址。通常目标主机的IP地址容易获得,如 ping 192.168.1.2,那么目标主机的MAC地址怎么获得呢?它是通过ARP地址解析协议获得的。ARP地址解析协议(address resolution protocol)基本功能是通过目标主机的IP地址查询目标主机的MAC地址,使源主机获得目标IP与MAC地址的对应关系,然后完成正常通信。ARP地址解析协议的工作原理如下。

①同一网段的主机间的ARP地址解析过程

源主机发送数据前只知道目标主机的IP地址,不知道目标主机的MAC地址,这时主机A将数据封装成ARP请求消息广播,以广播的形式发送数据。同一网段内的计算机都会收到该广播,然后收到广播的主机B会从数据帧中得到目标IP地址,并与自己的IP地址对比,如果IP地址不一样,则网络接口卡不作回应并扔掉此数据报(注:此时非目标主机已经接收到了数据,只是把它丢弃了)。主机C也收到这个广播,并发现目标IP地址与自己相同,因此主机C将此数据报拷贝从网络接口卡到自己的内存中,并将自己的MAC地址填到数据帧中,以单播形式作出应答。

②不同网段的主机间的ARP地址解析过程


上面是同一网段两主机通信时,地址解析情况,但很多情况下,两个通信主机不是在同一个网段里的。而不同网段用路由器连接,路由器会隔离广播,那么这时源主机的ARP地址解析请求如何被发送到目标主机B?

第一步是主机A广播请求路由器到R1,主机A得到路由器R1的MAC地址,然后主机A将真正的数据发给路由器R1的E1/0接口,此时主机A无须关系后续的ARP请求过程及后续的数据发送过程;

第三步是路由器R1的E1/1接口广播请求路由器到R2的E1/1接口,路由器R1的E1/1接口得到路由器R2的E1/1接口的MAC地址,然后路由器R1通过E1/1接口给路由器R2的E1/1接口发送数据;

第五步是路由器R2的E1/0接口广播请求主机到B,路由器R2的E1/0接口得到主机B的MAC地址,然后路由器R2的E1/0接口给主机B发送数据。

在上面的过程中,ARP的广播不能跨越本地子网,如果要与远程子网进行通信,ARP地址解析过程就会像一个接力赛一样完成,接力赛的交接点,就是与自己相邻的下一站设备,自己只会缓存相邻下一站的IP地址与MAC地址的对应关系。主机A 实际上只完成并缓存他它的默认网关192.168.1.1对应的ca00.1860.001c的ARP记录。数据的传送是不同路由器一站接一站进行传送的。

2.    IP报文

IP数据包也叫IP报文分组,传输在ISO网络7层结构中的网络层,它由IP报头和IP报文用户数据组成,IP报头的长度一般在20到60个字节之间,而一个IP分组的最大长度则不能超过65535个字节。下图为IP分组的报头格式,报头的前20个字节是固定的,后面的可变。IP报文结构图如下(IPv4)。


l  版本(version):占4比特(bit),指IP协议的版本号,如果该值为4表示正在使用的4号版本,6表示下一代的6号版本,目前也有一些教育网和科研机构在使用IPV6。在进行通信时,通信双方的IP协议版本号必须一致,否则无法直接通信。

l  首部长度(header length):占4位(bit),指IP报文头的长度。如果报头长度不包含选项字段是20字节,如果包含了选项字段,最大长度为60字节。因此,报头长度的变换范围是20-60字节(5-15个单位长度,每个长度为4字节)。报头长度不包括用户数据。

l  服务类型(type of service):占8位(bit),用于对特殊报文的处理。可以配置IP报文的优先级,用来获得更好的服务。优先级从0到8,数字越大优先级越高。其中的前3位表示报文的优先级,后面的几位分别表示要求更低时延、更高的吞吐量、更高的可靠性、更低的路由代价等。对应位为1即有相应要求,为0则不要求。

l  总长度(total length):占16位(bit),指IP报文能携带的最大字节数,包括IP报头和用户数据的总和。一个IP报文的的最大长度为65535个字节。 

l  标识符(identifier):占16位(bit),某一种IP数据包分配一个唯一的数字标识,该标识的作用就是保证数据被分段后,区别于网络中的其他IP数据分段,然后数据分段被重新组合。计算机上同一时间可能有多个不同的IP数据报被分段。

l  标志(flag):占3位(bit),作用是配合标识符合片偏移字段来管理IP报文的分段,由三个控制标志组成。第一位一般不使用,保留(reserved bit);第二位为DF(do not fragment)位,1表示IP报文不被分段;第三位为MF(more fragment)位,1表示该IP报文片段后面还紧跟有数据片段,知道最后一个0为止。

l  片偏移(fragment offset):占13位(bit),表示分段数据片段相对于报头起始位置的偏移位置,在于让目标接受方可以按照分段顺序重新组织报文。因为数据片段可能从不同路径到达,到达的先后顺序不一样,这时接收方就需要有一定的原则来重新组织数据。

l  生存时间(Time to Live):占8位(bit),该字段表明当前报文能再网络上的最大存活时间。每经过一个网关(路由器),TTL的值自动减1,当生存时间为0时,报文将被认为目的主机不可到达而丢弃报文。TTL的最大值是255,TTL的一个推荐值是64。使用过Ping命令的用户应该有印象,在windows中输入ping命令,在返回的结果中即有TTL的数值。

l  协议(protocol):占8位(bit),该字段指出在OSI模型上层使用的协议,可能的协议有UDP、TCP、ICMP、IGMP、IGP等。

l  首部校验和(header checksum):占16位(bit),该字段只在IP报文的首部上进行计算,提供一种基于传输的基本差错控制。用于检验IP报文头部在传播的过程中是否出错,主要校验报文头中是否有某一个或几个bit被污染或修改了。 转发IP报文的中间设备都需要进行计算,把IP报文首部字节分两个字,然后进行相加,如果计算的两个校验和不同,就认为数据在传输过程中被损坏了。

l  源IP地址(source address):占32位(bit),4个字节,每一个字节为0~255之间的整数,记录源标主机的IP地址。

l  目的IP地址(destination address):占32位(bit),4个字节,每一个字节为0~255之间的整数,记录目标主机的IP地址。


下图是数据帧的封装过程


3.    ICMP报文

ICMP(internet control manager protocol)即internet控制报文协议,它是TCP/IP族的子协议,位于OSI模型的网络层,用于主机和路由器之间可达性控制消息,确定信源与信宿是否可达,路由器是否可用。这个消息不是用户数据,而是确定源主机与目标主机是否可达。如果不可达,可用根据ICMP协议返回的消息确定故障原因,ping这个命令就是基于ICMP协议。ICMP协议帧的结构如下。


l  类型:标示ICMP报文的类型,如常见的类型3表示目标不可达,类型11表示超时,0回显应答,8回显请求。30代表路由跟踪。

ICMP报文类型

 

 

差错控制报文

终点不可达:主机与路由器之间不可交换数据

源点抑制:发送数据变慢点

时间超时:规定时间内不能完成数据传输

参数问题:收到的数据报有错误

改变路由:重定向报文

询问报文

回送请求或回答

时间戳请求或回答


  编码:在每种ICMP报文类型中又分为256中子类型,这个编码值就代表了各个子网类型的意义。

l  校验和:为整个ICMP报文提供差错保护机制。

l  报文体:被封装进ICMP报文中的处所数据报。

4.    TCP三次握手

TCP/IP协议实际上是一组协议的集合,IP工作在OSI模型的网络层,提供网络层传输,但并不是提供其可靠性传输控制。TCP工作在OSI模型的传输层,提供可靠性传输控制。可靠性传输控制是指面向连接的一种确认数据交付方式,保证发送方与接收方的可靠性,防止数据在传输的过程中出现丢包及其他传输不可达的现象。

1TCP协议Transmission Control Protocol)传输控制协议

由于提供可靠性交付,所以TCP协议的可靠交付使得传输速度较UDP慢,常用于可靠性较差的网络环境中,比如Internet。速度与可靠性两者在网络传输中是不能兼得的。那么对于TCP协议的交付方式是怎么完成的。

TCP的“三次握手”:TCP协议是一个相互触发、相互确认的过程,客户机要触发服务器,服务器也要触发客户机。TCP建立可靠连接的时候回使用两个标记syn和ack,建立“握手”状态的标记syn=1表示开始触发,ack=1表示对触发的回应确认。TCP握手的过程如下。


①客户机要触发服务器,向服务器发出syn=1的信号;

②服务器向客户机发送ack=1的确认信号;

③服务器再向客户机发出syn=1的信号,以达到相互触发的效果;

④客户机再回应服务器的触发信号ack=1。

上述的过程一共有四个步骤,或者说四次握手,那为什么我们说是三次握手?因为在服务器给客户机的ack=1确认信息和触发客户机的syn=1分成两次发送,可以合并成一个信号syn=1,ack=1所以四次握手变三次握手了。

2TCP的滑动窗口与确认机制


①当TCP窗口为1的时候,发送方每次发送一个数据包,然后接收方接收到这个数据后回应一个确认ack信息,ack信息由ack+数据包编号组成。这种方式效率低,吞吐量小但可靠性高。

②当TCP窗口为3的时候,发送方每次发送三个数据包,然后接收方接收到三个数据后回应一个确认ack信息,ack信息由ack+数据包编号组成,数据编号=接收号+1。这种方式效率高,吞吐量大但可靠性低。

5.    UDP协议

UDP(userdatagram protocol)用户数据包协议,工作在OSI模型的传输层,一种无连接的传输协议,提供面向即时事务的简单不可靠信息传送服务。由于UDP的特性不属于面向连接型协议,具有消耗资源小,报文简单,处理速度快的优点,所以通常语音、视频和流媒体文件在传输时使用UDP较多。UDP报文结构如下。


源端口:指发起UDP会话源主机所使用的端口,通常这个端口号是一个临时随机生成的端口号。

目标端口:指接受UDP会话目标主机所使用的端口号,通常这个端口是一个众所周知的端口号。

长度:指整个UDP报文的长度,包括UDP首部与数据部分。

校验和:这是一个可选项,根据整个UDP数据再加一个UDP的伪首部计算而得到的一个检验和值,这个所谓的UDP伪首部的结构如下所示。UDP的伪首部只是在检验和计算时使用,随后就会被丢弃,并不会被真正的传输,UDP的检验和字段是一个可选字段,不是必须字段。

数据:将被UDP发送的高层报文。


6.    HTTP协议

HTTP(hypertext transfer protocol)超文本传输协议,是一个基于客户端和服务器请求和应答的标准协议。客户端是终端用户,服务器是网站,客户端通过浏览器发出一个到服务器80端口的http请求。现在已经不将HTTP理解为一种单纯的协议,而把它当作一种数据的封装方式,使它可以封装和传递任意的文件。

    作为网络研究人员必须深入理解http的工作过程与协议结构。如过滤某些图片文件或者不允许下载mp3等。http有1.0和1.1(微软)两个版本,但很多时候与代理服务器结合使用时,一般下调用1.0版本。http工作原理如下。


因为http是基于TCP协议的,所以前三个是TCP的三次握手过程,然后是http的请求与回应,此时保持TCP连接,然后进行更多的请求/响应,最后关闭TCP连接。

1http的无状态连接

http 1.0是一个无状态连接的,而1.1版本支持状态连接,无状态连接就是在http 1.0版本中一个http请求与一个http回应就是一个完整的http连接,基于这个链接的数据一旦发生完成,这个链接就断开,同时也断开TCP的连接。如果需要重新连接,就需要重新进行TCP三次握手,所以http 1.0效率比较低。http 1.1版本增加了keepalive消息,使其具备状态连接的特性。Keepalive的特性是提高http连接的利用率,它不会切断TCP连接而进行新的连接,因为一个网页都用多个http连接。

 

2http的请求报文与应答报文的结构

①http请求报文与请求数据帧

http版本号

http方法

URL

请求头

实体头


http版本号:申明http的版本号,1.1或1.0。通常微软使用的是1.1版本,其余使用的是1.0。

http方法:常用的方法有GET、HEAD和POST。GET是请求web页面的信息,HEAD是申请web页面的信息不返回信息体。如果请求表单、bbs、邮件或数据库,就用POST代替GET,表示请求的是一个较大的数据。

URL:被请求的页面网址。同常由 协议名+宿主名+目录与文件名所组成。

请求头:被请求的文件类型。

实体头:包括被请求实体的原信息,实体的编码类型。

②http回应报文与响应数据帧

http版本号

状态码

响应头

实体头

内容

http版本号:申明http的版本号,1.1或1.0。

状态码:帮助用户理解http工作状态。

状态码

意义

1XX

信息提示

2XX

成功

3XX

重定向

4XX

客户端错误

5XX

服务器错误

响应头:响应头包括web服务器回应给客户机的http的内容是否被加密认证、是否被公开、www的认证消息和主页位置等。

实体头:包括http响应的编码形式、语言、内容长度以及内容的文件类型和最后一次修改的时间等。


3http的数据封装与内容管理

         当资源被封装到http报文中,把这样的封装称为实体。早期的http只能传送文本,随着技术发展,http已经不是单纯传送文本,而是可以传送表格、图片、影音文件等。那么http对非文本文件的封装和管理方式必然会增加http协议的复杂性。http使用的语法去申明各种多媒体类型,它与MIME使用相同的语法来申明封装的各种多媒体文件。它的语法格式是content-type:<类型>/<子类型>,常见的5中类型是text文本、image图像、audio音频、video视频和model模型类型,五种类型又细分了许多子类型。http使用媒体类型的另一个地方是在发送http请求消息中的accept字段,它的目的是客户机高速服务器它可以处理处理什么类型的多媒体信息,以避免服务器向客户机发送客户机无法处理的文件类型。例如:accept=text/plain表示文体媒体下的纯文本类型;accept=*/*表示任何媒体文件。

         MIME(MultipurposeInternet Mail Extensions)多用途互联网邮件扩展类型。http申明封装媒体文件类型的方式是从MIME借鉴而来的。MIME是一种多用途的邮件扩展,它最初是在电子邮件中使用,允许电子邮件携带多媒体信息以及任意文件,后来扩展到http应用中,是定义http内容格式的一种通用方法。因为http最初只能传送文本,当有需求要传送非文本文件时,MIME的标准已经产生了,所以就借鉴了MIME的标准。学习http与MIME的相关描述可以帮助我们过滤所需的文件。因为这些文件都使用相同的端口号,都通过http封装运载。

    http的内容缓存,http是一个具有缓存意识的协议,所以http是可以缓存的,目的在于加速客户端的访问,减少http请求和影响区消耗WAN链路宽带。例如,没有必要将用户连接同一文档的请求和响应进行反复连接。当然有的内容是不能缓存的。

7.    FTP

FTP(file transfer protocol)文件传输协议,用于上传或下载文件,是企业网络应用基础的一个必备服务。FTP的两种工作模式:主动和被动。主动FTP的故障常发生在穿越防火墙时,被动防火墙常发生在ACL过滤时。TCP/IP协议中,FTP使用两个端口号进行工作,端口21用于发送和接收FTP控制信息,端口20用于发送和接收数据。

FTP模式状态

使用端口

主动FTP

TCP21端口建立连接

TCP20端口数据传输

被动FTP

TCP21端口建立连接

TCP1025-5000任意端口数据传输

8.    POP3SMTP

POP3是Post Office Protocol 3的简称,POP3(Post Office Protocol - Version 3),即“邮局协议版本3”。是TCP/IP协议族中的一员。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。

SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,SMTP认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。 

它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。跟大多数应用层协议一样,SMTP也存在两个端:在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。

9.    DHCP

DHCP(Dynamic Host Configuration Protocol)动态主机配置协议是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCPServer和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4。

 

DHCP的功能

①保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。

②DHCP应当可以给用户分配永久固定的IP地址。

③DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。

④DHCP服务器应当向现有的BOOTP客户端提供服务。

 

DHCP的三种IP地址分配机制

①自动分配方式(AutomaticAllocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。

②动态分配方式(DynamicAllocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

③手工分配方式(ManualAllocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

DHCP工作原理



第一步DHCPDiscovery:即DHCP客户端寻找DHCP服务端的过程,客户端广播发送DHCP Discovery,源地址为0.0.0.0目的地址为255.255.255.255。网络上的所有支持TCP/IP的主机都会收到该DHCP Discovery报文,但是只有DHCP Server会响应该报文。如果网络中存在多个DHCP Server,则多个DHCP Server均会回复该DHCP Discovery报文。

 

第二步DHCP Offer:DHCP Server收到DHCP Discovery报文后,解析该报文请求IP地址所属的Subnet。并从dhcpd.conf文件中与之匹配的subnet中取出一个可用的IP地址(从可用地址段选择一个IP地址后,发送ICMP报文来ping该IP地址,如果收到该IP地址的ICMP报文,则重新选择IP地址继续进行ICMP报文测试,直到找到一个网络中没有人使用的IP地址,用以防治动态分配的IP地址与网络中其他设备IP地址冲突),此时DHCP Offer提供给客户机,这时客户机还是无IP地址,所以服务器仍然是广播形式发送DHCP Offer消息。

 

第三步DHCPRequest:DHCP 客户机收到若干个DHCP 服务器响应的DHCPOffer报文后,选择其中一个DHCP Server作为目标DHCP Server。选择策略通常为选择第一个响应的DHCP Offer报文所属的DHCP Server。然后以广播方式回答一个DHCP Request报文,该报文中包含向目标DHCP请求的IP地址和选择哪个DHCP服务器提供的消息等。之所以是以广播方式发出的,是为了通知其他DHCP Server自己将选择该DHCP Server所提供的IP地址。

 

第四步DHCP Ack:当DHCP 服务器收到DHCP 客户机发送的DHCPRequest后,确认要为该DHCP Client提供的IP地址后,便想该DHCP Client响应一个包含该IP地址以及其他Option的报文,来告诉DHCP Client可以使用该IP地址了。然后DHCP Client即可以将该IP地址与网卡绑定。另外其他DHCP Server都将收回自己之前为DHCP Client提供的IP地址。

 

第五步:当DHCP Client重新登录后,不是广播请求而是发送一个以包含之前DHCP Server分配的IP地址信息的DHCP Request报文,当DHCP Server收到该请求后,会尝试让DHCP客户端继续使用该IP地址。并回答一个ACK报文。但是如果该IP地址无法再次分配给该DHCP Client后,DHCP回复一个NAK报文,当DHCP Client收到该NAK报文后,会重新发送DHCP Discovery报文来重新获取IP地址。

 

第六步:DHCP获取到的IP地址都有一个租约,租约过期后,DHCP Server将回收该IP地址,所以如果DHCP Client如果想继续使用该IP地址,则必须更新器租约。更新的方式就是,当当前租约期限过了一半后,DHCP Client都会发送DHCP Renew报文来续约租期。当当前租约期限过了87.5%后,则联系其它服务器。

 

DHCP中继代理:为了减少网上的DHCP服务器,客户机广播后,DHCP中继代理收到广播后,以单播的方式发给DHCP服务器,建立请求。


10.    常用端口及协议

1)常用端口

端口

用途

20

FTP文件传输协议(数据)

21

FTP文件传输协议(控制)

23

Telnet远程登录协议

25

SMTP简单邮件发送协议

53

DNS域名服务器

69

简单文件传输协议(便于从系统下载启动代码)

80

超文本传输协议

110

POP3服务器(邮件发送服务器)

161

SNMP简单网络管理协议

162

SNMP Trap陷阱数据包

 

2)基于TCP/UDP的协议

下层用TCP的协议

POP3、FTP、HTTP、Telnet、SMTP

下层用UDP的协议

DHCP、TFTP、SMNP、DNS

下层用TCP和UDP的都可以协议

Samba、CIFS(Windows之间共享文件)、NFS(Linux之间共享文件)

3OSI模型各层使用协议

应用层

FTP、HTTP、SMTP

传输层

TCP、UDP

网络层

ICMP、IGMP、IP、RARP、ARP



参考链接:https://blog.csdn.net/u010757264/article/details/50756935

最后

以上就是无语柚子为你收集整理的常见协议总结的全部内容,希望文章能够帮你解决常见协议总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部