一.OSI七层模型
OSI Open System Interconnect 开放系统互连模型
以前不同厂家所生产的网络设备的标准是不同的,所以为了统一生产规范就制定了OSI这个生产模型。
作用:降低网络进行数据通信复杂度
这个模型的作用第一降低数据通信的复杂度,第二方便故障排查。
但凡是联网的设备其内部都有这七个车间,在数据传输的时候负责不同的事情。
应用层
作用:提供应用程序/软件,人与网络间的接口,提供数据
表示层
作用:负责数据格式的转换,比如压缩/解压缩,加密,解密
会话层
作用:建立会话,维持会话,断开会话,
会话:识别客户端的登录身份(是否登录)
比如登录邮箱是建立会话,在邮箱上进行对邮件的一系列操作是维持会话,退出邮箱是断开会话。
再比如说,一台服务器在同一时刻收到了n多条信息,怎么判断这个信息是不是已经登录的用户发送过来的信息,这就要依赖会话,
传输层
作用:用来在计算机之间提供端到端的通信的。识别不同的应用程序,
端口号1--65535
也就是说将某一端的数据传输到某一段的数据。
什么样的程序才会产生端口号,这个应用程序必须要能够联网。
windows查看端口的命令 > netstat -an
如上图所示,在windows中端口号为139和445的这两个端口,负责共享文件夹的功能,
网络层
典型设备:路由器
作用:提供网络到网络的通信,网络---网络
提供选路,根据IP地址进行选路,(选路的意思是两个机器之间通信的路径。)
数据链路层
典型设备:交换机
作用:提供点到点的通信,依靠MAC地址,物理地址
windows查看MAC地址:ipconfig/all
Linux查看MAC地址:ifconfig,ip addr show
机器上的每一块网卡(虚拟网卡,物理网卡)都有其自己的MAC地址,这个地址独一无二。
可以尝试将家里的联网设备的MAC地址都计入到路由器中,这样陌生设备就不能随便访问家里的网络了。
物理层
作用:提供物理链路
第几层的问题从下往上数。
二.TCP/IP五层模型
应用层,传输层,网络层,数据链路层,物理层
在五层模型中,会话层和表示层的功能被合并到了应用层。
三.典型协议
应用层:
1.http协议的作用是用来实现web数据传输的,明文传输。
2.https协议的作用也是实现web数据传输的,密文传输。
3.ftp协议文件传输协议,用来实现数据共享,
4.DNS协议用来实现IP地址,主机名的解析,
5.ntp协议网络时间协议,用来实现时间同步,
6.snmp协议(简单网络管理协议,实现监控)
7.ssh协议设备远程连接,密文传输,适用于连接服务器。
8.telnet协议设备远程连接,明文传输,适用于在局域网连接网络设备。
传输层:
1.TCP 传输控制协议
面向连接的协议,
主机间相互发送数据前,需要建立TCP连接,连接完毕后才会开始发送真实的数据,数据发送完毕后,主机间会断开连接。
TCP连接是双向的。
如上图所示,基于TCP协议开发的软件,都是在发送数据之前建立连接,然后在发送数据的操作完成后断开连接。
2.三次握手,建立连接。
a)主机A向主机B发送带有SYN标志的数据,表示请求建立连接。
b)主机B向主机A发送带有ACK,SYN标志的数据,表示同意建立连接,向A发送建立连接的请求。
c)主机A向主机B发送带有ACK标志的数据,表示同意与B建立连接。
TCP协议是一个可靠的协议。
原因:1.重传计时器:也就是说一个完整的数据包会被分成多份,先发送一份数据,如果在规定的时间内没有收到回复,就会重新发送这一份数据,直到收到对方接收到数据的回复时,才继续发送这个数据包的第二份数据。
原因:2.滑动窗口机制,流量控制,避免网络堵塞。
传送数据的双方,在建立连接的基础上,进行协商你这一次最多能传送多少数据,我一次最多能接收多少数据.然后经过协商,一次传送的数据大小取双方的中间值。
2.UDP 用户数据报协议
1.无连接的协议
2.不可靠的协议
查看TCP协议相关的端口
这个命令的主要用途是查看TCP协议相关的端口信息,
-
-a (all)
- 显示所有连接,包括监听中的和未完成三次握手的连接
-
-n (numeric)
- 以数字形式显示 IP 地址和端口号,而不是尝试解析为主机名
-
-t (TCP)
- 显示 TCP 协议的连接信息。
-
-p (program)
- 显示与每个连接关联的进程 ID 和名称。
查看UDP协议相关的端口
网络层
一.IP协议 inter
作用:能够根据IP地址将数据发送到那个网段。
二.ICMP协议
熟悉的ping 命令就是基于ICMP协议开发的一个命令。
互联网控制消息协议,测试网络的连通性。
ping工具
如果ping一个IP地址速度达到了几百上千毫秒,那么就代表网络堵塞。
ping工具的使用:
-
-c count
- 发送指定数量的回声请求报文。默认情况下,
ping
命令会一直发送直到被终止。 - 例如:
ping -c 4 example.com
将向example.com
发送4个回声请求报文。
- 发送指定数量的回声请求报文。默认情况下,
-
-s size
- 设置发送的回声请求报文的数据部分大小(字节)。
- 例如:
ping -s 1000 example.com
将发送1000字节数据的回声请求报文。
-c指定ping的次数
-s指定ping的数据包大小
三.IGMP协议
实现组播
四.ARP协议
地址解析协议
作用:根据IP地址获取MAC地址
四.数据封装
TCP/UDP报头中包含源端口号和目的端口号。
源端口号用来标识我这份数据是拿哪个软件发送出去的,源端口号>大于1024的随机端口,用来标识发送数据的软件。
如果A发送的数据访问的是B的web服务,那么目的端口号是80,如果A发送的数据访问的是B的w邮件服务,那么目的端口号是25,
数据在传输过程中IP地址只能决定这个数据传送到那个网段,但是要传送到具体的机器上,还是要取决于IP地址背后的MAC地址。
这串数据如果到物理层是网线,就会把这段数据转换成一段电信号,
如果是光纤,光信号,
如果是无线,无线电信号。
五.静态路由
路由器的作用主要是解决不同网段之间的通信需要用到路由器,
路由表是在配置好路由器的各个端口之后出现在路由器中的,路由表中有网段和路由器接口的对应关系。
在路由表中一条信息叫做一条路由,路由表中的路由有两个来源,第一个是直连路由,第二个是非直连路由,直连路由是就是这个路由器直接连接的网段信息,从配置好路由器的接口IP那一刻开始,直连路由的信息就自动出现在路由表上。
非直连路由:
如上图所示,需要手动往路由表中填写相关的信息,也就是没有相关的接口,使得网段与路由器直接相连,
如上图所示,机器A想要跟右边的路由器进行通信,不通过静态路由的方式去补写路由表中非直连路由的信息是不可以的。
如果机器A想要向路由器发送数据,需要将数据先发送到左边的路由器中的下一跳地址1中,然后经过路由器将数据发送到下一跳地址2中,然后将数据发送到192.168.3.0/24这个网段中,这样这个数据就可以被IP地址为192.168.3.2的这个路由器接收了,请注意这个数据的源IP地址是192.168.1.1,目的IP地址是192.168.3.2,但是关于数据的回复却是不能直接就回复,需要通过静态路由的方式将这个数据回复的目的IP地址网段填写到路由表中,
路由器不需要网关,在路由器中查看路由表实际上就是查网关的命令,就是route -n
如上图所示的echo重定向修改文件内容是临时的,等再次重启机器后,就需要重新修改这个文件中的内容,