Network_01
(从实践中学习TCP/IP协议读书笔记)
准备工作:
安装Kali Linux系统: 在VMWare中安装,选Debian 8.x 64bit,ISO镜像地址,在下载完镜像后,在VMWare中把镜像挂载到新建虚拟机的DVD驱动上,一切默认即可,开启虚拟机后使用Graphical Install图形界面安装,按提示一直继续就行了,在重启前删除镜像文件即可。安装详情。
Kali系统内置了许多网络测试工具,是展开实践的不二操作系统。使用Windows请下载Netwox软件和Wireshare软件。
计算机网络
网络是计算机或类似计算机的网络设备的集合,它们之间通过各种传输介质进行连接。下面介绍计算机网络的必要组成部分:
网卡
网卡又叫网络适配器、NIC(网络接口控制器),将计算机数据转换为可以通过介质传输的信号。NIC可以分为有线网卡,无线网卡,蓝牙适配器等。
网络电缆
网络电缆将网络中的设备进行连接,以供设备间通信。最常见的网络电缆是网线(双绞线)。
网线
双绞线由8根铜线组成,两两缠绕,两端封有水晶头,双绞线在水晶头中的排列往往按照EIA/TIA的线序,即橙白、橙、绿白、兰、兰白、绿、棕白棕。有屏蔽线(STP)和非屏蔽线(UTP)之分,非屏蔽线只用十字隔离架对四股双绞线进行隔离,屏蔽线则使用十字骨架、屏蔽铝箔(含安全地线)、金属编制网等进行屏蔽。要想发挥屏蔽效果,要网络中各个设备接地良好且地线等电势(零电势)。按产品代数分,也可以分为五类、六类、七类和八类。五类(CAT5)网线速度是百兆100Mbps,六类是千兆1000Mbps,七类是万兆10Gbps。如果系统需要PoE供电,至少选择超五类(CAT5e)或CAT6的纯铜线。
光纤
光纤利用光作为传输介质,光纤的有效材料是二氧化硅,原理是光的全反射,主要作用是光信号的传输(由光猫把电信号变为光信号)。根据光在材料中的模态,分为单模光纤和多模光纤。单模的通常性能更优,适用于5km以上的信号传输,传输速率在1Gbps;多模则适合短途通信,典型的为100Mbps传2km和10Gbps传550米。光纤成本较大,更脆弱。光纤和设备相连或设备之间的光口互联需要用到尾纤,尾纤和光纤主线连接时需要熔纤,尾纤既有抗拉扯等优势,长度一般不超过2米。光纤和设备可以使用SFP连接器和SC连接器进行连接。
电话线
电话线只有两根线或4根线,通过ADSL进行调制解调,通过模拟信号传播(网线通过数字信号),信号损耗大,最高网速是2Mbps。
交换机
交换机也称Switch,通常是指局域网交换机,将多个网络设备(集线器,打印机,电脑,服务器,路由器等)组成一个局域网,用于电(光)信号的转发(数据交换)。按转发效率可以分为十兆(曼彻斯特编码,同轴电缆或双绞线)、百兆(4B/5B编码,双绞线)、千兆(8S/10B编码,双绞线或光纤)、万兆(MB810编码,光纤)交换机,要注意交换机每个端口的速率可能是不同的。按是否传输电能分为普通交换机和PoE交换机,按通信方式分为以太网交换机、ATM交换机、令牌环交换机等。要注意,交换机中的各个设备想要相互通信,必须在C类地址的同一网段进行通信(如都在192.168.0.x)。
路由器
路由器Router也称网关Gateway,用于连接多个逻辑上分开的局域网(子网)。当数据从一个子网到另一个子网(跨网段通信),需要路由功能实现。路由器根据信道情况自动设定路由,具有判断网络地址及选择IP路径的作用。路由器有Wan口和Lan口,交换机只有端口。
调制解调器
调制解调器Modem也叫猫,是将数字信号转化成脉冲信号,或将脉冲转化为开关量的计算机硬件。光猫是把数字信号和光信号进行相互转化的设备。光信号可能是模拟信号也可能是数字信号,是由实际的物理层协议所决定的。
网络协议
网络协议是网络中不同设备间相互通信的规则,是网络运行的基石。它规定了通信时信息必须采用的格式和这些格式的意义,网络中可以同时存在多种协议,但是发送方和接收方的协议必须一致。因特网使用的网络协议是TCP/IP协议族。
TCP/IP协议
TCP/IP协议指的并不是这两个单纯的协议,而是一个协议族,包括TCP,UDP,IP,ICMP,HTTP等多种协议。
上图中,OSI参考模型可以明确的说明了网络通信的架构,下面说说OSI参考模型每一层的作用。
ISO的OSI参考模型
- 应用层:为应用程序提供服务并规定应用程序中相关的通信细节,协调应用程序间的通信过程控制。
- 表示层:将应用处理的信息转换为适合网络传输的格式,主要负责数据格式转换、加密解密、压缩恢复,确保两个应用层的数据能相互读取。
- 会话层:负责通信连接的建立、管理和终止,记忆数据的分隔等数据传输相关的管理。
- 传输层:只在通信双方的节点上进行处理,提供可靠的端-端连接和数据传输服务,无需在路由器上处理。
- 网络层:将数据传输到目标地址,主要负责寻找地址和提供路由选择算法,实现拥塞控制、网际互连等功能。
- 数据链路层:负责物理层面上互联的节点间的通信传输,物理地址寻址、数据成帧、流量控制、数据检错和重发等功能。
- 物理层:利用传输介质为数据链路层提供物理连接,建立、管理和释放物理连接。
然而,过于细致的分层不适合进行具体问题的实现。在实践中,美国APRANET研究出了TCP/IP的实用的四层协议,并因其实用性沿用、发展至今。
TCP/IP协议层次结构
- 应用层:为应用程序提供服务并规定应用程序中的相关通信细节。
- 传输层:为两台主机的应用程序提供端-端通信,提供流量控制、错误控制和确认服务。
- 网际层:也叫互连网络层,提供独立于硬件的逻辑寻址,提供路由选择,处理传输层数据的发送请求,处理接收到的分组,转发分组。
- 主机-网络层:也叫网络访问层,或分为网络接口层和硬件层,主要接收发送IP分组,对数据在物理网络中的传递提供错误控制,根据硬件的物理地址进行寻址。
TCP/IP协议族中,应用层的协议主要有:Telnet,FTP,SMTP,HTTP,DNS,SNMP,DHCP等;传输层的主要协议是TCP和UDP。
OSI和TCP/IP都是对同一网络进行模型的分层,可以进行比较。
♘ TCP的互联网络层对应OSI的网络层
♘ TCP的传输层对应OSI的传输层
♘ TCP的应用层对应OSI的会话层、表示层和应用层
主机-网络层
主机网络层又叫网络访问层,是TCP/IP协议的最底层,提供物理网络接口,实现对复杂数据的收发。对应OSI参考模型的物理层和数据链路层。
物理层
物理层是OSI参考模型的最底层,是整个开放系统的基础,作用是提供传送数据的通路和可靠的环境。计算机中,物理层对应的是网络适配器。
网络适配器可以分为:
- 物理网络适配器,如有线网卡、无线网卡;
- 虚拟网络适配器,如宽带拨号连接、VPN连接。
物理层的任务是保证比特流的正确传输。为了让比特流顺利传输,物理层利用已经搭建好的传输介质为通信的双方建立、管理和释放物理连接。
物理层中的协议(规范)共分为两大类:广播通信线路物理层协议(规范)和点对点通信线路物理层协议(规范)。
属于物理层定义的典型规范包括:RS232,RS485,RS449,EIA422,RJ45,V.35,X.21等。
物理层数据传输方式可以分为串行通信(单信道)和并行通信(多信道);也可以按照同一时刻信号的发送方向分为单工、半双工和全双工。
物理层的网络设备是集线器Hub,目的是扩大网络的传输范围,只能进行信号放大和重发
在Kali Linux的终端中,可以显示网络适配器信息,执行netwox 169
命令:
图中,Lo代表回环接口,是一个虚拟网络适配器;Eth代表以太网网络适配器。
数据链路层
数据链路层是OSI参考模型中的第二层,用来为网络层提供数据传送服务。数据链路层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错、可靠传输数据帧的数据链路;数据由于数据链路层完成以上两个独立的任务,所以相应地划分为两个子网:MAC和LLC。
数据链路层的代表协议包括:ARP、RARP、HDLC、PPP、STP、帧中继等。其中ARP和RARP主要负责IP地址和机器物理地址(MAC地址)的解析和逆解析。
数据链路层的设备主要有交换机,网桥等。网桥实质是一种利用MAC地址对帧进行转发的技术,网桥是扩展局域网的最常见方法之一,一个网桥的端口可以与一个网段相连(请问是吗?)。交换机是
介质访问控制MAC
提供与网络适配器连接的接口。实际上,网络适配器驱动程序通常称为MAC驱动,网卡在工厂固化的硬件地址就叫MAC地址。
逻辑链路控制LLC
对经过子网传递的帧进行错误检查,管理子网上通信设备之间的链路。
网络体系
网络体系定义了物理网络的构成,以及对应的通信方式。主要包括:
- 访问方法:定义了计算机使用传输介质的规则。通过这些规则来避免数据传输的冲突。
- 数据帧格式:定义了数据传输的格式。所有要传输的数据必须按照该格式进行传输。
- 布线类型:定义了网络适配器和其他网络设备的连接方式,如星型网络。
- 布线规则:定义了网络适配器和网络设备连接规范,如网络适配器接口类型和连线长度。
目前使用的网络体系一般都在下列四大类型中:
- IEEE802.3(以太网)如有线局域网
- IEEE802.11(无线网络)如Wi-Fi网络
- IEEE802.16(WiMAX)移动通信长距离无线连接
- P2P协议(点到点协议)电话线上网
物理地址
物理地址也叫MAC地址,是每个网络设备生产时便唯一确定的6字节长度的标识,即48个二进制位,通常使用两位十六进制数表示一个字节,则MAC地址通常的写法形如:00:0C:29:49:B2:EF
。其中,前三个字节表示网络设备的生产厂商,后三个字节是厂商给此设备分配的标识。
通过此链接可以查询mac地址的详细信息。
如果MAC地址48位都是1,说明时广播地址,如果第八位是1(第一字节是奇数),说明该地址是组播地址。
以太网
只有按照星型或者总线型拓扑结构形成的局域网才能作为以太网标准的基础。以太网工作在OSI参考模型的第二层,IEEE802.3标准制定了以太网的技术标准,采用了CSMA/CD(附加冲突检测的载波侦听多路访问)的机制,以太网中所有的节点都可以看到网络中发送的所有消息,也称广播网络。
- CS:载波侦听:在发送数据前进行监听,以确保线路空闲,减少冲突机会
- MA:多址访问:每个站点发送的数据,可以同时被多个站点接收
- CD:冲突检测:边发送边检测,发现冲突就停止发送,然后延迟一个随机时间后继续发送
- 冲突的检测:两个站点同时发送信号,产生叠加,使线路上的电压摆动超过正常值的一倍,据此判断冲突的发生
以太网中的一台主机需要传输数据时,它将按如下步骤进行:(先听后发,冲突检测,延时重发)
- 侦听信道中是否有信号在传输,如果信道正处于忙碌状态,就继续侦听,直到信道空闲;
- 如果没有侦听到信号,即信道空闲,则传输数据;
- 传输的时候继续侦听,如果发现冲突就执行退避算法,随机等待一段时间后重新执行步骤1;当冲突发生时,涉及冲突的计算机会返回监听信道等待
4.若未发现冲突,则发送成功。
以太帧结构
当以太网软件从网络层收到数据报后:
- 根据需要把网际层(互连网络层)的数据分解成小块,以符合以太网帧数据段的要求。以太网帧的整体大小必须要在62~1518字节之间(不包含前导码)。有些系统支持更大的帧,最大9000字节。
- 把数据块打包(封装)成帧。每一帧都包含数据及其他信息,这些信息是以太网网络适配器处理帧所需要的。
- 把数据帧传递给对应OSI模型物理层的底层组件,后者把帧转换成比特流,并且通过传输介质发送出去。
- 以太网上的其他网络适配器收到这个帧,检查其中的目的地址。如果目的地址与网络适配器的地址相匹配,适配器软件就会处理接收到的帧,把数据传递给协议栈中较高的层。
上图展示了Ethernet II标准的以太帧格式,其中:
- 前导码:由7字节构成,内容是1010……1010。用于使网络中的所有接收设备都能达到帧同步,且和帧前定界符一起保证了各帧间的错误检测和恢复操作时间大于9.6ms。
- 帧前定界符:10101011。最后的11中断了同步模式,提醒接收紧随的帧数据。
- 目的MAC地址和源MAC地址:单播是真实MAC地址(第一个字节第八位是0),组播第一个字节第八位是1,广播六个字节的48位都是1。
- 类型:(十六进制数)0x0080紧跟的是IPv4数据报;0x08dd是IPv6数据报;0x0806是ARP请求/应答+PAD(28B+18B);0x0835是RARP(格式同ARP);0x8848是MPLS报文;0x8137是IPX和SPX传输协议帧。其他如此,等等。
- 数据:46~1500字节的字段,类型由数据前面的2B大小表示。
- FCS:进行CRC(循环冗余校验)差错检验。
构建以太帧,显示网络配置
使用netwox 32
可以查看以太网数据帧,输出框中,前部分是主机MAC地址(源地址),后部分是目标MAC地址(下图目的地址没什么意义),类型是指以太网类型。
可以构建以太帧,使用netwox 32 -a MAC -b MAC
,使MAC地址发生变化。
在不使用后一条netwox 32
前,MAC地址都是第二条指令中构建的地址;再次使用netwox 32
表示用回原来的MAC地址。
使用netwox 75
会使以太网受到以太帧洪水攻击,使交换机失去正确转发的功能,输入命令后不会有任何反应,可以用Wireshark进行抓包。
原理:交换机会形成一张端口和MAC地址对应的存储表,该表不可能无穷大,在存储了许多MAC地址后满了,交换机再收到数据就会开始广播,失去正确的转发功能。
使用netwox 1
可以显示当前网络设备信息
进一步,使用netwox 2
可以显示当前网络调试信息。
Network_01的更多相关文章
随机推荐
- Stream(四)
public class Test { /* * 创建:一步 * 中间:0~n步 * 终结:一步 * * 三.终结操作 * 1.void forEach(Consumer ):遍历流中的数据 * 2. ...
- Java 中的 Lambda 表达式
Lambda表达式 Lambda 表达式是 JDK1.8 的一个新特性,又称特殊的匿名内部类,可以取代大部分的匿名内部类,语法更简洁,可以写出更优雅的 Java 代码,可以极大地优化代码结构. Lam ...
- GoSDK的安装及环境变量配置 入门详解 - 精简归纳
GoSDK的安装及环境变量配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 29 转载请注明出处!️ 目录 GoSDK的安装及环境变量配置 入门详解 - 精简归纳 一.进入G ...
- CodeForces 916D Jamie and To-do List
题意 你需要维护一个任务列表,有 \(q\) 次操作,每次操作形如以下四种: set a x:设置任务 \(a\) 的优先级为 \(x\),如果任务列表中没有 \(a\) 则加进来. remove a ...
- freopen ()函数
1.格式 FILE * freopen ( const char * filename, const char * mode, FILE * stream ); 2.参数说明 filename: 要打 ...
- mkdir()和mkdirs()区别
mkdir()和mkdirs()区别如下: mkdirs()可以建立多级文件夹, mkdir()只会建立一级的文件夹, 如下: new File("/tmp/one/two/three&qu ...
- Go之发送钉钉和邮箱
smtp发送邮件 群发两个邮箱,一个163,一个QQ package main import ( "fmt" "net/smtp" "strings& ...
- 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)
再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Blueste ...
- CF957E Contact ATC
二维偏序(逆序对) 因为风速vf,-w<=vf<=w,因此我们可以算出每一艘船到达原点的时间的取值范围 即取vf=w和vf=-w时,记ai为当vf=w时的用时,记bi为当vf=-w时的用时 ...
- linux-gcc简要知识点 **
目录 交叉编译 简要知识点 ** 一些概念 GCC编译器 GCC简要使用 GCC编译过程 ** 常用的编译选项 编译多个文件 制作.使用动态库 制作.使用静态库 很有用的选项 参考 交叉编译 使用不同 ...