• 小白文——计算机网络如何学??


    推荐阅读:

    计算机⽹络相⽐操作系统好学⾮常多,因为计算机⽹络不抽象,你要想知道⽹络中的细节,你都可以通过抓包来分
    析。
    也就是说,计算机⽹络不会因为设备的不同⽽不同,⼤家都遵循这⼀套「规则」来相互通信,这套规则就是
    TCP/IP ⽹络模型

    TCP/IP ⽹络模型

    对于同⼀台设备上的进程间通信,有很多种⽅式,⽐如有管道、消息队列、共享内存、信号等⽅式,⽽对于不同设
    备上的进程间通信,就需要⽹络通信,⽽设备是多样性的,所以要兼容多种多样的设备,就协商出了⼀套通⽤的⽹
    络协议

    应用层

    最上层的,也是我们能直接接触到的就是应⽤层(Application Layer),我们电脑或⼿机使⽤的应⽤软件都是在应⽤层实现。

    那么,当两个不同设备的应⽤需要通信的时候,应⽤就把应⽤数据传给下⼀层,也就是传输层。

    所以,应⽤层只需要专注于为⽤户提供应⽤功能,不⽤去关⼼数据是如何传输的,就类似于,我们寄快递的时候,

    ⽽且应⽤层是⼯作在操作系统中的⽤户态,传输层及以下则⼯作在内核态。

    传输层

    在传输层会有两个传输协议,分别是 TCP 和 UDP

    TCP 的全称叫传输层控制协议(Transmission Control Protocol),⼤部分应⽤使⽤的正是 TCP 传输层协议,⽐
    如 HTTP 应⽤层协议。TCP 相⽐ UDP 多了很多特性,⽐如流量控制、超时重传、拥塞控制等,这些都是为了保证
    数据包能可靠地传输给对⽅。

    UDP 就相对很简单,简单到只负责发送数据包,不保证数据包是否能抵达对⽅,但它实时性相对更好,传输效率
    也⾼。当然,UDP 也可以实现可靠传输,把 TCP 的特性在应⽤层上实现就可以,不过要实现⼀个商⽤的可靠 UDP
    传输协议,也不是⼀件简单的事情。

    应⽤需要传输的数据可能会⾮常⼤,如果直接传输就不好控制,因此当传输层的数据包⼤⼩超过 MSS(TCP 最⼤
    报⽂段⻓度) ,就要将数据包分块

    这样即使中途有⼀个分块丢失或损坏了,只需要重新这⼀个分块,⽽不⽤重新发送整个数据包。在 TCP 协议中,我们把每个分块称为⼀个 TCP 段(TCP Segment)。

    当设备作为接收⽅时,传输层则要负责把数据包传给应⽤,但是⼀台设备上可能会有很多应⽤在接收或者传输数
    ,因此需要⽤⼀个编号将应⽤区分开来,这个编号就是端⼝

    ⽽对于浏览器(客户端)中的每个标签栏都是⼀个独⽴的进程,操作系统会为这些进程分配临时的端⼝号。

    由于传输层的报⽂中会携带端⼝号,因此接收⽅可以识别出该报⽂是发送给哪个应⽤。

    网络层

    我们不希望传输层协议处理太多的事情,只需要服务好应⽤即可,让其作为应⽤间数据传输的媒介,帮
    助实现应⽤到应⽤的通信,⽽实际的传输功能就交给下⼀层,也就是⽹络层(Internet Layer)。

    ⽹络层最常使⽤的是 IP 协议(Internet Protocol),IP 协议会将传输层的报⽂作为数据部分,再加上 IP 包头组装
    成 IP 报⽂,如果 IP 报⽂⼤⼩超过 MTU(以太⽹中⼀般为 1500 字节)就会再次进⾏分⽚,得到⼀个即将发送到⽹络的 IP 报⽂。

    ⽹络层负责将数据从⼀个设备传输到另⼀个设备,世界上那么多设备,⼜该如何找到对⽅呢?

    我们⼀般⽤ IP 地址给设备进⾏编号,对于 IPv4 协议, IP 地址共 32 位,分成了四段,每段是 8 位。

    因此,需要将 IP 地址分成两种意义:

    • ⼀个是⽹络号,负责标识该 IP 地址是属于哪个⼦⽹的;
    • ⼀个是主机号,负责标识同⼀⼦⽹下的不同主机;

    怎么分的呢?

    这需要配合⼦⽹掩码才能算出 IP 地址 的⽹络号和主机号。那么在寻址的过程中,先匹配到相同的⽹络号,才会去找对应的主机。

    除了寻址能⼒, IP 协议还有另⼀个重要的能⼒就是路由。

    数据链路层

    路由器怎么知道这个 IP 地址是哪个设备的呢?

    每⼀台设备的⽹卡都会有⼀个 MAC 地址,它就是⽤来唯⼀标识设备的。

    路由器计算出了下⼀个⽬的地 IP 地址,

    再通过 ARP 协议找到该⽬的地的 MAC 地址,这样就知道这个 IP 地址是哪个设备的了。

    物理层

    当数据准备要从设备发送到⽹络时,需要把数据包转换成电信号,让其可以在物理介质中传输,这⼀层就是物理层
    (Physical Layer),它主要是为数据链路层提供⼆进制传输的服务。

    推荐阅读:


    __EOF__

  • 本文作者: 贝贝子
  • 本文链接: https://www.cnblogs.com/bbzblog/p/15972295.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    二分算法(蓝桥杯 C++ 题目 代码 注解)
    一文搞懂shell脚本
    Android 编译C++
    概率论与数理统计
    C# 成为2023年度编程语言之王
    uni-app小程序使用vant
    CocosCreator3.8研究笔记(二十三)CocosCreator 动画系统-动画编辑器相关功能面板说明
    Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
    IDEA使用问题-02 无法引入POM依赖
    图情笔记 | 基于机构视角下的红色资源阅读推广服务
  • 原文地址:https://www.cnblogs.com/bbzblog/p/15972295.html