你知道网络协议的各个层是干嘛的吗?

原文:一文读懂一台计算机是如何把数据发送给另一台计算机的_大黄的Java笔记的博客-CSDN博客

  1. 两台计算机要通信,首先需要硬件的联通,所以有了物理层(电缆 光纤)
  2. 数据是以二进制01形式传输的,但是如果这些01代码没有规则,计算机也都不懂?以太网协议
    1. 所以有了数据链路层,以太网协议规定了这个规则
  3. 计算机要发送信息那么发送给谁呢?MAC地址
    1. 所以有了MAC地址,唯一标识一台计算机,物理标识。
  4. 计算机 A 是如何知道计算机 B 的 MAC 地址的呢?ARP协议
    1. ARP协议也是通过广播的形式给同一个子网中的每台电脑发送一个数据包(当然,这个数据包会包含接收方的IP地址)。对方收到这个数据包之后,会取出IP地址与自身的对比,如果相同,则把自己的MAC地址回复给对方,否则就丢弃这个数据包。这样,计算机A就能知道计算机B的MAC地址了
  5. 有了MAC地址可是它要怎么给它传送数据呢?广播
    1. 计算机 A 不仅连着计算机 B,而且计算机 A 也还连着其他的计算机。    虽然计算机 A 知道计算机 B 的 MAC 地址,可是计算机 A 却不知道知道计算机 B 是分布在哪边路线上,为了解决这个问题,于是,有了广播的出现
      1. 在同一个子网中,计算机 A 要向计算机 B 发送一个数据包,这个数据包会包含接收者的 MAC 地址。当发送时,计算机 A 是通过广播的方式发送的,所有同一个子网中的计算机都会取出数据包与自身的MAC地址比较,如果匹配则传输,如果不匹配则丢弃
  6. 计算机 A 通过广播的方式发一个数据包给计算机 B , 其他所有计算机也都能收到这个数据包,然后进行对比再舍弃。世界上有那么多它计算机,每一台计算机都能收到其他所有计算机的数据包,那就不得了了。那还不得奔溃。  因此产生了子网这么一个东西。
  7. 我们如何区分哪些 MAC 地址是属于同一个子网的呢? IP 协议
    1. 每一台想要联网的计算机都会有一个IP地址。这个IP地址被分为两部分,前面一部分代表网络部分,后面一部分代表主机部分。并且网络部分和主机部分所占用的二进制位数是不固定的。网络部分一样则表示在同一个子网中。
  8. 你怎么知道网络部分是占几位,主机部分又是占几位呢?子网掩码
    1. 例如,192.168.43.1和192.168.43.2的子码掩码都为255.255.255.0,把IP与子码掩码相与,可以得到他们都为192.168.43.0,进而他们处于同一个子网中。
  9. 大家会发现 我们输入的域名,那么域名怎么找到对应的计算机呢?DNS域名解析
    1. 当我们输入这个域名时,会有一个叫做DNS服务器的家伙来帮我们解析这个域名,然后返回这个域名对应的IP给我们的
  10. 我们已经把数据成功从计算机A传送到计算机B了,可是,计算机B里面有各种各样的应用程序,计算机该如何知道这些数据是给谁的呢? 端口号
  11. 虽然我们收到了传输层传来的数据,可是这些传过来的数据五花八门,有html格式的,有mp4格式的,各种各样。你确定你能看的懂? HTTP协议
    1. 因此我们需要指定这些数据的格式规则,收到后才好解读渲染。例如我们最常见的 Http 数据包中,就会指定该数据包是 什么格式的文件了。

综合问题:当浏览器发起一个请求时,如果找到对应的计算机?

1. 首先根据DNS查找域名对应的ip地址,先判断浏览器缓存中是否有映射关系,如果没有查询本机host文件,再没有就查询远端域名解析器

2. 找到ip后,根据ip逻辑与上子网掩码,得到目标机器属于哪个网络,然后用子网掩码取反与上ip地址,得到哪个具体主机

3. 找到主机后,根据端口号找到对应的服务器。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值