[前锋安全篇10]TCP-IP5层协议
TCP-IP5层协议
OSI与TCP/IP协议
分层思想
通信需求 -> 定义协议标准
同层使用相同的协议,下层为上层提供服务
将复杂的流程分解为几个功能相对单一的子过程
- 整个流程更加清晰,复杂问题简单化
- 更容易发现问题并 针对性的解决问题
TCP/IP协议在OSI的基础上进行了优化,所以OSI模型有7层,而TCP/IP则只有5层。
OSI | 协议栈 | TCP/IP | ||
---|---|---|---|---|
应用层 | 应用层协议 | 应用层 | PDU | PC/防火墙 |
表示层 | 表示层协议 | PDU | PC/防火墙 | |
会话层 | 会话层协议 | PDU | PC/防火墙 | |
传输层 | 传输层协议 | 传输层 | 数据段/段Fragment | 防火墙 |
网络层 | 网络层协议 | 网络层 | IP包/报文Package | 路由器 |
数据链路层 | 数据链路层协议 | 数据链路层 | 帧Frame | 交换机、网卡 |
物理层 | 物理层协议 | 物理层 | 比特bit | 网线 |
每一层对应的协议都是固定的,而TCP/IP协议简化了表示层和会话层 ,通常这2层都被归为了应用层。
封装过程
我们自顶向下来看看数据是怎么被TCP/IP封装的吧
应用层
我们从QQ发送了一个hello给对话的好友,这时的hello非常单纯,他只是一个hello
应用层 |
---|
hello |
传输层
然后他来到了传输层传输层会为他添加一个TCP/UDP头也就是常说的IP头
传输层 | 应用层 |
---|---|
TCP/UDP头(具体哪个取决是何种传输方式) | hello |
这个头包含了源端口和目标端口等等有用的信息,通过应用层端口号才能将数据准确的送给相应的进程(说人话)应用程序。那么TCP头和UDP头的结构是什么样的呢?
TCP头
UDP头
TCP和UDP都是一种协议,区别在于TCP是可靠传输,面向连接传输; UDP是不可靠传输,无连接传输
当然????和????????难以兼得,安全和性能也是如此。既然TCP安全,那性能就要比UDP慢一点;而UDP没有TCP那么安全,可UDP的传输性能就要比TCP快一些。
这时他被称为数据段 ,下面我们来到下一层
网络层
进入到网络层以后,网络层给数据段又加上了一个头那就是IP头 。
网络层 | 传输层 | 应用层 |
---|---|---|
IP头 | TCP/UDP头(具体哪个取决是传输方式) | hello |
这个头包含了源端口和目标端口等等有用的信息。那么IP头的结构是什么样的呢?
IP头
现在他被称为报文或者包 ,那么继续向下来到数据链路层
数据链路层
交换机就工作在数据链路层,
????????????交换机工作原理了解即可,下面我也会提到简单版的。大段文字不想看就略过去吧????♀️????♀️????♀️
工作原理
交换机工作于OSI参考模型的第二层,即数据链路层。交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。
交换机拥有一条很高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上,控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口,目的MAC若不存在,广播到所有的端口,接收端口回应后交换机会“学习”新的MAC地址,并把它添加入内部MAC地址表中。使用交换机也可以把网络“分段”,通过对照IP地址表,交换机只允许必要的网络流量通过交换机。通过交换机的过滤和转发,可以有效的减少冲突域。
端口
交换机在同一时刻可进行多个端口对之间的数据传输。每一端口都可视为独立的物理网段(注:非IP网段),连接在其上的网络设备独自享有全部的带宽,无须同其他设备竞争使用。当节点A向节点D发送数据时,节点B可同时向节点C发送数据,而且这两个传输都享有网络的全部带宽,都有着自己的虚拟连接。假使这里使用的是10Mbps的以太网交换机,那么该交换机这时的总流通量就等于2×10Mbps=20Mbps,而使用10Mbps的共享式HUB时,一个HUB的总流通量也不会超出10Mbps。总之,交换机是一种基于MAC地址识别,能完成封装转发数据帧功能的网络设备。交换机可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址。
数据传送的工作原理
交换机的任意节点收到数据传输指令后,即对于存储在内存里的地址表进行快速查找,从而对于MAC地址的网卡连接位置进行确认,然后再将数据传输到该节点上。如果在地址表中找到相应的位置,则进行传输;如果没有,交换机就会将该地址进行记录,以利于下次寻找和使用。交换机一般只需要将帧发送到相应的点,而无需如集线器发送到所有节点,从而节省了资源和时间,提高了数据传输的速率。 [2]
数据传送方式
通过交换的方式进行的数据传输,其实就是交换机的数据传送的方式。之前的集线器,更多是利用共享的方式,来对数据进行传输,没有办法从通讯的速度上进行要求。集线器的共享方式,也就是常说的共享式网络,以集线器作为连接设备并且只 有一个方向的数据流,因而网络共享的效率非常低。相对而言,交换机能够对连接到自身的各台电脑进行相应的识别,通过每台电脑网卡的物理地址也就是常说的MAC地址,来进行记忆和识别。在这样的前提之下,就不用再进行广播寻找,而能够直接将记忆的MAC地址找到相应的地点并且通过一个临时性专用的数据传输通道,来完成两个节点之间不受外来干扰的数据传输的通信。由于交换机还具有全双工传输的方式,所以也可以对于多对节点间通过同时建立临时的专用通道,来形成一个立体且交叉的数据传输通道结构。
开始,数据链路层又给报文加了什么东西呢?????这回加的就是数据帧了,数据帧分为帧头、数据部分和帧尾。
MAC子层 | 网络层 | 传输层 | 应用层 | 帧尾 |
---|---|---|---|---|
帧头、数据部分 | IP头 | TCP/UDP头(具体哪个取决是传输方式) | hello | FCS |
帧头包含了源MAC地址和目标MAC地址,数据部分自不必说。帧尾的FCS是什么呢?FCS是将前面几个部分通过某个算法算出来的一个大小为4Bytes的值,通过这个值可以校验信息是否被篡改了,听上去是不是很像md5算法呢?虽然算法不同,但是做的事情还是一样的。????????????
这是他被称为帧 。
解封装
解封装过程就是封装的逆序。
各种服务的端口和使用协议
所有的服务都使用TCP ????????????