一、总线型网络:
总线型拓扑结构简称总线拓扑,它是将网络中的各个节点设备用一根总线(如同轴电缆等)挂接起来,实现计算机网络的功能。
各个主机之间通信是通过MAC地址。
MAC(Medium/Media Access Control)地址,也叫硬件地址,用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位)。
MAC地址对应于OSI参考模型的第二层数据链路层
1、A和B通信:
A先“喊一嗓子“说我要和哪个地址进行通信。
A“喊的这一嗓子”就是所发报文的首部,称为报头。
真正要传输的信号在报头的后面,同时报文中也会标明这个信号是由谁发的。
由于所发的信号在网络中是电信号的形式。所以A发出的信号B和C都可以看到,只不过只有B真正接受了。
2、问题来了,A给B发信号是如果C也在给B发信号怎么办?
CSMA/CD::载波侦听多路访问,冲突检测
CSMA/CD应用在 OSI 的第二层数据链路层
CSMA/CD应用于以太网
工作机制:
有人将CSMA/CD的工作过程形象的比喻成很多人在一间黑屋子中举行讨论会,参加会议的人都是只能听到其他人的声音。每个人在说话前必须先倾听,只有等会场安静下来后,他才能够发言。人们将发言前监听以确定是否已有人在发言的动作称为”载波监听”;将在会场安静的情况下每人都有平等机会讲话成为“多路访问”;如果有两人或两人以上同时说话,大家就无法听清其中任何一人的发言,这种情况称为发生“冲突”。发言人在发言过程中要及时发现是否发生冲突,这个动作称为“冲突检测”。如果发言人发现冲突已经发生,这时他需要停止讲话,然后随机后退延迟,再次重复上述过程,直至讲话成功。如果失败次数太多,他也许就放弃这次发言的想法。通常尝试16次后放弃。
所以上述问题可以这样解决:
A要是想发信号,在发之前探测一下线路是否繁忙,不繁忙则立即向外发送信号,且边发信号边侦听,中途如果发生冲突,则立即停止发送,后退,等待一段时间,然后继续探测。
二、星型网络
变形的总线型网络,只是为了接线方便而已。
三、网桥
当主机越来越多时,产生冲突的可能性是极大的,所以我们可以将一个大网络切割成多个小网络。
冲突域:A和C处于同一个冲突域,B和D处于同一个冲突与。
工作机制:
当A要给C发信号时,网桥会进行拦截,不让信号传到右边网络中
当A给B发信号时,网桥帮忙转发
那么问题来了,网桥是如何知道哪个主机在哪个网络上?
答:网桥内部有一张表,上面明确标明了哪个接口连着哪台主机。
那么这个表是怎么来的?
答:方法一:管理员自己添加表
方法二:网桥通过学习自己生成
假设网桥内部没有表,当A给C发数据时,网桥并不知道C在哪,所以它就会往每台主机都转发。(广播机制)
当A发信号给C时,报文里面有A的地址和C的地址,当网桥收到报文以后,虽然不知道C在什么地方,但是它至少可以判定A的报文来自于1号接口。所以网桥在表中记录:A在1号接口上
当C回复报文给A,可以得知C在哪个接口上
依次类推!
4、交换机
上面的网络中A和C通信时还是会产生冲突,我们将网桥极端到一种情况下:
网桥上有好多接口,每个接口连接一台主机
半双工模型:这时候还是A于B的通信还是只能A发B收,或者B发A收,而且A与B通信时C不能与B通信。因为A与网桥还是通过网线连接的。
半双工模型:若使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据,这样的传送方式就是半双工制.采用半双工方式时,通信 系统每一端的发送器和接收器,通过收 / 发开关转接到通信线上,进行方向的切换,因此,会产生时间延迟.收 / 发开关实际上是由软件控制的电子开关.
当计算机主机用串行接口连接显示终端时,在半双工方式中,输入过程和输出过程使用同一通路.有些计算机和显示终端之间采用半双工方式工作,这时,从键盘打 入的字符在发送到主机的同时就被送到终端上显示出来,而不是用回送的办法,所以避免了接收过程和发送过程同时进行的情况. (摘自:http://blog.sina.com.cn/s/blog_a4969fed0102vvoh.html)
全双工模型:AB可以同时发信号(交换机)
当数据的发送和接收分流,分别由两根不同的传输线传送时,通信双方都能在同一时刻进行发送和接收操作,这样的传送方式就是全双工制.在全双工方式下,通信 系统的每一端都设置了发送器和接收器,因此,能控制数据同时在两个方向上传送.全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟,这对 那些不能有时间延误的交互式应用(例如远程监测和控制系统)十分有利.这种方式要求通讯双方均有发送器和接收器,同时,需要 2 根数据线传送数据信号.(可能还需要控制线和状态线,以及地线).
交换机中最为智能核心得组件就是那张表,那张表是动态的,会每隔一段时间删除,然后再重新添加,以保证表中数据的正确性。
5、网关与路由
在交换机中任何两个主机在通信之前都要广播一生,如何一台交换机上同时有许多主机进行广播,那么网络就会陷入混乱。所以我们可以将一个大的交换机拆分成许多小的交换机。
如图交换机连接在1号接口上,交换机2连接在2号接口上。
A和B通信就是交换机1内部的事情。
A和D如何通信呢?
这时就要用到逻辑地址(ip地址)了
逻辑地址是用来完成不同网络之间的通信的
假如交换机1处于1号网络中,交换机2处于2号网络中,A的逻辑地址是1.1,B是1.2,C是1.3…….(实际上逻辑地址的形式并不是这样的,为了方便说明问题我才这样写)
A要和D通信:
A首先会喊一声:我是1.1我要和2.1通信,交换机发现1.1和2.1不在同一个网络中(通过子网掩码),那么就需要一个中间设备转出去,这个设备就是网关R1(默认网关)
这个网关也需要MAC地址,因为它和A之间的通信是本地的。
所以整个通信过程中A首先发送一个报文,源ip是1.1 目标ip是2.1
当交换机发现2.1不是本地的主机,就再包裹一层报文,源mac是A的mac,目标mac是R1的mac,
报文到达R1后,R1拆除外面这层mac地址,露出ip地址,由ip地址完成R1到R2之间的通信。
当报文到达R2后,R2与D只见属于交换机2的内部通信,于是再包裹一层mac地址,源mac是R2的mac,目标mac是D的mac。
arp:地址解析协议,由ip地址获取mac地址。
rarp:反向地址解析协议,由mac地址获取ip地址。
逻辑地址分为:网络地址,主机地址
子网掩码:根据ip地址获取网络地址
例如:1.1与2.1进行通信,1号网络的掩码与1.1相与得到,得出网络地址1.0;然后再与2.1相与,得到网络地址2.0。由此判断不是同一个网络。
那么R1与R2之间是如何进行转发的
网关设备内部有一张表,标识着1.0网络通过R1可以到达,2.0网络通过R2可以到达……,这就是路由表。
如图A要如何与M进行通信呢?
路由有学习的功能:
路由1没事就向外喊我能到达R1,R2,R3,R4,R5这样一喊,路由2就通过R6接口收到消息了,就在自己内部生成一张路由表。 收敛。
若路由器1坏了,它得告诉其它网络自己坏了,其他网络再修改自己的路由表。
同样路由器1和三也可以通过学习生成一张路由表。
这样A与M通信: A–>R1—->R5—>R6—->R7—–>R8——>R9—–>M。
1.1想要和7.1的80端口通信,意味着7.1的80得一直等待着(监听),也就是说进程需要一直坐在门后等待着,“一扇门“(端口)只能属于一个进程,也就意味着进程与端口之间建立了关联关系。建立关联关系以后这个门就始终处于监听状态,别人过来就可以随时打开“这扇门“,这种机制对于服务端是被动打开,有人来我就打开。对于客户端来说是主动打开。
若有两块网卡,每个网卡都有好多端口可以用,也就是说eth0上的80端口和eth1上的80端口可以同时对外开放。
对于主机来说如何区分两个80端口呢?这就用到了套接字(将ip和端口绑定起来)。
所以将来启动某个进程,实际上是监听在一个套接字上的。
IP Header:
(祥见:https://blog.csdn.net/lpnueg4/article/details/4837773)
一个ip报文可能太大,需要切片进行传输,将identification相同的片组合在一起,组合时每个片所处的位置取决于Fragment Offset(片偏移量)。
子网掩码:
0000 0000 - 1111 1111(0 - 255)
企业中常用到的是ABC类网。
A类:255.0.0.0 8
A类地址的首位为0,可变化的只有7位
0 000 0001 - 0 111 1111(1-127)
127个A类,但由于127用于回环,所以为1 -126
有2^7-1个A类网
容纳主机:2^24-2
主机位全0:网络地址
主机位全1:广播地址
B类:255.255.0.0 16
B类地址首位为10,可变化的位有14位
10 00 0000 - 10 11 1111
128 -191
64个类
2^14个B类网
能容纳主机:2^16-2
C类:255.255.255.0, 24
C类地址的首部为110 可变化的有5位
110 0 0000 - 110 1 1111
192 - 223
32个C类,2^21个C类网
容纳主机数:2^8 -2
私有地址:
A类:10.0.0.0/8
B类:172.16.0.0/16-172.31.0.0/16
C类:192.168.0.0/24-192.168.255.0/24
路由: 选路
A如何与M通信呢?
R1通过查看自己的路由表,知道A要到M,下一跳为R2,它就将报文扔给R2,然后就不管了,有R2继续传递。
每个路由器只关心自己的下一跳。
在路由表的路由条目中,目标地址是一个主机的称为主机路由,是一个网段的,称为网络路由
目标地址为 0.0.0.0 为缺省路由,也成为默认路由。 就是实在没有一个路由条目能到达。就将报文发送给缺省路由。
超网:将几个子网汇聚在一起。
思考:
场景:公司在互联网上申请了一个地址:201.1.2.0/24,这个地址本来时能容纳254个主机的,现在我们公司内部只有10个主机,我们希望其中4个可以互相通信,另外6个可以互相通信。但是公司只有一个网络呀,这可怎么办?
解决办法:如果在网上再申请一个网络,代价很昂贵。
可以从主机位拿过来2位当做网络位,那么每一个主机位就只剩下6位了,6位可以容纳2^6-2个主机。
两位变化可以是00,01,10,11不考虑00,11
01 00 00001 - 01 11 1110:
201.1.2.64 - 201.1.2.127
64 - 126
10 00 00001 - 10 11 1110
201.1.2.128 - 201.1.2.191
129- 190