初识网络基础知识

关于网络的一些核心概念
局域网

局域网(Local Area Network,简称LAN)是一种计算机网络,覆盖的范围通常是相对较小的地理区域,比如一个办公室、一栋大楼或一个校园。

局域网的组成通常包括以下部分:

  • 网络硬件:如交换机、路由器、集线器、网桥、中继器等。
  • 传输介质:如双绞线、同轴电缆、光纤、无线信号等。
  • 网络协议:如以太网(Ethernet)、Wi-Fi、蓝牙等。
  • 服务器和工作站:服务器提供网络服务和资源,工作站是用户使用的设备,如个人电脑、打印机等。
广域网

广域网(Wide Area Network,简称WAN)是一种覆盖较广地理区域的计算机网络,通常跨越城市、地区甚至国家。与局域网相比,广域网的覆盖范围更广、传输速率较低、时延较高,但能够连接不同地理位置的用户和设备。广域网可以理解成是许多局域网连接在一起,以下是广域网的一些主要特点和组成:

  1. 网络硬件:包括路由器、交换机、网关、调制解调器等设备,用于连接和传输数据。

  2. 传输介质:可以是电话线、光纤、卫星链路、无线信号等,用于传输数据。

  3. 网络协议:广域网使用多种协议来管理数据传输和网络连接,如TCP/IP、IPX、BGP等。

  4. 服务提供商:通常由电信运营商、互联网服务提供商(ISP)等提供网络服务和连接。

  5. 服务器和终端设备:服务器提供数据存储和处理服务,终端设备如个人电脑、移动设备等用于访问网络资源。

路由器:

路由器是一种网络设备,主要用于连接不同的网络,并在这些网络之间转发数据包。它在计算机网络中扮演着“交通警察”的角色,确保数据能够正确地从源地址传输到目的地址。以下是路由器的一些关键特性和功能:

基本功能

  1. 路由选择:路由器能够根据网络的拓扑结构和路由协议决定数据包的最佳传输路径。

  2. 数据转发:路由器将接收到的数据包转发到下一个路由器或目的主机。

  3. 网络隔离:路由器可以隔离不同的网络,提供一定程度的安全保护。

  4. 流量控制:路由器可以控制网络流量,平衡负载,提高网络效率。

组成

  1. 输入端口:用于接收来自不同网络的数据包。
  2. 输出端口:用于将数据包发送到下一个路由器或目的主机。
  3. 路由表:存储路由信息,指导数据包的转发。
  4. 控制软件:管理路由器的路由选择和数据转发等功能。

IP地址:

IP地址是用来标识网络上一个设备的位置,通过这个位置找到这个设备,进行进一步的通信,IP地址是32位整数(IPV4),IP地址是四个字节的数字,往往"采用点分十进制"方式来表示IP地址,使用三个.分成四个部分,每个部分表示一个字节,每个部分都表示0-255

端口号

端口号是用来标识不同的应用程序,要求每个程序启动的时候,要关联上一个不和别人重复的端口号,端口号是区分在一个主机上不同程序之间,而不是区分不同主机上的不同程序,一个主机上有0-65535个端口,2个字节

TCP/IP模型(实际用最多)
  1. 物理层(Physical Layer, Layer 1)

    • 负责在物理媒介上传输原始的比特流(0和1)。
    • 涉及电气信号、光信号等,以及物理设备如电缆和连接器。
    • 网线网口之类的东西,硬件层面上的相关约定
  2. 数据链路层(Data Link Layer, Layer 2)

    • 负责在相邻网络设备之间传输帧(frame)。
    • 提供错误检测和纠正,确保数据的可靠传输。
    • 涉及MAC地址和错误控制机制。
    • 关注的是相邻设备之间的通信
  3. 网络层(Network Layer, Layer 3)

    • 负责在源主机和目的主机之间选择数据传输路径。
    • 处理数据包在整个网络中的路由选择。
    • 涉及IP地址和路由协议。
    • 关注的是通信中,通信路径的规划,数据要经过哪些节点
  4. 传输层(Transport Layer, Layer 4)

    • 负责提供端到端的数据传输服务。
    • 确保数据的完整性和可靠性。
    • 涉及TCP(传输控制协议)和UDP(用户数据报协议)。
    • 关注的是通信双方的起点和终点
  5. 应用层(Application Layer, Layer 7)

    • 为应用软件提供网络服务。
    • 直接为用户的应用进程提供支持,如HTTP、FTP、SMTP等。
    • 和具体应用程序直接相关,传输的数据是干啥用的,如何使用
OSI模型(理论存在)
  1. 物理层(Physical Layer, Layer 1)

    • 负责在物理媒介上传输原始的比特流(0和1)。
    • 涉及电气信号、光信号等,以及物理设备如电缆和连接器。
  2. 数据链路层(Data Link Layer, Layer 2)

    • 负责在相邻网络设备之间传输帧(frame)。
    • 提供错误检测和纠正,确保数据的可靠传输。
    • 涉及MAC地址和错误控制机制。
  3. 网络层(Network Layer, Layer 3)

    • 负责在源主机和目的主机之间选择数据传输路径。
    • 处理数据包在整个网络中的路由选择。
    • 涉及IP地址和路由协议。
  4. 传输层(Transport Layer, Layer 4)

    • 负责提供端到端的数据传输服务。
    • 确保数据的完整性和可靠性。
    • 涉及TCP(传输控制协议)和UDP(用户数据报协议)。
  5. 会话层(Session Layer, Layer 5)

    • 负责建立、管理和终止应用程序之间的会话。
    • 控制两个通信系统之间的数据流。
  6. 表示层(Presentation Layer, Layer 6)

    • 负责数据的表示、编码和转换。
    • 确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
    • 涉及数据格式转换、数据加密和压缩。
  7. 应用层(Application Layer, Layer 7)

    • 为应用软件提供网络服务。
    • 直接为用户的应用进程提供支持,如HTTP、FTP、SMTP等。

OSI模型将应用层分为会话层和表示层,这张图表示OSI模型 和TCP/IP模型之间的对应关系

关于协议的层和层之间是如何配合工作的? 

上层协议调用下层协议,下层协议给上层协议提供服务,主要通过封装(不是Java面向对象的封装),分用

举个栗子,来进行理解一下

我们日常使用的QQ发送消息,假如A要给B发送一个hello首先要在聊天界面输入hello,然后点击发送,此时QQ程序就要完成上述逻辑,通过网络来进行传输,QQ应用程序首先会将上述内容打包成一个应用层数据包,QQ内部会有一个应用层网络协议(包含了数据按照什么样的格式来进行组织),网络上传输的数据本身就是二进制字符串,更准确说是二进制的bit流,因此组织的时候要按照协议的格式来进行组织.

1)应用层协议假设QQ的应用层协议是这样的,四个信息分别是发送人,接收人的账号和发送时间及正文,中间用,分开,使用\n作为结束标志,

结构化数据(包含很多字段,属性),把结构化数据=>字符串/二进制数据称为"序列化",字符串/二进制数据=>结构化数据称为"反序列化"

2)传输层协议,此时已经拥有了应用层数据包,把QQ程序调用操作系统的api,应用层要把数据交给传输层(操作系统内核提供api,socket api),传输层拿到应用层数据包之后,就会把这个数据包进行进一步的封装,构造出传输层数据包,此时传输层典型协议有两个TCP,UDP,此处假设使用UDP作为传输协议,UDP报头中存储着一些固定的属性比如发送人和接收人的端口号,后半部分是UDP数据包的载荷

3)网络层协议,传输层构造好数据包之后,就会把数据包交给网络层,传输协议调用网络层的api,典型协议是IP协议,IP只关心报头中的数据,不关心载荷的数据,IP报头中包含了收件人和发件人的IP地址,有进一步调用数据链路层的api(往往是网卡的驱动程序提供的),把IP数据包交给数据链路层协议

4)数据链路层协议,典型协议以太网,电脑,通过有线网传输数据,就是以太网协议,网线称为以太网线,以太网也有自己的数据包格式,对上述的IP数据包进行进一步封装 

5)物理层,上述以太网数据帧,本质上还是0101二进制数据,硬件设备把上述二进制数据,转化成光信号/电信号/电磁波,才会真正发射.

上述层层包装数据,不停的加数据报头的过程,称为"封装",

上述数据,并非是直接到达B,而是要先到和A连接的交换机/路由器,数据经过交换机/路由器一系列转化之后到达B,当数据到达B之后,就是对上述过程的逆过程,到达每一层就按照当前这层的协议对报头进行数据解析,为后续传输/转化大小基础,从而拿到载荷数据,将每一次的载荷数据在交给上层,此时这个过程就称为分用

相关推荐

  1. Python学习之路-爬虫:基础知识

    2024-07-20 18:28:03       52 阅读
  2. 网络原理——

    2024-07-20 18:28:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 18:28:03       123 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 18:28:03       131 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 18:28:03       109 阅读
  4. Python语言-面向对象

    2024-07-20 18:28:03       117 阅读

热门阅读

  1. 编织文字的魔法:探索WebKit的CSS文本效果

    2024-07-20 18:28:03       31 阅读
  2. c++判断路径是否存在,判断文件夹是否存在

    2024-07-20 18:28:03       24 阅读
  3. Python数据类型转换:掌握数据形态的转换艺术

    2024-07-20 18:28:03       32 阅读
  4. Spring Boot与JPA:无缝集成,轻松管理数据库】

    2024-07-20 18:28:03       28 阅读
  5. 分享遇到的异步问题合集

    2024-07-20 18:28:03       26 阅读
  6. 【高考志愿】音乐与舞蹈学

    2024-07-20 18:28:03       29 阅读
  7. B端产品方向(五)

    2024-07-20 18:28:03       24 阅读
  8. Canvas总结二

    2024-07-20 18:28:03       29 阅读
  9. 二叉树---从中序与后序遍历序列构造二叉树

    2024-07-20 18:28:03       26 阅读