1、OSI的七层协议、TCP/IP的四层协议、谢希仁老师的网络课本提到的五层协议的对照
注:
(1)OSI的七层协议仅仅是理论上的协议,实际上没实用到。
(2)TCP/IP的四层协议在真正在实际中用到的体系结构。
(3)谢老课本中提到的五层协议仅仅是为了更好的解说概念而採用的折中方法。
2、OSI的七层协议
(1)第七层、应用层
<0>作用:直接为用户的应用进程提供服务。
<1>应用层提供的服务:文件传输(FTP协议)、万维网的应用(HTTP协议)以及电子邮件的信息处理(SMTP协议)等。
<2>常见的协议:HTTP,HTTPS,FTP,TELNET,SSH。SMTP,POP3等
<3>注意:应用层并非指执行在网络上的某个特别应用程序,而是指为用户的应用进程提供的服务
(2)第六层、表示层
<0>作用:负责数据的编码和转化,确保一个系统的应用层所发送的信息能够被还有一个系统的应用层读取(相互识别)。
<1>详细作用:数据的压缩、解压、加密、解密,依据不同的应用目的将数据变成不同的格式(表现出来就是各种文件扩展名)
(3)第五层、会话层
<0>作用:为网络中两个结点(通信两方)制定通信方式。并建立、维护、控制、注销会话等。
(4)第四层、运输层(传输层)
<0>作用:为两个主机中进程之间的通信提供服务
<1>详细作用:负责数据切割(传送端)和数据组合(接收端)以及控制数据流量,而且进行调试及错误处理,以确保通信顺利。
<2>常见的协议:TCP协议、UDP协议
说明:
1、待传输的数据在上三层是总体的,到了运输层是開始切割,切割后的数据称为段。
2、三次握手、面向连接和非面向连接的服务、流量控制都发生在这一层。
(5)第三层、网络层
<0>作用:决定怎样将发送方的数据传到接收方(走哪一条路)
<1>数据单元:IP数据报或数据报或分组。
<2>重要的协议:IP协议、ARP协议、RARP协议、ICMP协议、IGMP协议
说明:网络层向上仅仅提供简单灵活的、无连接的、尽最大可能交付的数据报服务,使得路由器做的就比較简单。
1、网络在发送分组时,不须要先建立连接。
2、每个分组独立发送。与前后分组无关。
3、在传送过程中,所传送的分组可能出错、丢失、反复和失序、并且也不保证分组交付的时限。
注意:网络层不保证通信时可靠的,但能够由运输层负责(差错处理、流量控制等)。
(6)第二层、数据链路层
<0>作用:管理第一层的比特数据,并将正确的数据传送到没有传输错误的路线中。
<1>数据单元:帧
<2>重要协议:点对点协议PPP(点对点通信方式)、CSMA/CD协议(一对多的广播通信方式)
注意:
1、数据链路层側重点在于,怎样在不可靠的物理线路上进行数据的可靠传递。
2、在OSI模型中。数据链路层向上提供可靠传输的服务。即具有重传和确认机制。可是在实际的应用中。TCP/IP的数据链路层不要求提供可靠传输。可靠传输有运输层控制。
(7)第一层、物理层
<0>作用:负责在网络上透明地传送比特流
<1>详细功能:怎样才干在各种介质上传送比特流,即确定与传输媒体接口有关的特性。
<1>数据单元:比特流
注意:物理层关注的重点在于。怎样才干在各种介质上传送比特流,而并不指详细的传输媒体。
2、网络层有什么协议?
(0)IP协议:
作用:依据目的IP地址。找一条路径。将发送方的数据传到接收方
(1)ARP协议:地址解析协议
作用:依据对方的IP地址。找到对方的物理地址
(2)RARP协议:逆地址解析协议
作用:依据对方的硬件地址,找到对方的IP地址
(3)ICMP协议:网际控制报文协议(Internet Control Message Protocol)
作用:数据报发送错误时,发送提示信息
(4)IGMP协议:网际组管理协议
作用:发送多播协议
(5)OSPF协议:开放最短路径优先
作用:发送数据找一条最短路径发送
3、ping命令作用?使用的什么协议?
<1> 作用:它測试两个主机之间的连通性。
<2> 使用网络层协议ICMP协议
注意:ping命令,它没有通过运输层协议(TCP、UDP)而直接使用网络层协议。
4、ICMP协议在网络的哪一层?作用?
(1) ICMP协议工作在网络层
(2) 提出的目的:为了更加有效地转发IP数据报和提高交付成功的机会。
(3) 作用:
<1> 简单点说:当转发IP数据报出现错误时。给出原因。
<2> 详细点说:当路由器或者主机发送IP数据报出现错误时。路由器或者主机会向源点发送原因。
注意:ICMP是网络层的自我检測。用来检測信息是否到达目的地。若没到达,在提供原因。
(4) 怎么发送数据:以IP数据报为载体发送
详细来说:ICMP差错报文的数据字段:IP数据报的首部和数据字段的前八个字节(包括port号和发送序号)
(5) 分类:
<1> ICMP差错报告报文 -- 都是由发现问题的主机或路由器向源点发送。
1)终点不可达:找不到目的主机
2)源点抑制:网络拥塞
3)时间超过:收到的数据报生存时间为0(没有在预定时间内收到数据报)
4)參数问题:数据报首部出现故障。
5)改变路由:到达目的地址的最佳路径不经过默认路由,要改变路由表中的表相。
<2> ICMP询问报文
1)回送请求和回答:检測网络性能。通不通
2)时间戳请求和回答:请某个主机或者路由回答当前时间。
用于同步。
(6) ICMP协议的应用:
<1> ping命令:推断两个主机之间的连通性
原理:向目的主机发送回送请求和回答报文。之后依据目的主机的回复。就能够检測。
<2> Traceroute命令:获得源点到终点的路径
原理:向目的主机发送一连串IP数据报,IP数据报中包括的是无法交付发的UDP数据报(port非法)。
详细来说。分两种数据报。
工作原理:Traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。
<1> 第一个数据报P1的生存时间TTL设置为1。当P1到达路径上的第一个路由器R1时。路由器R1先收下它,接着把TTL的值减1。因为TTL等于零了,R1就把P1丢弃了。并向源主机发送一个ICMP时间超过差错报告报文。
<2> 源主机接着发送第二个数据报P2,并把TTL设置为2。P2先到达路由器R1,R1先收下后把TTL减1再转发给路由器R2。R2收到P2时的TTL为1,但减1后TTL变为零了。
R2就丢弃P2,并向源主机发送一个ICMP时间超过差错报告报文。这样一直继续下去。
<3> 当最后一个数据报刚刚到达目的主机时,数据报的TTL是1。主机不转发数据报。也不把TTL值减1。但因IP数据报中封装的是无法交付的运输层的UDP用户数据报,因此目的主机要向源主机发送ICMP终点不可达差错报告报文。这样,源主机达到了自己的目的。由于这些路由器和最后目的主机发来的ICMP报文正好给出了源主机想知道的路由信息——到达目的主机所经过的路由器的IP地址,以及当中的每个路由器的往返时间。
5、TCP和UDP的差别
<1>TCP提供的是面向连接的、可靠的数据流传输.
<2>UDP提供的是非面向连接的、不可靠的数据流传输。
简单的说。TCP注重数据安全,而UDP传输数据快点,但安全性一般
6、ARP协议(地址解析协议)的工作原理
(1)首先,每台主机都会在自己的ARP缓冲区 (ARP Cache)中建立一个 ARP列表。以表示IP地址和MAC地址的相应关系。
(2)当源主机须要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该IP地址相应的MAC地址,
<1> 假设有,就直接将数据包发送到这个MAC地址;
<2> 假设没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机相应的MAC地址。
此ARP请求数据包里包含源主机的IP地址、硬件地址、以及目的主机的IP地址。
(3)网络中全部的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。
<1> 假设不同样就忽略此数据包。
<2> 假设同样,该主机首先将发送端的MAC地址和IP地址加入到自己的ARP列表中。假设ARP表中已经存在该IP的信息。则将其覆盖,然后给源主机发送一个 ARP响应数据包。告诉对方自己是它须要查找的MAC地址;
(4)源主机收到这个ARP响应数据包后。将得到的目的主机的IP地址和MAC地址加入到自己的ARP列表中,并利用此信息開始数据的传输。假设源主机一直没有收到ARP响应数据包。表示ARP查询失败。
7、TCP怎么保证错误重传?
(1)接收方收到错误的分组,就直接丢弃,而不做不论什么操作。
(2)发送方在规定的时间(比平均往返时延大一些)没有收到分组的确认分组。就会自己主动重传。
(3)当然,为了让对方知道哪个分组出问题了,就也为分组编了序号。
8、IP协议的差错检測:
(1)检測哪一部分? IP协议仅仅检測IP数据报的首部,不检測数据部分。
(2)由谁检測? 数据报每经过一个路由器。路由器都进行一次差错检測。
(3)错误之后怎么办? 路由器发现数据报错误后。直接丢弃。
(4)怎么检測? 不使用复杂的CRC检验,利用IP数据报中的首部检验和。
方法:16个二进制一组,之后求反码相加。
(5)检測过程:
<1> 发送方:把IP数据报首部分成16位的序列。之后每个序列进行求反码在求和。
并把和的反码放入首部检验和。
<2> 接收方(经过的路由器):把IP数据报首部分成16位的序列,之后每个序列进行求反码在求和。之后再与首部检验和相加。为0则正常。
不为0则出错。
9、UDP协议的差错检測:
(1)检測哪一部分? UDP协议检測整个用户数据报(首部 + 数据部分)
(2)由谁检測? 由目的主机检測
(3)错误之后怎么办? 目的主机发现数据报错误后,直接丢弃。
(4)怎么检測? 不使用复杂的CRC检验,和IP数据报的检測方法相似。
方法:伪首部 + 首部 + 数据部分 + 全0的填充字节 + 16个二进制一组,之后求反码相加。
使用伪首部的原因:仅仅是单纯为了做校验用的。
伪首部包括:伪首部包括源IP地址和目的IP地址,UDP协议号以及UDP长度等信息,目的是让UDP两次检查数据是否已经正确到达目的地。
注意:
<1> 伪首部不上传也不想下传输。
<2> 因为检測的部分可能不是偶数个字节,不能均拆成16位的序列,此时能够插入全0的填充字节。
(5)检測过程:
<1> 发送方:把待检測的部分分成16位的序列,之后每个序列进行求反码在求和。
并把和的反码放入首部检验和。
<2> 接收方:把待检測的部分分成16位的序列,之后每个序列进行求反码在求和。之后再与首部检验和相加,为0则正常。不为0则出错。
10、TCP协议的差错检測:
(1)检測哪一部分? TCP协议检測整个用户数据报(首部 + 数据部分)
(2)由谁检測? 由目的主机检測
(3)错误之后怎么办? 目的主机发现数据报错误后,直接丢弃。
(4)怎么检測? 不使用复杂的CRC检验,和IP数据报的检測方法相似。
方法:伪首部 + 首部 + 数据部分 + 全0的填充字节 + 16个二进制一组,之后求反码相加。
使用伪首部的原因:仅仅是单纯为了做校验用的。
伪首部包括:伪首部包括源IP地址和目的IP地址,TCP协议号以及TCP长度等信息。目的是让TCP两次检查数据是否已经正确到达目的地。
注意:
<1> 伪首部不上传也不想下传输。
<2> 因为检測的部分可能不是偶数个字节,不能均拆成16位的序列。此时能够插入全0的填充字节。
(5)检測过程:
<1> 发送方:把待检測的部分分成16位的序列,之后每个序列进行求反码在求和。
并把和的反码放入首部检验和。
<2> 接收方:把待检測的部分分成16位的序列,之后每个序列进行求反码在求和。之后再与首部检验和相加,为0则正常。
不为0则出错。
记忆:
(1)IP协议仅仅检測首部,而TCP和UDP检測整个首部和数据部分,当然还包含伪首部。
(2)IP、UDP、TCP检測出错误后,会直接丢弃。可是TCP协议会要求重传。
(3)UDP和TCP的差错检測方法一样。