网络知识整理

网络概述

网络是通过外围设备和连线,将分布在相同或不同地域的多台计算机连接在一起所形成的集合。

网络拓扑

  将网络中的设备定义为结点,两个结点间的连线称为链路,网络结点和链路的几何位置就是网络的拓扑结构。

网络中有两类结点:转接结点(提供连接的网络设备)和访问结点(提供服务的计算机设备)

在计算机网络中,我们将结点分类两类:

转接结点: 提供连接的网络设备。比如连接主机的交换机、路由器 都是转接结点

访问结点: 提供服务的计算机设备。我们最常见的服务器和主机都属于访问节点。

拓扑结构的概念:

节点:网络中的设备定义为节点

链路:两节点之间的连线称为链路

拓扑结构:网络结点和链路的几何位置就是网络的拓扑结构。 

总线型拓扑结构

 总线型拓扑结构采用单根传输线作为传输介质,所有的站点都通过相应的硬件接口直接连接到传输介质上。

特点:

1、成本较低。 2、两端要安装终端电阻。 3、连接的计算机数目较少。(一般少于20台) 4、稳定性差,主要用于10M网络。 5、网路中某点出现故障,则可能全网络瘫痪

星型拓扑结构

星型拓扑是由中央节点和通过连接到中央节点的各站点构成的。所有的节点都有专有线缆连接中心的中心节点上。

特点:

1、工作站接入和退出容易。 2、一般用双绞线连接,符合现代综合布线的标准。 3、可以满足多种带宽:10M、100M、1000M 4、对中心节点的依赖性较大。 5、中心节点可以级联,但是不超过4级。 6、可以隔离单颗粒故障

环形拓扑结构

环型拓扑结构是把网上所有的节点通过电缆依次连接形成一个封闭的物理环,在这个物理环中,每个电脑相当于中继器作用。

特点:

1、每个工作站相当于一个中继器,有还原信号的作用。 2、环路中增加用户困难。 3、可靠性差,不易管理。

计算机网络的几种分类

按覆盖的地理范围分类

局域网(LAN);一个公司、一个家庭

广域网(WAN);一个国家、全世界

城域网(MAN);一种大型LAN 一个区、一个城市、一个国家

按传输技术分类

广播式网络 broadcast network

点到点网络 point-to-point network

 

 

数据通信基本概念

信息 是人们要通过通信系统传递的内容

数据 只不过是数字化的信息。

信号 则是数据的表现形式。 数字信号和模拟信号

信道 是传输信号的通道。

 

数据传输的方式 模拟方式 数字方式

模拟信号是信号参数大小连续变化的电磁波,可以按不同的频率在媒体传输,是一个连续变化的物理量。

数字信号则是不连续的物理量,信号参数也不连续变化。数字信号使用几个不连续的物理状态来代表数字。现在最常见的数字信号是复读取值只有两种(0和1代表)的波形,称为“二进制信号

 

信号干扰的相关因素:

噪音 衰减性 电磁干扰

 

传输介质性能:

计算机网络的吞吐量和带宽   成本     尺寸和可扩展性    抗噪性

 

计算机网络的吞吐量和带宽

吞吐量   带宽    带宽与频率的关系

 

网络介质类型:

同轴电缆 双绞线 光纤

 

同轴电缆的特性: 分为 粗缆(Thicknet)和细缆(Thinnet) 速度:10 Mbit/s 最大段长:细缆185m 粗缆500m 主要应用于总线型(bus)网的布线连接,两端必须有终结器。

双绞线的特性: 分为屏蔽双绞线(STP)和非屏蔽双绞线(UTP) 速度: 10 ~ 1000Mbit/s 最大段长:100m 主要应用于星型(star)网的布线连接。 按照电气性能的不同,双绞线可分为三类、五类、超五类、六类和七类双绞线。

线序标准 T568A标准(绿白、绿、橙白、蓝、蓝白、橙、棕白、棕) T568B标准(橙白、橙、绿白、蓝、蓝白、绿、棕白、棕)

 

连接线缆的类型:

直通线:线缆两边使用相同的线序,如都使用T568A或T568B标准。

交叉线:线缆两边使用不同的线序,即一边使用T568A,一边使用T568B。

翻转线:线缆两边使用完全相反的线序,即一边是12345678,一边是87654321,用于交换机路由器的配置。

 

用于特殊目的IP地址

 

网络地址:

主机位全为0的IP地址 用来标识网络本身 用来代表整个网络 也叫网络ID 也叫子网ID

 

OSI 七层模型的划分

OSI 定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO 开放互连系统参考模型。

 

 

常用的熟知端口号

 

 

三次握手

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.socket编程中,客户端执行connect()时。将触发三次握手。

 

第一次握手:
建立连接时,客户端A发送SYN(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。客户端发送一个TCPSYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

 



第二次握手:
服务器B收到SYN包,必须确认客户ASYN(ACK=j+1),同时自己也发送一个SYN(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N1.X+1

 

第三次握手.
客户端A收到服务器BSYNACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN+1

完成三次握手,客户端与服务器开始传送数据。

 

最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。

CLOSED 关闭状态:

为建立建立连接之前的起始点,在连接超时或者连接关闭的时候进入此状态,但是这并不是一个真正的状态,而是这个状态图的假想起点和终点(便于我们思考与理解)。

LISTEN 监听状态:

服务器 server 端等待连接的状态。服务器经过 socketbindlisten 函数之后进入此状态,开始监听客户端发过来的连接请求。此称为应用程序被动打开(等待客户端的连接请求)。

SYN_SENT 状态:

第一次握手发生阶段,客户端发起连接。客户端调用 connect,发送 SYN 给服务器端,然后客户端进入 SYN_SENT状态,等待服务端的确认(三次握手中的第二个报文)。如果服务器端不能连接,则客户端直接进入 CLOSED 状态。

SYN_RECV 状态:

第二次握手发生阶段,这里是服务器端接收到了客户端的 SYN 请求,此时服务端由 LISTEN 进入 SYN_RECV 状态,同时服务器端回应一个 ACK,然后再发送一个 SYN SYN+ACK 给客户端。状态图中还描绘了这样一种情况,当客户端在发送 SYN 的同时也收到服务器端的 SYN 请求,即两个同时发起连接请求,那么客户端就会从 SYN_SENT 转换到 SYN_REVD 状态。

ESTABLISHED 状态:

第三次握手发生阶段,客户端接收到服务器端的 ACK 包(ACKSYN)之后,也会发送一个 ACK 确认包,客户端进入ESTABLISHED 状态,表明客户端这边已经准备好,但 TCP 需要两端都准备好才可以进行数据传输。服务器端收到客户端的 ACK 之后会从 SYN_RCVD 状态转移到 ESTABLISHED 状态,表明服务器端也准备好进行数据传输了。

总结:

客户端和服务器端都变为 ESTABLISHED 状态,就可以进行数据的传输了;当然 ESTABLISHED 也可以说是一个数据传送状态。

 

为什么TCP客户端最后还要发送一次确认呢?

一句话,主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。

如果使用的是两次握手建立连接,假设有这样一种场景,客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。此时此前滞留的那一次请求连接,网络通畅了到达了服务器,这个报文本该是失效的,但是,两次握手的机制将会让客户端和服务器再次建立连接,这将导致不必要的错误和资源的浪费。

如果采用的是三次握手,就算是那一次失效的报文传送过来了,服务端接受到了那条失效报文并且回复了确认报文,但是客户端不会再次发出确认。由于服务器收不到确认,就知道客户端并没有请求连接。

SYN攻击

在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect).此时服务器处于Syn_RECV状态.当收到ACK后,服务器转入ESTABLISHED状态.

Syn攻击就是 进行攻击的客户端 在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直 至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

Syn攻击是一个典型的DDOS攻击。检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击.Linux下可以如下命令检测是否被Syn攻击

netstat -n -p TCP | grep SYN_RECV

一般较新的TCP/IP协议栈都对这一过程进行修正来防范Syn攻击,修改tcp协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、增加最大半连接和缩短超时时间等.

但是不能完全防范syn攻击。

四次挥手

TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

 

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)

2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。

3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)

4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)

 

posted @ 2019-07-09 21:58  小羊杰克  阅读(1039)  评论(0编辑  收藏  举报