言十年的博客

上善若水,水善利萬物而不爭

物盡其用!人盡其才!兩全其美!


linux网络学习笔记

10Mbps/s

10M个。每秒钟传递多少个位

传输速率不仅跟网卡有关,还有传输介质

同轴电缆装了三台主机,A、B、C。

当A发送信号给C的同时,B就不能给C发信号了。因为A就占用了信道。为了解决这个问题,提出了线路仲裁。

线路仲裁

MAC:Media Access Control 介质访问控制

mac规则是为了解决多台主机征用同一底层信道而产生的冲突现状的。

发送方如何表示目标主机。识别码。

给每个设备来个识别码。这个识别码是网络中使用。放到网络设备中,网络接口。支撑mac这种算法所仲裁的结果得以实行的。这个地址叫做mac地址。

MAC地址

首部:报头

A B C D这四台主机

A发送信号给D,其实BCD都可以收到,不过看谁能接了,可以理解成广播。

要想实现网络仲裁首先要标识每台设备——mac地址。

CSMA/CD:Carrier Sense Multi Access Clision Detection 载波侦多路访问,听冲突检测

A发信号先看信号忙不忙。不忙,立即发送信号。边发送边侦听,如果侦听过程中发生了冲突,则立即停止发送,后退,等待一段时间后再次探测。

A信号,C也打算发信号。双方都发现都能发信号。同时发信号,就会发生冲突。使用了这种机制的我们叫做以太网,以太网(Ethernet)的标志就是CAMA/CD。

这只是一种机制。

环形网络,IBM专利。

令牌环网。另外一种机制解决了线路仲裁。

星形网络。

HUB集线器。集线器有什么意义呢?

T形头。为了简化这种机制出现了HUB。HUB是一种变形的总线结构。把这种线做成了一个设备。 逻辑上来讲还是总线型网络。

一个网络中主机越来越多会发生什么情况(电脑多了可能会发生信号传输冲突)?

可以把大的网络,切割成小的网络。

小网络之间如何联系?中间有个隔离设备。这个设备可以叫做网桥。

子网络与子网络中间的主机是不能重名的。

子网络的主机如何知道其他子网络中的主机呢?

通过一个设备。一张表。这表中的数据从何而来。

子网络发送数据也是广播的,不管木地方在哪个网络。都会发送到其他子网络。

网桥的功能就是具有这张表,如何生成呢?

网桥内部有个存储空间,可以手动的建立。或者网桥也会自动学习。

A如何知道网络中有个B的呢?

A给B通讯,首先要知道B是谁。

我们可不可以极端到,每一个主机都是一个子网。 半双工:

全双工:两根线,这时候用的就是双绞线了,而不是铜轴电缆了。

交换机。交换机中有个表。

一个交换机下的通信是平面化的。地址是物理地址。

多个交换机下的主机有了另外一个地址,是逻辑地址。这个地址是IP地址。

两个交换机同过一个机器(路由器)隔离。这个设备是标记交换网络的。如何标记主机。IP地址。这个设备是转发报文。通过的接口就是网关(通常叫做默认网关)。这个接口也必须有它的mac地址。没有mac地址就没办法收mac报文的(本地网络通讯地址必须要靠mac地址)。mac地址是用来广播的。

假设 A(编号1.1,在1号网络) 发给 M (编号2.1,2号网络),报文首部是(1.1,2.1也就是1.1要发给2.1)

交换机不做报文处理,直接转发。它是交给路由接口R1(报文再次封装首部,原地址A,目标地址是R1的mac地址)。R1接收到报文(去掉A,R1)然后R1发给R2地址。R2并不知道M在哪里但是知道2.1,不知道2.1在哪个主机上。然后R2开始广播,M把自己的mac告诉了R2(R2在原报文中再封装首部原地址是R2目标地址是M)。这样M就可以收到报文了。

1.1跟2.1起什么作用。在网络之间转发报文的。A要跟B(A跟b是一个网络下)通讯中间设备不管。中间设备是实现在网络之间转发报文的。1.1根2.1(也就是ip地址)主要是识别是本机网络还是远程网络的。

A发B要知道B。所以要广播。广播寻人。交换机不能隔离广播,隔离的是冲突。

双绞线:4组八根,其中只有两根有用。4组每组不同颜色。相同颜色的扭在一起。一根是传输信号。一根是抗干扰的。

还有线路过长后会发生什么情况?电路是有电阻的。

电子流动过程中,转换成热能,动能,信号会衰减的。为了传输的更远更长,怎么办?要放大信号。中继器。以太网网线,理论100米。

以太网实质就是总线型网络。

任何一台网络主机通讯。

网桥隔离了冲突。

网桥就是交换机。

交换机可以隔离冲突,但是对广播没有办法。

要隔离广播(否则还是占带宽的),要划片而治。于是从mac地址基础上引入了逻辑地址。我们加入了一个设备。把交换机联络起来。这样就隔离了广播。不是本地的通讯才进行转发。

mac地址不能跨网络。

本地通讯先广播,广播的目的是将逻辑地址转换成mac地址。地址解析,ARP协议完成的工作

反向解析:知道mac地址通过mac地址知道ip地址

逻辑地址分为两段,一段是网络地址,一段是主机地址。网络地址是标识不同网络的。

子网掩码是根据它的ip地址取它的网络地址。

网络地址

0000 0001. 0000 0001

掩码

1111 1111. 0000 0000

0000 0001. 0000 0000

1.0

1.1 —> 2.1

1.0 —> 2.0

1.1 —> 1.2

1.0 —> 1.0

结果一样说明源跟目标是一个网络中。

交换机连接不同的冲突域

路由器连接不同的广播域

交换机内部的表:mac表,管理员生成,机器自己学习

路由器:路由表,管理员生成,机器自己学习这个过程就比较麻烦了。

如果1.1跟7.1中通讯。中间的路由器好几个接口都连接不同的网络区域。

R5->R6->R7

R5怎么才能知道 7.1在R7呢?

R5要知道R7。

这个网络中有三个路由器。生成一个表,问题也不大。

路由设备可以自己学习。利用某种协议完成。Rip2,ospf。通过规定的方式,不停地向外喊。学习到之后,建立条目。

有个问题

R1->R2->R3->R4->R5->R6->R7

如果R1坏了,R2知道R1坏了。

但是R7不知道啊,还以为R1知道。

其实,实际上R1坏了,会告诉大家R1是到不了的。

从路由器表一种状态一个条目的改变,转换成另一种网络状态之前,叫路由表的收敛的过程。

网络大了,这样的收敛过程可能要慢。

路由协议。不同协议间的学习算法不一样。

ip叫做被路由协议。Routed

mac地址:标记本地网络的通讯。

ip地址:实现主机到主机的通信。

计算机是多线程。多个程序都产生通讯。

1.1 跟 7.1 发送数据。发qq,发其他请求。那么7.1收到之后如何去相应。怎么是跟7.1哪个程序进行通信的?为了表示不同主机间的哪个进程跟哪个进程通讯我们需要标识是哪个程序。仅用ip还是不够。所以靠端口号。我们用8标识qq。所以1.1的8跟7.1的8通信,这样转发过来,就知道交给哪个程序处理了。端口是标识进程到进程之间的通信的。

每个服务器端口号:0–65536

端口跟服务器没有必然的关系。它没告诉我它在那个端口,那么我怎么知道呢?

其实,事先有个规范,比如访问web服务器有个默认的端口80。

对客户端来讲,客户端从本地没有使用的端口随机挑一个。

监听端口:什么时候访问这个端口,就把这访问领进来。

一个端口只能属于一个进程。有人来就打开,这叫做被动打开。

客户端访问叫做主动打开,服务器端叫做被动打开。

端口跟ip地址有关联关系的。

本地有两个网卡,每个网卡都有自己的ip地址。

不同的人,通过不用网卡,访问80端口。对于当前主机怎么区别。必须把ip跟端口绑定起来。绑定起来叫做套接字,一组叫做socket。

mac在紧邻的设备之间转换的。

两个主机间要互相理解ip,mac,端口

协议分层

报文前导码

分享到