计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
依照 | 分类类型 |
---|---|
地理范围 | 局域网(LAN)/城域网(MAN)/广域网(WAN) |
交换方式 | 线路交换网络/报文交换网络/分组交换网络 |
拓扑结构 | 树形网络/总线型网络/环形网络/网状网络 |
局域网:是指范围在几百米到十几公里内办公楼群或校园内的计算机相互连接所构成的计算机网络。计算机局域网被广泛应用于连接校园、工厂以及机关的个人计算机或工作站,以利于个人计算机或工作站之间共享资源(如打印机)和数据通信。城域网:所采用的技术基本上与局域网相类似,只是规模上要大一些。城域网既可以覆盖相距不远的几栋办公楼,也可以覆盖一个城市;既可以是私人网,也可以是公用网。广域网:通常跨接很大的物理范围,如一个国家。
在网络上只要利用IP地址就可以找到目标主机,因此要攻击某个网络主机就要应该先确定该目标主机的域名或IP地址。
阐述:
所谓的ip地址就是一种主机编址方式,给每个连接在Intelnet上的主机分配一个32bit的地址,也称为网际协议地址。
按照TCP/IP(Transport Control Protocol/Intelnet Protocol,传输控制协议)协议簇的规定,IP地址用二进制来表示,每个IP地址长32bit,换算成字节就是4字节(Byte)。例如,一个采用二进制形式的ip地址是“000010100000000000000000001”,这么长的地址处理起来很费劲,为了方便使用,IP地址经常被写成十进制的形式,中间使用"."分割不同的字节,即用XXX.XXX.XXX.XXX的形式来表现,每组XXX代表小于等于255的十进制数,例如192.168.38.6。IP地址的这种表示方法称为“点分十进制表示法”,这显然比二进制的1和0容易记忆多了。
一个完整的IP地址信息应该包括:IP地址/子网掩码/默认网关/和DNS…只有四个协同工作时,用户才可以访问Internet并被Internet的计算机所访问…
(采用静态IP地址接入Internet时候,ISP应当为用户提供全部IP地址信息)
● IP地址:企业网络使用的合法IP地址,由提供Internet接入的服务商(ISP)分配公网地址,公网地址可以由网络管理员自由分配。但网络内部的私有IP地址不能相同,否则会发生IP地址冲突,导致网络连接失败。一般情况,IP地址可以分为5大类别:A类/B类/C类/D类及E类。
A类地址以0开头,第一个字节作为网络号,地址范围为:0.0.0.0~127.255.255.255;
B类地址以10开头,前两个字节作为网络号,地址范围是:128.0.0.0~191.255.255.255;
C类地址以110开头,前三个字节作为网络号,地址范围是:192.0.0.0~223.255.255.255;
D类地址以1110开头,地址范围是224.0.0.0~239.255.255.255,D类地址作为组播地址(一对多的通信);
E类地址以1111开头,地址范围是240.0.0.0~255.255.255.255,E类地址为保留地址,供以后使用。
注:只有A,B,C有网络号和主机号之分,D类地址和E类地址没有划分网络号和主机号。
255.255.255.255
该IP地址指的是受限的广播地址。受限广播地址与一般广播地址(直接广播地址)的区别在于,受限广播地址只能用于本地网络,路由器不会转发以受限广播地址为目的地址的分组;一般广播地址既可在本地广播,也可跨网段广播。
例如:主机192.168.1.1/30上的直接广播数据包后,另外一个网段192.168.1.5/30也能收到该数据报;若发送受限广播数据报,则不能收到。
注:一般的广播地址(直接广播地址)能够通过某些路由器(当然不是所有的路由器),而受限的广播地址不能通过路由器。
127.0.0.0/8
127.0.0.1~127.255.255.255
被用作回环地址,回环地址表示本机的地址,常用于对本机的测试,用的最多的是127.0.0.1。
● 子网掩码:子网掩码是于IP地址结合使用的一种技术,其主要作用有两个:
子网掩码是标志两个IP地址是否同属于一个子网的,也是32位二进制地址,其每一个为1代表该位是网络位,为0代表主机位。它和IP地址一样也是使用点式十进制来表示的。如果两个IP地址在子网掩码的按位与的计算下所得结果相同,即表明它们共属于同一子网中。
A类地址来说,默认的子网掩码是255.0.0.0;
对于B类地址来说默认的子网掩码是255.255.0.0;
对于C类地址来说默认的子网掩码是255.255.255.0
● 默认网关:当一台主机找不到可用的网关时,就把数据包发送给指定的默认网关,由这个网管来处理数据包。
(从一个网络向另一个网络发送消息,也必须经过一道“关口”这道关口就是网关)
● DNS地址:DNS服务用于将用户的域名请求转换为IP地址。如果企业网络没有提供DNS服务,则DNS服务器的IP地址应当是ISP的DNS服务器。
【附件】全国各省市的DNS服务器IP地址.见附录
有了计算机等设备,也就得考虑如何连接起来他们,这就是他们之间该如何通信的问题。对计算机来说,就是一个硬件设备,如何让计算机与计算机连接起来,必需需要软件的支撑。那么支持计算机通讯的软件是什么呢?就是计算机网络参考模型。这个计算机网络参考模型就是计算机网络软件。最经典的当然是国际化标准的OSI(Open System InterConnect 开放式系统互联)参考模型。它是通过一个机器上的一个应用进程与另一个机器上的进程进行信息交互。
1:OSI(open system Interconnect),即开放式系统互联。一般叫OSI参考模型,是ISO(国际标准化组织)组织在 1985 年研究的网络互联模型。
2:ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能产生互联。
3:OSI定义了网络互联的七层框架(物理层、数据链层、网络层、传输层、会话层、表示层、应用层),即ISO 开放互连系统参考模型。
4:每一层实现各自的功能和协议,并完成与相邻层的接口通信。OSI 的服务定义详细说明了各层所提供的服务。某一层的服务就是该层及其下各层的一种功能,它同通过接口提供更高一层。各层所提供的服务与这些服务是怎末实现无关。
应用层是OSI参考模型的最高层,是用户与网络的接口。该层通过应用程序来完成网络用户的应用需求,如文件传输、收发电子邮件等。
【提供与用户的接口,最终呈现给用户】
表示层处理流经结点的数据编码的表示方式问题,以保证一个系统应用层发出的信息可被另一系统的应用层读出。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据表示格式转换成网络通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。
【数据的表示/安全/压缩】
会话层主要功能是管理和协调不同主机上各种进程之间的通信(会话),即负责建立、管理和终止应用程序之间的会话。会话层得名的原因是它很类似于两个实体间的会话概念。例如,一个交互的用户会话以登录到计算机开始,以注销结束。
【建立用户之间的会话关系】
传输层的作用是为上层协议提供端到端的可靠的、透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。
传输层传送的协议数据单元称为段(data segment)或报文(Message)。
【定义传输数据的协议端口号以及流控和差错校验】
网络层是为其上层传输层提供服务,传送的协议数据单元称为数据包(Packet)或分组。该层的主要作用是解决如何使数据包通过各结点传送的问题,即通过路径选择算法(路由)将数据包送到目的地。另外,为避免通信子网中出现过多的数据包而造成的网络阻塞,需要对流入的数据包数量进行控制(拥塞控制)。当数据包要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题。
类比:网络层相当于邮局中的信件分拣人员。
网络层的作用:
● 路由选择
● 拥塞控制、差错检测与恢复
● 网络互联
【进行逻辑地址寻址,实现不同网络之间的路径选择】
数据链路层是为其上层网络层提供服务,解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧(Data frame)。
数据帧中包含物理地址(又称MAC地址)、控制码、数据及校验码等信息。该层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链路转换成对网络层来说无差错的数据链路。
此外,数据链路层还要协调收发双方的数据传输速率,即进行流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲器溢出及线路阻塞。
类比:数据链路层相当于邮局中的装拆箱人员。
数据链层的作用:
● 物理地址定义 网络拓扑机构
● 链路参数 差错验证
● 物理介质访问 流控制
【进行逻辑链接/进行硬件地址寻址/差错校验等功能】
物理层是OSI参考模型的最底层,它利用传输介质为其上层数据链路层提供物理连接。它主要关心的是通过物理链路从一个节点向另一个节点传送比特流(bit),物理链路可能是铜缆、光纤、无线或其他的通讯媒介。它关心的问题有:多少伏电压代表1?多少伏电压代表0?时钟速率是多少?采用全双工、半双工还是单工通信?
总的来说物理层关心的是链路的机械、电气、功能和规程特性。
类比:物理层相当于邮局中的搬运工人。Physical Layer
物理层的作用:
● 提供传输数据的物理通路,传输数据
【建立/维护/断开物理层链接】
记忆口诀:应表会传网数物
由于ISO指定的OSI参考模型过于庞大、复杂、在实现制作过程造成了很多困难,从而招致了很多批评。在现实中,TCP/IP协议获得了广泛的应用。目前主流的操作系统网络协议基本上都采用了TCP/IP协议。而TCP/IP与OSI在分层模型上稍有区别:OSI参考模型注重"通信协议必要的功能是什么",而TCP/IP则更强调"在计算机上实现协议应该开发那种程序"。
● 另外一个著名的模型是TCP/IP模型,TCP/IP是传输控制协议/网络互联协议的简称;
● 早期的TCP/IP协议是一个四层结构,在后来的使用过程中借鉴OSI的七层参考模型,形成了一个新的五层结构;
● TCP/IP是一系列协议的集合,所以严格的称呼应该是TCP/IP协议簇;
1:开放式系统互联模型是一个参考标准,解释协议相互之间应该如何相互作用。TCP/IP协议是美国国防部发明的,是让互联网成为了目前这个样子的标准之一。
2:开放式系统互联模型中没有清楚地描绘TCP/IP协议,但是在解释TCP/IP协议很容易想到开放式系统互联模型。两者的主要区别如下:TCP/IP协议中的应用层处理开放式系统互联模型中的第五层、第六层和第七层的功能。TCP/IP协议中的传输层并不能总是保证在传输层可靠地传输数据包,而开放式系统互联模型可以做到。TCP/IP协议还提供一项名为UDP(用户数据报协议)的选择。UDP不能保证可靠的数据包传输。
HTTP(超文本传输协议 80):用于浏览器和Web服务器之间的请求和响应的交互
DNS(域名系统 53):用于连接DNS服务器
SMTP(简单邮件传输协议 25):用于接收邮件
FTP(文件传输协议 21):用于控制连接FTP服务器
TCP(传输控制协议)和UDP(用户数据报协议)
网络层(本层TCP/IP定义了IP协议,而IP协议又由四个支撑协议组成)
ARP(地址解析协议):用于在局域网中根据IP地址获取物理地址
RARP(逆地址解析协议):用于在局域网中通过ARP表根据物理地址请求IP地址
ICMP(网际控制报文协议):用于验证网络是否畅通
IGMP(网际组管理协议):用于主机与组播路由器之间组播通信
IEEE802.3 有线局域网(以太网)标准
IEEE802.11 无线局域网标准
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。TCP提供的是一种可靠的数据流服务,采用"带重传的肯定确认"技术来实现传输的可靠性。TCP还采用一种称为"滑动窗口"的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发。
注:seq:"sequance"序列号;ack:"acknowledge"确认号;SYN:"synchronize"请求同步标志;;ACK:“acknowledge"确认标志”;FIN:"Finally"结束标志。
使用TCP的协议:
● FTP(文件传输协议)21号端口 20号端口
● Telnet(远程登录协议)
● SMTP(简单邮件传输协议)
● POP3(和SMTP相对,用于接收邮件)
● HTTP协议等。
第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
SYN:同步序列编号(Synchronize Sequence Numbers)
第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
为什么需要三次握手?
client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用三次握手,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用三次握手的办法可以防止上述现象发生。
四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发…
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1, Server进入CLOSED状态,完成四次挥手。
【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
如果有大量的连接,每次在连接、关闭时都要三次握手,四次挥手,会很明显会造成性能低下,因此,HTTP有一种叫做keep connection的机制,它可以在传输数据后仍然保持连接,当客户端再次获取数据时,直接使用刚刚空闲下的连接而无需再次握手
UDP用户数据报协议,是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。
UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询—应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。
每个UDP报文分UDP报头和UDP数据区两部分。报头由四个16位长(2字节)字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验值。UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:
● (1)源端口号;
● (2)目标端口号;
● (3)数据报长度;
● (4)校验值。
使用UDP协议包括:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议)、NFS、BOOTP。
1:连接方面区别:
i:TCP面向连接(如打电话要先拨号建立连接)。
ii:UDP是无连接的,即发送数据之前不需要建立连接。
2:安全方面的区别:
i:TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。
ii:UDP尽最大努力交付,即不保证可靠交付。
3:传输效率的区别:
i:TCP传输效率相对较低。
ii:UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。
4:连接对象数量的区别:
i:TCP连接只能是点到点、一对一的。
ii:UDP支持一对一,一对多,多对一和多对多的交互通信。
1.在应用层,用户的数据被转换成二进制数据
2.在传输层,上层数据被分割成很小的数据段,并为每个分段后的数据封装TCP报文头部
3.在网络层,上层数据被封装上新的报文头部——IP头部
4.在数据链路层,上层数据被封装一个MAC头部,其内部有一个关键的字段信息——MAC地址
5.在物理层,无论在之前封装的报文头部还是上层的数据信息都是由二进制数组成的,在物理层,将这些二进制数字组成的比特流转换成电信号在网络中传输
数据被封装完毕通过网络传输到接收方以后,将进入数据的解封装过程,这将是封装过程的一个逆过程
1.在物理层,首先将电信号转换成二进制数据,并将数据数据送至数据链路层
2.在数据链路层,查看目标MAC地址,如果吻合就“拆掉”,将剩下的数据送往上一层
3.在网络层,核实目标IP地址是否与自己的IP地址相同,从而确定是否送至上一层
4.在传输层,首先根据TCP头部判断数据送往哪个应用层协议或应用程序,将之前被分组的数据段重组,再送往上一层
5.在应用层,这些二进制数据将经历复杂的解码过程还原成发送者所输送的最初信息
● 对于OSI模型而言,每一层都是通过协议数据单元来进行通信的,而对于TCP/IP五层模型,也可以沿用这个概念
● PDU(协议数据单元)是指同层之间传递的数据单位
● 应用数据需要经过TCP/IP每一层处理之后才能传输到目的端,每一层都使用该层的协议数据单元PDU彼此交换信息,不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称
设备属于哪一层要看这个设备主要工作在哪一层,有什么对应的功能…
● 发送方与接收方之间必须采用相同的协议才能建立连接,实现正常的通信
简介:ARP(Address Resolution Protocol)是地址解析协议,是一种将IP地址转化成物理地址的协议。从IP地址到物理地址的映射有两种方式:表格方式和非表格方式。ARP具体说来就是将网络层(也就是相当于OSI的第三层)地址解析为数据链路层(也就是相当于OSI的第二层)的物理地址(注:此处物理地址并不一定指MAC地址)。
原理:主机A要向主机B发送报文,会查询A本地的ARP缓存表,找到B的IP地址对应的MAC地址后,就会进行数据传输。如果未找到,则A广播一个ARP请求报文(携带主机A的IP地址Ia——物理地址Pa),请求IP地址为Ib的主机B回答物理地址Pb。网上所有主机包括B都收到ARP请求,但只有主机B识别自己的IP地址,于是向A主机发回一个ARP响应报文。其中就包含有B的MAC地址,A接收到B的应答后,就会更新本地的ARP缓存。接着使用这个MAC地址发送数据(由网卡附加MAC地址)。因此,本地高速缓存的这个ARP表是本地网络流通的基础,而且这个缓存是动态的。
实验网络拓扑:
步骤一:在各个主机之间进行Ping测试,并在Kali上启动网卡位混杂模式…
.
echo 1 > /proc/sys/net/ipv4/ip_forward
步骤二:在KALI上输入Ettercap -G命令启动Ettercap图形化界面…并进行以下操作…
步骤三:在Client上输入以下地址进行访问,并输入FTP服务器账号密码进行访问…
ftp://192.168.1.98/
步骤一:进行欺骗之前需要对ettercap的dns文件进行编辑并添加一下内容…注意添加的内容之前能有"#"号键…
*apt-get install leafpad
leafpad /etc/ettercap/etter.dns
添加以下内容:
baidu.com A Kali IP地址
.baidu.com A Kali IP地址
这样的目的是为了,让客户端访问baidu.com时跳转访问攻击者的web服务