网络知识整理

网络概述编程

网络是经过外围设备和连线,将分布在相同或不一样地域的多台计算机链接在一块儿所造成的集合。服务器

网络拓扑cookie

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

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

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

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

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

拓扑结构的概念:性能

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

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

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

总线型拓扑结构

 总线型拓扑结构采用单根传输线做为传输介质,全部的站点都经过相应的硬件接口直接链接到传输介质上。

特色:

一、成本较低。 二、两端要安装终端电阻。 三、链接的计算机数目较少。(通常少于20台) 四、稳定性差,主要用于10M网络。 五、网路中某点出现故障,则可能全网络瘫痪

星型拓扑结构

星型拓扑是由中央节点和经过链接到中央节点的各站点构成的。全部的节点都有专有线缆链接中心的中心节点上。

特色:

一、工做站接入和退出容易。 二、通常用双绞线链接,符合现代综合布线的标准。 三、能够知足多种带宽:10M、100M、1000M 四、对中心节点的依赖性较大。 五、中心节点能够级联,可是不超过4级。 六、能够隔离单颗粒故障

环形拓扑结构

环型拓扑结构是把网上全部的节点经过电缆依次链接造成一个封闭的物理环,在这个物理环中,每一个电脑至关于中继器做用。

特色:

一、每一个工做站至关于一个中继器,有还原信号的做用。 二、环路中增长用户困难。 三、可靠性差,不易管理。

计算机网络的几种分类

按覆盖的地理范围分类

局域网(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)

相关文章
相关标签/搜索