网络编程

网络概念


什么是网络

网络是由节点和连线构成的圈, 表示诸多对象及其关系

什么是计算机网络

计算机网络指的是将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路物理连接(包括有线、无线连接),并在网络操作系统、网络管理软件和网络通信协议的管理进和协调下,实现资源共享和信息传递的计算机系统。

带宽

在数字设备中,指的是单位时间数据的传输量。

网络传输习惯上使用比特率,即bps每秒传输的二进制位数。

常见的100M网络,实际上指的是理论上的下行速度为100Mbps,换算得12.5MBps.

拓扑

总线型

网络编程_第1张图片
所有设备都连接到公共总线上,节点间使用广播通信方式。一个节点发出的信息,总线上所有其他节点都可以接收到。一段时间只能允许一个节点独占总线。

常见使用同轴电缆连接,总线两端要终结器

优点

  1. 结构简单,易于实现
  2. 易于扩充,增加或者移除节点比较灵活
  3. 可靠性较高,个别节点发生故障时,不影响网络中其他节点的正常工作

缺点

  1. 网络传输能力低,安全性低,总线发生故障时,会导致全网瘫痪
  2. 所有数据都需要经过总线传输,总线是整个网络的瓶颈。节点数量多会影响网络性能。

环形结构

网络编程_第2张图片
环形结构是将互联网的计算机由通信线路连接成一个闭合的环,在环形结构网络中信息按照固定的方向流动,或顺时针方向,或者逆时针方向。

优点: 令牌控制,没有线路竞争,实时性很强,传输控制容易

缺点:维护困难,可靠性不高,一个节点发生故障时,可能导致全网瘫痪,可以使用双环拓扑结构,但是复杂性提升。

星型拓扑

网络编程_第3张图片
每个节点都有一条单独的通信线路与中心节点连接。其他该节点都与中心节点有着物理链路的直接互联,其他节点之间不能直接通信,其他节点直接的通信需要该中心节点进行转发,因此中心节点必须有着较强的功能和较高的可靠性。需要中心设备,例如hub,switch,router

优点: 可靠性高,结构简单,方便管理,易于扩展,传输效率高。

缺点: 线路利用率低,中心节点需要很高的可靠性和冗余度

注意: hub工作在一层,这种星型实际上就是芯片化的总线网络,只是物理拓扑结构上感觉像是星型。

OSI参考模型

OSI是Open System Interconnection 的缩写,意为开放式系统互联,国际标准化组(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

7层应用模型

网络编程_第4张图片
网络

  1. 物理层(一层):
*  以**0和1**代表电压的高低,灯光的闪灭界定连接器和网线的规格,是一个个的**bit位**,**脉冲电信号**
* 常见的设备是: **hub**、中继器、集线器、网线
  1. 数据链路层(二层):
* 将数据分**数据帧(Frame)**,将物理层的一个个bit为组成一个一个字节,并处理流控制,物理寻址重发等
* 常见设备是: **mac地址,mac地址表(不是设备)**、网卡、网桥、**二层交换机** 
  1. 网络层(三层):
* 将数据帧转成**包(package)**,并且进行包传递的**路径选择**--**路由**,将包传输到目标地址。使用逻辑地址即**IP地址**。
* 常见:**路由器、放火墙、多层交换机**还有**IP协议**

主机

  1. 传输层(四层)
* 将包组成**数据段**进行读取,提供了应用进程之间的逻辑通信,是由操作系统进行管理的。
* 常见:**TCP协议、UDP协议、进程、端口(socket)**
  1. 会话层(五层):
* 负责建立和新开通信连接
* 常见:会话管理、用户登录
  1. 表示层(六层):
* 解密、加密、图片解码和编码,数据压缩
* 常见:口令加密、图片编解码
  1. 应用层(七层)
* 为操作系统或者网络应用程序提供访问的端口
* 常见: **FTP协议、HTTP协议、HTTPS协议、DNS协议**

网络编程_第5张图片

数据传输

网络编程_第6张图片
数据很大,在应用层切分,每一层数据都会在下一层被封装。
在数据链路层会增加即校验位tail,最后在物理层都是电频信号0、1发送出去。
到了端设备由下至上逐层解包组合直到合成并还原成应用层的一份数据。

通讯的三种方式

  1. 单播:包在计算机网络传入中,目的地址为单一目标的传输方式。每次都是点对点的两个实体间相互通信。
    网络编程_第7张图片

  2. 广播: 数据在网络中传输,发往的目标地址是网络中所有设备的传输方式。所有设备是由范围的,这个范围称为广播域。
    网络编程_第8张图片

  3. 多播、组播:把数据同时传递给一组目的地址。数据源只发出一份数据,会在尽可能远的设备上复制和分发。
    网络编程_第9张图片
    网络编程_第10张图片
    冲突域: 网络中数据A发送数据时,设备B也发送数据,数据碰撞,发生了冲突,这两个设备就属于同一个冲突域。也是网络信号的碰撞。

交换机可以隔离冲突域。路由器可以隔离广播域

局域网 LAN

网络编程_第11张图片

局域网,指的是某一区域内,多台计算机互联的计算机组
常见的组网设备: 网线、网卡、有线网卡、无线网卡,集线器、交换机、路由器等

网络设备

1.网络设备
有线连接,需要使用网线,最早使用同轴电缆,后来始用双绞线,现在高速网络布线可以使用光纤。

常用的双绞线使用RJ45水晶头

直通采用两段T568B,互联使用一端 T568A 一端 T568B交叉线,不过目前现行网卡可以自适应,都使用直通线连接即可。
网络编程_第12张图片
集线器hub
工作在一层,使用HUB连接的设备看似是星型,实际上是总线型。
它是物理层设备,只认识电信号所以根本不认识什么MAC地址之类的信息。早期用来多机互联,信号中继的使用。

连入设备越多,广播信号在一个冲突域,网络效率很低

使用HUB连接的所有设备,都在同一个冲突域

交换机switch
工作在二层。内部记录着 MAC表,通过自学习,建立交换机端口和MAC地址对应表,内部有电路交换数据,如同信号立交桥。网桥也工作在这一层。

路由器router
工作在三层,内部记录着路由表,记录着路由器的端口到网络对应关系,这个表可以静态配置,也可以动态更新

功能:分割广播域:选择路由:维护和检查路由信息:连接广域网(在不同网络之间通信需要路由器)

广域网 WAN

广域网又称外网、公网,连接不同局域网或者城域网的计算机通讯网络。

互联网

互联网Inernet,也因特网,前身是美国军用官网APPA,后来连入了很多科研院校,并逐步商业化走向全球。

它连接了覆盖全球的网络,是众多的广域网互联的大型网络

互联网使用了TCP/IP协议

TCP/IP 协议栈

TCP/IP 传输控制协议/因特网互联协议
它是一个包含很多工作在不同层的协议的协议族,其中最著名的两个协议分别是TCP协议和IP协议。

它最早起源美国军用官网APPA,共定义了四层: 网络访问层、Internet层、传输层、应用层

TCP/IP协议是事实标准。目前局域网和广域网基本上也都用该协议。
网络编程_第13张图片

传输层协议

比较项 TCP UDP
连接类型 面向连接 无连接
可靠性 可靠 不可靠
有序 数据包有序号 没有包序
使用场景 大多数场合,数据不能出任何问题 视频、音频
  1. 连接
  • TCP需要通讯双方预先建立连接,需要三次握手四次断开
  • UDP不需要预先建立连接
  1. 可靠性
  • TCP需要确定每一个包是否收到,丢包重发,效率低一些
  • UDP尽最大的努力交付数据,不需要确认数据包,丢包无法知道,也不重发,效率高一些
  1. 有序
  • TCP包有序号,可以进行顺序控制,第一个包序号随机产生,之后的序号都和它有关
  • UDP包无序,无法纠正们只能在应用层进行验证

TCP协议的三次握手/四次断开

网络编程_第14张图片
三次握手建立连接

  1. Client 端首先发送一个SYN包告诉Server端我的初始序列号是x。

  2. Server 端收到SYN包后回复给Client一个ACK确认包,告诉Client说我收到了。Server端也需要告诉Client端自己的初始序列号,,于是Server也发送了一个SYN包告诉Client我的初始序列号是Y,这两个包一起发送。

  3. Client收到后,回复Server一个ACK确认包说我知道了

网络编程_第15张图片

四次断开

  1. Client 发送一个FIN包来告诉Server需要断开
  2. Server收到后回复一个ACK确认FIN包收到
  3. Server在自己没数据发送给Clinet后,Server也发送一个FIN包给Clinet,表示无数据发送了
  4. Client收到后会回复一个ACK确认Server的FIN包

主动发出FIN包就是主动关闭方,就会进入TIME_WAIT,原因是悲观比方发来的FIN包需要确认,万一此包丢失,被动关闭方未收到确认会超时重发FIN包,主动关闭方还在,可以重发ACK

IP地址

IP地址是IP协议提供的一种同一个地址格式,它为互联网上的网络设备分配一个用来通信的逻辑地址。 目前分为IP v4和IP v6。

IP V4

IP v4 是一个32位二进制数,不便记忆,为了使用方便,使用“点分十进制”表示法,将这个二进制数每8 位断开,每8位是一个字节,一个字节表示的十进制正整数范围是0~255。

IP v4地址早期比较充足,随着全球连入互联网,在2011年IP v4地址分配完毕。

IP 地址分类
公有地址:需向因特网信息中心申请,在互联网上可以直接使用的IP地址 私有地址:不需要注册,可以组织内部网络使用的IP地址

IP地址这个数被分成2部分,即网络位 + 主机位。 网络位表示设备同属一个网络;主机位表示网络中不同的设备的唯一ID。

子网掩码 子网掩码将IP地址划分为网络ID和主机ID。 IP地址 位与 子网掩码就是网络ID。

IP v4地址被分为下面A、B、C、D、E五类

类别 最大网络数 IP地址范围 单个网段最大主机数 私有IP地址范围
A类 126(2^7-1-1}) 1.0.0.0-127.255.255.255 16777214 10.0.0.0-10.255.255.255
B类 16384(2^14) 128.0.0.0-191.255.255.255 65534 172.16.0.0-172.31.255.255
C类 2097152(2^21) 192.0.0.0-223.255.255.255 254 192.168.0.0-192.168.255,255

A类

第一字节(高字节)为网络位。第一个字节变化为
0000 0001 到
0111 1111,共127,减去回环地址,剩余126个。

地址范围1.0.0.0到127.255.255.255。二进制表示为:
00000001 00000000 00000000 00000000 -
01111111 11111111 11111111 11111111。后一个是广播地址。

子网掩码255.0.0.0

每一个网络中主机个数等于 256^3-2 = 1677716-2 = 1677714。也就是后面24位可以变化。

高位是0

B类

前2个字节为网络位,其变化为128.0~191.255,相当于
1000 0000 0000 0000 到

1011 1111 1111 1111,实际上就是后14位变化,共2^14 = 16384个网络。
B类IP地址地址范围128.0.0.0-191.255.255.255 。二进制表示为:10000000 00000000 00000000 00000000 - 10111111 11111111 11111111 11111111)。 后一个是广播地址。

子网掩码255.255.0.0 每一个网络中主机个数等于 256^2 - 2 = 65535 -2 = 65534

高位是10

C类

前3个字节为网络位,其变化为192.0.0~223.255.255,相当于
1100 0000 0000 0000 0000 0000 到
1101 1111 1111 1111 1111 1111 ,实际上就是后21位变化,共2^21 = 2097152个网络。

C类IP地址地址范围192.0.0.0-223.255.255.255 。
二进制表示为:11000000 00000000 00000000 00000000 -
11011111 11111111 11111111 11111111)。 后一个是广播地址。

子网掩码255.255.255.0

每一个网络中主机个数等于256 - 2 = 254

高位是110

D类

多播地址,或组播地址。

多播地址高4位必须是1110,那么地址范围就是224.0.0.0到239.255.255.255。

224.0.0.1特指所有主机

E类

实验用地址

特殊IP地址

  • 0.0.0.0表示当前主机
  • 255.255.255.255 限制广播地址。路由器不会转发这个受限广播地址的数据报文,此地址只能用于 本网广播
  • IP地址中以127开头的地址称为Loopback回环地址
  • 169.254.x.x,windows主机使用了DHCP获取IP,但没有获得地址,windows会临时获得这样的地址

网关GATEWAY
网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,用于网络间互联。

举例
IP地址192.168.3.200,要配合子网掩码使用,假设子网掩码为255.255.255.0,说明它是C类地址。

网络ID为192.168.3.0,广播地址为192.168.3.255。

剩余192.168.3.1~192.168.3.254能够分配给网络中其他设备。

网关地址配置一般习惯使用1、100、254等。本例使用192.168.3.1。

其作用是连接不同的网络,也称为处在不同的网段。

又有一个IP地址为192.168.100.10/24,它也是C类地址,网络ID是192.168.100.0。 和上面的IP处在不同的网络,这两个地址的主机通信,就需要使用网关,由网关将数据包转发到另一个网络。

IP v6

互联网上的公有地址在2011年分配完,而随着互联网的发展,接入设备越来越多,尤其是物联网的到 来,此问题必须解决。由此,提出了IP v6。

IP v6采用128位二进制数表示,基本解决IP地址短缺现象,同时,该协议还解决原有协议的诸多问题。

冒号表示法

  • fd36:1cbf:beba:0:a430:75cd:ad32:65b9,冒号切成8段,16位一段,16位是2个字节

  • 前导0可以省略

0位压缩表示法

  • 如果冒号表示法中,中间部分是连续的0,可以直接将这部分压缩为::,但是只能压缩一次
  • fd36:0:0:0:0:0:0:65b9可以表示为fd36::65d9 0:0:0:0:0:0:0:0 可表示为::
  • 0:0:0:0:0:0:0:1 可表示为::1

你可能感兴趣的:(原创,网络基础)