OSI 参考模型(7层)
1、具体的7层
- 应用层: 所有能产生网络流量的程序都是应用层
- 表示层: 在传输之前是否进行加密或压缩处理、或用二进制、ASCll 等形式表示
- 会话层: 服务端和客户端会有联系,传输。可以用来查木马:netstat -n 可以查看目前的有哪些会话建立,哪些中断。
- 传输层: 可靠传输、流量控制、不可靠传输
- 网络层: 负责选择最佳路径、规划IP地址
- 数据链路层: 数据帧的开始和结束标志,透明传输、差错校验等功能
- 物理层: 负责接口标准、电器标准,如何在物理链路上传输的更快。
2、七层模型的优势
- 统一标准会让不同的设备之间相互兼容
- 各个层之间相互独立,当某一层改变时,不会影响到其他的层,不需要将整体进行调整修改。
- 下一层为上一层提供服务,所以排错的时候可以从最底层依次向上进行排查。
3、在实际应用中常用五层来表示
将应用层、表示层、会话层统称为应用层
在传输的过程中五层对应的数据封装如下,
每个阶段数据包有不同的名称和组成部分
4、计算机通信的过程
- 应用程序准备要传输的文件
- 传输层 将文件进行分段并编号
- 网络层 添加目标IP地址和源IP地址
- 数据链路层 有两种情况 :使用自己的子网掩码判断自己在哪个网段,使用自己的子网掩码判断目标地址在哪个网段:
- 如果是同一网段则先查端口的MAC地址表看是否有目标IP的MAC地址,若已经有对应的MAC地址,则直接发送过去就可以了。若没有对应的MAC地址,就需要先通过 arp协议广播解析目标IP的MAC地址。获取到MAC地址之后,就可以将数据包封装成数据帧,再通过交换机来转发给对应的计算机。此时,因为是再同一网段中,就不需要路由器来实现跨网段的传输。
- 如果不是一个同一网段,就需要将自己的数据包发给网关(即:路由器),来让其进行转发到达下一跳的路由器上,实现跨网段传输。此时首先通过arp协议广播来解析路由器的MAC地址,然后在数据包上进行封装,添加对应的路由器MAC地址,再来进行后续的传输。因为是不同网段,所以此时不需要交换机,数据包直接到达网关(即:路由器)。
- 总结:同一网段的通信用交换机,不同网段的通信用路由器。
- 集线器(Hub-PT): 只是增加信号的强度,让信号传输的更远,属于 物理层的设备
- 交换机(Switch): 负责存储转发,它能根据数据帧的目标MAC地址来决定转发给哪一个计算机。交换机可以看懂目标MAC地址,它将接受到的数据帧的校验部分和MAC部分去掉,然后将数据包交给目标设备。交换机属于 数据链路层设备
- 路由器(Router): 如果两个路由器之间通过PPP协议来进行传输,此时点对点的传输,只有一个路由器的接受地址,所以其接受的地址默认用FF 来表示。由于路由器负责在网络间根据IP地址来转发数据包,所以其属于网络层设备
5、TCP/IP协议集
每一层主要有如下的协议:
一、物理层
1、物理层基本概念
- 机械特性:如定义接口形状,大小,引线数目
- 电气特性:如规定电压的范围(-5~+5v)
- 功能特性:如规定-5v表示0,+5v表示1
- 过程特性:也称规程特性,规定建立连接时各个相关部件的工作步骤。
2、典型数据通信模型
3、有关信道的基本知识
- 信道一般表示向一个方向传送信息的媒体,所以常说的通信线路往往包含一条发送信息的信道和一条接受信息的信道。
- 单向通行(单工通信) :只能有一个方向的通信而没有反向的交互,如只能接受的电视
- 双向交替通信(半双工通信) :通信的双方都可以发送信息,但是不能双方同时发送,当然也不能同时接受。
- 双向同时通信(全双工通信) :通信的双方可以同时发送和接受信息。
- 信道复用技术
二、数据链路层
1、基本概念
(1)、数据链路层的主要有如下两种信道类型:
- 使用点对点信道的数据链路层是 PPP协议
- 局域网, 广播信道的数据链路层 CSMA/CD协议
(2)、链路和数据链路
(3)、数据帧
数据链路层传输的是帧,其组成为:帧头、帧尾、物理层地址、校验值
2、数据链路层要解决的问题:
(1)、封装成帧
- 封装成帧就是在一段数据的前后分别添加首部和尾部,然后构成了一个帧。确定帧的界限
- 首部和尾部的一个重要作用就是进行帧的定界
(2)、透明传输
如果传输的数据中含有结束标记时,应该在其前面加上转义字符来说明,该帧的还没有结束。透明传输就是要保证这样的问题。
(3)、差错校验
- 在传输的过程中可能会产生比特差错:如1可能变成0,0也可能变成1 。在一段时间内,传输错误的比特占传输比特的总数的比例为误码率 。 误码率与信噪比有很大的关系。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
3、MAC帧格式
- 其中数据的长度:最小为46字节,最大为1500字节
- 数据帧的长度介于: 64字节——1518字节,因为数据帧还需要在数据的基础上加上其他的内容,如:目的地址、源地址、类型,以及用于校验的FCS
三、网络层
1 、网络层提供的服务:
负责在不同的网络之间转发数据包(它不负责丢包重传,数据顺序,及信息是否完整等情况,这些是由传输层来进行负责),基于数据包的IP地址转发。
网络层能实现跨网段的数据通信,它是通过路由器来实现的这些功能的。
2、网络层协议
网络层的协议有:ARP协议 ,IP协议 , ICMP协议 , IGMP协议 ,前面的协议依次为后面的协议提供服务。
- ARP协议: 通过广播来将目标IP地址解析成MAC地址,广播的地址是全F(FF-FF-FF-FF-FF),即所有的设备都收到该信息。在本网段中通过广播的形式,来发出询问目标IP地址的MAC地址。这时目标IP的设备就会回复它的MAC地址给发出广播的设备,这样就可以通过获取的目标MAC地址来向其发送数据包。它为IP协议提供服务,常用的命令是 arp -a , arp -s 。(注意,ARP的广播只能作用于本网段,不可以跨网段。其获取最远目标设备的MAC地址是路由。且只要获取了目标设备的MAC后,就会将其缓存下来,下次直接使用,无需再次对该IP地址的设备进行ARP广播。)
- IP协议: 负责将将数据包从一个网段转发到另一个网段。它在ICMP协议之下,arp协议之上。
- ICMP协议(网际控制报文协议): 用来测试网络层是否有故障,使用最多的命令是 ping命令 :因特网包探索器,用于测试网络连接量的程序,其底层使用的就是ICMP协议。
- IGMP协议(网络组播协议): 是配置在路由器的接口上,路由器需要周期性的扫描来看看本网段中哪些计算机绑定了该多播地址了,然后该路由器根据本网段中是否有计算机绑定到该多播地址,来决定是否要向上一个路由器请求发送数据包。
3、IP数据包的结构
一个IP数据包由首部 和 数据 两部分组成:
- 数据部分是来自传输层的,需要在网络层来将其加上首部。
- 首部的前一部分是固定长度,共20字节,是所有IP数据包必须具有的。
- 在首部的固定部分的后面是一些可选字段(该可选字段大部分的数据包都是没有的),其长度是可变的。
- 数据的结构图如下:蓝色为首部,包含:固定部分和可变部分。每行是32个bit,即4个字节,前5行的固定部分加在一起就是所有数据包都必须有的20个字节。;黄色为数据部分为数据部分。
- 版本:指IP V4或 IP V6
- 首部长度:指首部的长度,大部分都没有可选字段。所以一般都是20个字节。
- 区分服务:指每个包的转发优先级。如有的包很紧急,需要先转发,有的包不紧急,则不着急转发,排在后面。
- 总长度:表示该数据包的总长度,最大可以为 2 16 − 1 = 65535 2^{16} - 1=65535 216−1=65535 个字节。 (注意:由于数据链路层能支持的最大数据帧的长度是1500个字节,而数据包的最大长度却可以为65535个字节。所以如果要发送的数据包长度超过1500字节,就需要将数据包进行分片操作,让其每片的长度不超过1500字节,来进行发送。由于数据包中又包含首部的20个字节,所以若要想不对数据包进行分片,则数据包中的数据部分最长为1480个字节)
- 标识:是将数据包分片之后,接收端根据该标识来将分片的数据包组装成一个完整的包。
- 标志:用来表示接收到的数据包是一个完整的数据包,还是一个大数据包的分片。它占3位,目前只有前两位有意义。标志字段的最低位是MF(More Fragment)。MF=1表示后面还有分片,MF=0,表示最后一个分片。标志字段中间的一位是DF(Don’t Fragment),只有当 DF=0 时才允许分片。
- 片偏移:每个数据包的第一个字节在数据包中的偏移量。
- 生存时间:就是TTL,每过一个路由器就减1,可以防止数据包在路由之间循环。
- 协议:协议号指明了数据字段应该交给谁来处理(如:ICMP 协议号为1;IGMP协议号为2;TCP协议号为6;UDP协议号为17;IPv6协议号为41;OSPF协议号为89)
- 首部检验和:用来检验数据包在传输过程中,首部是否出现错误。
- 源IP地址和目标IP地址:每个IP地址都占4个字节(32位)。
4、IP协议
数据包在网络之间的转发,从哪个口出是由 路由表 来决定的。而路由表又有两种情况:一种是由管理员手动添加的,这是 静态路由 ;一种是通过自动学习来形成的,这是 动态路由 。让路由器能自动学习路由表的都是IP协议。
静态路由:
- 需要管理员告诉路由器所有没有直连的网络下一跳给谁。
- 适合于小规模的网络,不能够自动调整路由。
动态路由:
- RIP是周期性广播 路由表,30秒更新一下路由信息,根据跳数来评估优劣的路径,最大的跳数是15跳,如果超过15跳还没有到达,就认为该路径不可到达。它适合小规模的网络。
四、传输层
1、传输层协议 TCP,UDP
(1)、TCP,UDP协议的特点
- TCP协议:
- 需要将要传输的文件进行分段,并在客户端和服务端建立会话。它具有可靠传输和流量控制的特点。
- TCP是面向连接的传输协议;每一条TCP连接只能有两个端点,每条TCP连接只能是点对点的;TCP提供全双工通信,他是面向字节流的。
- TCP连接的端点不是主机,TCP连接的端点是:TCP+端口号 ,叫做套接字
- UDP协议:
- 一个数据包就能够完成数据通信,不需要分段,不需要建立会话,不需要流量控制,进行的是不可靠传输。UDP的首部开销小,只有8个字节。
(2)、两个协议的使用场景
- TCP:
- 两个软件之间传大文件时,一个包不能完成传输。
- UDP:
- DNS域名解析时使用UDP协议,因为一个包就可以将所需要的信息传输过去。
- QQ聊天时,使用的UDP协议,因为聊天的内容一个包就可以完成传输
- 视频时使用UDP协议
(3)、UDP首部
UDP首部的具体内容如下图所示,其大小只有8个字节:
2、传输层协议和应用层协议的关系
常见应用层协议使用的端口:
- http = TCP + 80端口
- https = TCP + 443端口
- RDP(远程桌面协议)=TCP + 3389端口
- ftp=TCP+21端口
- 共享文件夹=TCP+445端口
- SMTP(发邮件)=TCP+25
- POP3(收邮件)=TCP+110
- telnet=TCP+23
- SQL=TCP+1433
- DNS=UDP+53
3、服务和应用层协议之间的关系
- 安装了什么服务,就会使用对应的协议+对应端口。
- 当启动该服务时,TCP或UDP的端口就会侦听客户端的请求。
- 客户端使用IP地址定位服务器,使用目标端口号定位对应的服务
- 可以在服务器网卡上设置只开放必要的端口,来实现服务器网络的安全。
4、常用命令
- netstat -an: 查看服务侦听的端口
- netstat -n: 查看建立的会话
- netstat -nb: 查看建立会话的进程
- == talnet IP地址 端口号:== 测试远程计算机某个端口是否打开
5、三类端口
- 熟知端口,数值一般为 0~1023:
- FTP : 21
- TELNET : 23
- SMTP :25
- DNS : 53
- HTTP : 80
- https : 443
- RDP : 3389
- 登记端口号:1024~49151
- 客户端口号:49152~65535
6、TCP实现可靠传输的方式
- 可靠传输原理:停止等待协议。
- 发送方在发送完一个数据包之后会一直等待接受方的确认信息,只有接受方返回了确认信息给发送方,发送方才会接着发送下一个数据包。若发送方在等待的时间内没有收到接受方返回的确认信息,就会默认包丢失,会接着重新发送该数据包,直到收到确认信息,才会接着发送下一个包。该协议简单,但是信道利用率低。
- 接收方返回的确认信息 丢失和延迟的情况下:丢失时,B会丢弃A所发送的重复的包;延迟时,A会忽略B所发送的确认包。
- 发送方在发送完一个数据包之后会一直等待接受方的确认信息,只有接受方返回了确认信息给发送方,发送方才会接着发送下一个数据包。若发送方在等待的时间内没有收到接受方返回的确认信息,就会默认包丢失,会接着重新发送该数据包,直到收到确认信息,才会接着发送下一个包。该协议简单,但是信道利用率低。
- 流水线传输(该方法需要发送方维持一个滑动窗口):现在一般都使用该传输方式
- 以字节为单位的滑动窗口技术来实现可靠传输:
- A计算机发送窗口大小是由B计算机接受窗口的大小来决定的。A首先将需要发送大文件的第一部分放进A的发送缓存中,然后根据B的接受滑动窗口来设置A的发送窗口。A的发送窗口中的文件以字节的形式一部分一部分的进行发送,当A收到B的确认信息后,就会将已经接受到的字节删掉,然后向后移动滑窗,继续发送滑窗中新增的字节。注意,在未收到确认信息之前,不会删除滑窗中的字节。
- 因为A和B计算机都有对应的接收和发送缓存,如果对方发送的字节大小大于另一方的接收缓存容量,接收方就会发出信号,让发送方减少发送,直到接收方处理完接收缓存中的内容,再让发送方开始发送。这样来进行TCP流量的控制 ,它是一台计算机发快了,另一台不能及时处理造成的。
- TCP拥塞控制: 是由于网络中有很多计算机占用了宽带造成网络的堵塞,它不是由发送方和接收方来决定的。拥塞是一个全局性的过程,涉及到所有的主机。发送方需要维持一个拥塞窗口:当网络不是很拥塞时,维持大窗口;当网络拥塞时,维持小窗口。以保证网络不会太拥塞。
7、TCP报文段的首部格式
- 序号:每个数据段的第一个字节是整个文件的第几个字节
- 确认号:下一个发送的数据段是第几个字节
- URG:等于1表示优先传输
- ACK:等于0时,确认号无效
- SYN:等于1时是发送建立会话的请求
- PSH:等于1时,会优先发送,且在接收端会优先提交给应用程序
- RST:等于1,表示TCP传输出现严重的错误,出现中断
- FIN:等于1,表示传输结束释放连接
- 窗口:发送方和接受方各自能接受对方多大的内容,来放进对应的缓存中。这个缓存的大小就是一个窗口。接受方的缓存大小和发送方的缓存大小是需要传输前双方协商好的。
8、TCP传输连接管理
-
传输连接有三个阶段,即: 连接建立、数据传送、连接释放
-
TCP连接的建立都是采用客户服务器方式:
- 主动发起连接建立的应用进程叫做 客户端(Client)
- 被动等待建立连接的应用进程叫做 服务器(server)
-
TCP连接建立:用三次握手建立了TCP连接
- SYN=1,ACK=0,seq=x:第一次是客户端向服务端请求建立连接。
- SYN=1,ACK=1,seq=y,ack=x+1:第二次是服务端回应客户端建立连接的请求
- ACK=1,seq=x+1,ack=y+1 :第三次是客户端回应收服务端的请求。
- 经过以上三次握手之后,才会在接下来发送数据包。其实只要经过第一次和第二次握手就已经能够证明网络是通的,为什么还需要第三次握手:第三次握手是为了防止出现A向B发送多次建立连接的请求,在B收到后到达的请求后,就接着向A发送新的请求。由于A已经接受了之前的请求,所以A会拒接接受接下来B所发送的请求,这样B就会一直等待A的回应。
- 如下图所示是建立连接到传输数据的过程,以及A、B的各个时刻状态。
-
TCP连接释放
五、应用层
1、DNS服务:负责解析域名,将域名解析成IP地址:
- 输入域名,计算机首先通过UDP协议来向DNS服务器进行查询对应的IP地址。DNS服务器将对应的IP地址返回给计算机,然后计算机再通过IP地址来访问互联网。
- 域名解析测试:ping 域名,或 nslookup 域名
2、动态主机配置协议 DHCP:
- DHCP服务器的IP地址必须是静态的。
- DHCP服务器除了可以给本网段配IP地址,还可以跨网段配置IP地址。
3、文件传输协议FTP:
-
FTP使用两个TCP连接
-
FTP连接方式:
如果FTP服务器有防火墙,需要在防火墙上打开20和21端口,同时使用主动模式进行数据连接,此时被动模式无法连接。因为被动模式端口不固定,而防火墙只开了20和21端口,所以被动模式将不能进行数据传输。 -
FTP 传输模式:
4、远程终端协议TELNET
可以用来连接和控制远程设备,也可以使用 telnet IP地址 端口号 来查看对应设备的某项服务是否打开。
5、远程桌面协议RDP(Remote Desktop Protocal)
- 和 telnet 协议类似,但是 RDP 是面向图形界面的。
- 使用 RDP 所启动的端口是 3389
- 将用户加入远程桌面组,可以让用户进行远程连接。
- 几个命令:
- net user 用户名 al! :更改用户密码。
- net user 用户名 al! /add: 添加用户。
- 可以将本地的硬盘映射到远程桌面上。
6、超文本传输协议HTTP
- url :统一资源定位符。
- 在url 中字符的大小写没有区别。
- 由于HTTP的端口号默认是80,HTTPS的端口号默认是443。所以一般会省略不写。
7、web代理服务器
- 可以使用Web代理服务器访问网站:
- 节省内网访问Internet 的带宽
- 通过 web 代理可以绕过防火墙
- 通过 web 代理可以避免跟踪。
8、电子邮件协议:
- SMIP(发邮件)
- POP3(收邮件)
- IMAP(收邮件)