OSI TCP 以太网 网络基础

网络基础

基础知识

  • 局域网(LAN)和广域网(WAN)是一个相对的概念,根据覆盖范围而定。

  • 协议是指计算机网络中用于通信的规则和标准。它定义了通信实体之间传递数据的格式、顺序、控制信息和处理方法等。协议确保不同设备和系统能够相互理解和交换信息。为了解决以下问题:

    • 由于计算机的传输媒介是光信号和电信号,想要传递不同的信息,就需要约定好双方的数据格式。
    • 如何处理发送的数据。
    • 长距离的数据丢失问题。
    • 如何定位主机的问题。
    • 如何保证数据准确的到达下一个设备。

端口号,IP

  • 端口号在网络通信时是需要相互交换的,因为网络通信的本质就是进程间通信。

  • 云服务器禁止直接绑定公网IP。并且一般不会固定IP地址,一般将其置为0,即任意地址绑定,这样凡是发送到本主机的数据,都会根据端口号向上交付。

  • 而客户端,也是要绑定的,只不过不需要用户显示的bind,一般由OS自由随机选择绑定,只需要保证其在客户端主机上的唯一性就行。

端口号的范围划分

  1. 知名端口
  • 范围:0 到 1023
  • 用途:这些端口号通常被分配给常见的网络服务和协议,例如:
    • HTTP(80)
    • HTTPS(443)
    • FTP(21)
    • SSH(22)
    • DNS(53)
  • 分配管理:这些端口号由互联网号码分配机构(IANA)管理,通常用于特定的标准服务。
  1. 注册端口
  • 范围:1024 到 49151
  • 用途:这些端口号可以被应用程序或服务使用,但需要向 IANA 注册。通常分配给非标准的服务或应用程序,供其运行所需的通信使用。
  • 实例:MySQL 数据库服务默认使用的端口 3306、PostgreSQL 默认端口 5432。
  1. 动态/私有端口
  • 范围:49152 到 65535
  • 用途:这些端口号通常用于临时目的,比如客户端应用程序向服务器发起连接时动态分配的端口号。这些端口号不需要注册,适用于客户端-服务器通信中客户端的一侧。
  • 实例:当一个客户端连接到服务器时,操作系统会自动为客户端分配一个动态端口。

客户端

Udp客户端的端口随机绑定,发生在第一个数据包被发送的时候。Tcp客户端的端口随机绑定,发生在connect的时候,要自动随机的进行bind

套接字socket

在网络编程中,sockfd 是一个用于标识套接字的文件描述符。它是 socket() 函数创建的套接字的返回值,用于后续的网络通信操作。sockfd 是一个整数值,作为其他网络操作函数的参数之一。

协议分层

  • 分层的目的
    • 高内聚。
    • 低耦合。
    • 便于封装。
    • 维护。

OSI(open systems interconnection)七层模型

OSI模型

层级 名称 功能描述
7 应用层(Application Layer) 为应用程序提供网络服务接口,例如文件传输、电子邮件等。
6 表示层(Presentation Layer) 负责数据的表示、加密和解密、数据格式转换等。——序列,反序列化
5 会话层(Session Layer) 管理和控制会话,包括建立、维护和终止通信会话。——管理对外提供的服务
4 传输层(Transport Layer) 提供端到端的传输服务,确保数据可靠传输,负责流量控制和错误检测。
3 网络层(Network Layer) 负责路径选择和逻辑地址(IP地址)的管理,提供数据包的转发和路由功能。
2 数据链路层(Data Link Layer) 提供物理地址(MAC地址)管理和链路建立、维护、释放功能,负责帧的传输。
1 物理层(Physical Layer) 负责比特流的传输,包括电缆、光纤、无线等物理媒介。

TCP/IP 模型

TCP/IP(Transmission Control Protocol/Internet Protocol)模型是实际互联网和网络通信的基础,它简化为四层或五层结构。

  • 可以使用以下五个要素来标识一个通信:
    • 源IP。
    • 源端口号。
    • 目的IP。
    • 目的端口号。
    • 协议号。

五层模型

层级 名称 功能描述
5 应用层 提供网络应用程序的接口,如HTTP、FTP、SMTP等协议。
4 传输层(Transport Layer) 提供端到端的通信服务,确保数据可靠传输,使用协议如TCP、UDP。
3 网络层(Network Layer) 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)**路由器(Router)工作在网络层 **。
2 数据链路层(Data Link Layer) 负责数据帧的传输和错误检测,包含MAC地址的管理。 以太网、令牌环网(类似于线程中的锁)**交换机(Switch)通常工作在数据链路层或网络层 **
1 物理层(Physical Layer) 负责比特流的传输,定义物理连接的硬件规范。集线器(Hub)工作在物理层

信息在不同层的名称

层级 数据名称
传输层 数据段,数据报
网络层 数据报
链路层 数据帧

网络通信

通信

报文 = 报头 + 有效载荷

  • 网络的层状结构中,每一层都有协议消息从自顶向下每层协议都要加上一个数据首部(报头)(header),称为封装**。
    封装

  • 通信的过程,就是封装和解包的过程。故几乎每一种协议,都要有报头和有效载荷分离的能力——分离将自己有效载荷交付给上一次指定协议的能力——分用

分用

  • 由冯诺依曼体系可知,网卡(外设)接受数据之后,要载入到内存由CPU处理。

sk_buff 的概念

  • sk_buff 是一个结构体,包含了网络包的数据以及各种元数据(如头部信息、状态标志、指针等)。它是网络协议栈中最基本的单元,用于表示和操作数据包。sk_buff 负责承载并传递数据包,同时记录了该数据包在它不仅包含了数据本身,还包含了协议栈所需的各种控制信息

  • 发送报文的本质:

    • 从发送方的角度来看,报文的发送过程实际上是一个 sk_buff 结构在协议栈中层层流动、逐步封装的过程。每个网络层协议对 sk_buff 进行相应的处理,直到数据包最终被发送到网络上。
    • 简单来说,负责处理协议的指针移动到对应协议字段并进行处理,就是封装和解包的过程。

局域网通信原理

以太网通信:每台主机在局域网上,都要有自己唯一的一个标识

  • 每一台主机都会有一个Mac地址——网卡在出厂时自带。 在发送数据时,源头mac目的mac会被封装到报文中。根据mac地址可以匹配通信的主机

    • 其实在局域网中,所有网卡设备都收到了这个保文,只是因为mac不匹配,报文被丢弃了。

    • 但如果网卡处于混杂模式—— 指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它,那么数据可能被窃取。

    • 可以通过在应用层进行加密,可以防止数据被抓包后窃取

  • 当局域网中发送的信息太多,就可能发生数据碰撞问题(产生碰撞域)。因此,任何一个时刻,只允许一台主机向局域网中发送数据——互斥访问

    • 交换机可以划分碰撞域。

    • 访问局域网的过程类似于线程访问共享资源,只是实现细节和具体机制上有很大不同。

IP地址

IP地址(Internet Protocol Address)是分配给设备的一个唯一标识符,用于在网络中进行通信。它标识网络上的计算机、路由器、手机等设备,并允许它们相互识别和交换数据。

IP地址与mac地址

  • 在数据传输的时候,Mac地址会随着设备变动而发生变化。而IP地址始终不变,为信息传递提供路径规划。

跨网段通信原理

  • 当目标主机和源头主机不在同一个网段(是否在同一网段可以通过IP地址来判断),需要将数据传递给路由器设备来处理。

  • 报文传递到路由器是局域网通信。

  • 通过路由器的路由表到另一个网段,并且通过如以太网令牌环等方式来找到目的主机,,数据包在**每个路由器处都会重新封装局域网报头,并且更换发收的MAC地址**。

跨网段通信

由上可知:IP协议屏蔽了底层网络的差异化,实现了上层的统一性。

IPv6和IPv4

IPv4IPv6是两种不同版本的互联网协议(IP),它们都用于在网络上标识和定位设备,并负责数据包的路由和传输。但IPv6可以表示更多地址并支持更多特性。


OSI TCP 以太网 网络基础
https://weihehe.top/2024/08/02/网络基础/
作者
weihehe
发布于
2024年8月2日
许可协议