【计算机网络】关于物理层、数据链路层、网络层、传输层

第一层—物理层

集线器:解决多个设备网线过多

   

但集线器收到信号只能转发给所有设备,不能选择性转发。

 

MAC地址:所有连接到集线器的设备的全局唯一的名字。 用于帮助集线器的选择性转发。它是由网络设备制造商生产时烧录在网卡的EPROM(一种闪存芯片,通常可以通过程序擦写)。其中前 24 位(00-16-EA)代表网络硬件制造商的编号,后 24 位(AE-3C-40)是该厂家自己分配的,一般表示系列号。MAC地址不可修改

 

集线器还是会将数据发给所有设备,但是设备看到不是发给自己的,就会丢弃数据。

   

但是这样依然还是会发给所有设备,存在安全问题,能不能就只发给一个设备呢?

 

第二层—数据链路层

交换机:交换机内部维护一张 MAC 地址表,记录着每一个 MAC 地址的设备,连接在其哪一个端口上。

你给这个通过这样传输方式而组成的小范围的网络,叫做以太网。

   

 

随着机器数量越多,交换机的端口也不够了,但聪明的你发现,只要将多个交换机连接起来,这个问题就轻而易举搞定~

 

   

 

   

 

但如果电脑的数量再多,那么交换机也无法承受了。

 

第三层—网络层

路由器:用于取代大量的交换机。路由器的每一个端口,都有独立的 MAC 地址

   

 

那么若在不在同一以太网下,则要不要发给路由器,是怎么判断的呢?

 

IP地址:给每一台机器一个 32 位的编号,如:

11000000101010000000000000000001

你觉得有些不清晰,于是把它分成四个部分,中间用点相连。

11000000.10101000.00000000.00000001

你还觉得不清晰,于是把它转换成 10 进制。

192.168.0.1

IP地址无法更改

 

子网掩码:为了能让计算机懂得如何判断子网而诞生

 

子网:将源 IP 与目的 IP 分别同这个子网掩码进行与运算,相等则是在一个子网,不相等就是在不同子网,就这么简单。

   

 

如果在同一个子网,则通过数据链路层进行传输数据。

如果不在一个子网,则把数据包转发给路由器,通过网络层进行传输。

 

 

在传输数据时,我们只能知道ip地址,不知道MAC地址,那么如何在同一子网下传输呢?

 arp 协议:每个电脑里面会有一张 arp 缓存表,表中记录着 IP 与 MAC 地址的对应关系。

 

默认网关:A 只能直接把包发给同处于一个子网下的某个 IP 上,所以发给路由器还是发给某个电脑,对 A 来说也不关心,只要这个设备有个 IP 地址就行。所以默认网关,就是 A 在自己电脑里配置的一个 IP 地址,以便在发给不同子网的机器时,发给这个 IP 地址。

 

 

发送到路由器需要获得路由器的MAC

直接通过交换机传输几节课

数据链路层的任何传输都需要经过交换机,而经过交换机就必须要MAC地址,所以数据链路层的任何传输都需要AMC地址。

路由器之间的传输是通过数据链路层上的,源MAC和目标MAC都需要变化为路由器1的MAC和路由器2的MAC。

 

   

 

 

第四层—传输层

前三层只能实现主机与主机之间的传输,但是传输给主机之后,不知道要将数据交给哪个进程?

 

于是在数据包中增加了传输层的头部,其中包括源端口和目标端口, 这也就达成了UDP 协议!

   

 

 

然而,在数据传输过程中还是会出现很多问题。

丢包、效率、顺序问题

由于网络的不可靠,数据包可能在半路丢失,而 A 和 B 却无法察觉

A 在发送的数据包中增加一个序号(seq),同时 B 要在 ACK 包上增加一个确认号(ack),这样不但解决了停止等待协议的效率问题,也通过这样标序号的方式解决了顺序问题。

          

 

流量问题

有的时候,A 发送数据包的速度太快,而 B 的接收能力不够。

 

解决办法:动态滑动窗口

每次发送数据包给 A 时,顺带传过来一个值,叫窗口大小(win),这个值就表示 B 的接收能力。同理,每次 A 给 B 发包时也带上自己的窗口大小,表示 A 的接收能力。

   

 

拥塞问题

拥塞控制与流量控制有些像,但流量控制是受 B 的接收能力影响,而拥塞控制是受网络环境的影响。

 

解决方式:动态滑动窗口

A 单方面通过试探,不断感知网络环境的好坏,进而确定自己的拥塞窗口的大小。

假如拥塞窗口的大小为  cwnd,上一部分流量控制的滑动窗口的大小为 rwnd,那么窗口的右边界受这两个值共同的影响,需要取它俩的最小值。

窗口大小 = min(cwnd, rwnd)

 

 

连接问题

有的时候,B 主机的相应进程还没有准备好或是挂掉了,A 就开始发送数据包,导致了浪费。

 

解决方式:三次握手

A:我准备好了(SYN)

B:我知道了(ACK),我也准备好了(SYN)

A:我知道了(ACK)

 

有了建立连接的过程,就要考虑释放连接的过程。

 

解决方式:四次挥手

A:再见,我要关闭了(FIN)

B:我知道了(ACK)

     给 B 一段时间把自己的事情处理完...

B:再见,我要关闭了(FIN)

A:我知道了(ACK)

 

TCP

TCP 是

面向连接的、可靠的、基于字节流的

传输层通信协议

 

什么是基于字节流?

TCP 在建立连接时,需要告诉对方 MSS(最大报文段大小)。

也就是说,如果要发送的数据很大,在 TCP 层是需要按照 MSS 来把数据切割成一个个的 TCP 报文段 的。

切割时只会把数据当作一个个字节来进行切割,不会考虑别的问题。这也就是基于字节流的含义。

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值