网络基础|青训营笔记

144 阅读4分钟

1、TCP/IP网络模型

由上往下逐步增加报文头,由下向上逐步拆分报文头。

  • 应用层:Http、DNS等

  • 传输层:TCP:传输控制协议,Segment;UDP:用户数据报协议,数据报。传输层使用端口来区分数据报接收的应用。传输层主要负责将数据分发到不同的应用上,进程级别通信

  • 网络层:IP协议,IP报文。

IP协议将传输层的报文座位数据部分,再加上IP报文头组成IP报文。如果IP报文大小超过MTU,则会再次进行切片。网络层主要是负责将数据分发到不同的主机上,主机级别通信

    • IP地址用来区分不同子网和主机:

IPv4地址共32位,4字节。IP地址会被分成两种意义:

1、网络号:负责标识该IP属于哪一个子网。

2、主机号:负责标识同一子网下的不同主机。

需要通过子网掩码来计算出IP地址的网络号和主机号。例如:10.100.122.0/24

24代表255.255.255.0 其二进制为24个1,使用24来简化子网掩码的表达。

*IP地址和子网掩码做与运算,24的子网掩码表示前24位用来表示网络号,后8位用来标识主机号。*子网掩码的作用是用来划分IP地址中哪一部分是网络号,哪一部分是机器号。子网掩码中1和0都要是连续的。

    • IP地址用来路由

路由器通过IP地址的网络号来进行转发。

  • 网络接口层:

网络接口层将IP数据报文加上MAC头部,封装成数据帧(DataFrame)发送到网络上。以太网通讯技术是在局域网内将设备连接起来,使它们之间可以通信。可以通过ARP协议来获取MAC地址,通过MAC地址实现双方通信。

2、输入一个网址后,发生了什么?

  • 解析URL

3、Linux系统如何收发网络包

  • OSI7层网络模型:国际标准化组织定义的。
    • 应用层:负责给应用程序提供统计接口;http、DNS等。
    • 表示层:负责把数据转化成兼容另一个系统所能识别的格式。
    • 会话层:负责简历、管理表示层实体建立的通信会话。
    • 传输层:负责端到端的数据通信。TCP、UDP。
    • 网络层:数据的路由、转发、分片。IP、ICMP。
    • 数据链路层:负责数据的封帧和拆错检测以及MAC寻址。ARP。
    • 物理层:负责物理信号和电信号之间的转换。
  • Linux网络技术栈:比较简单,大部分采用该模型。

TCP/IP:应用层 + 传输层 + 网络层 + 网络接口层

物理链路层中,以太网规定了能够传输的最大传输单元(MTU)是1500字节,也由此规定了单次传输的IP报文大小。IP报文由传输层的报文作为数据部分+IP报文头组成

Linux网络协议栈:

    • 应用程序通过系统调用与Socket层进行数据交互。
    • Socket层下面就是传输层+网络层+网络接口层。
    • 在往下就是网卡驱动程序和硬件网卡设备。

  • Linux接收网络包的流程:
    • 首先,网络的接收由网卡完成,通过DMA(直接存储访问)技术将网络包放入Ring Buffer,形成一个缓冲区。
    • Linux内核采取NAPI机制:中断和轮询的方式来接收网络包:不采用中断的方式读取数据,先采用中断唤醒数据接收的服务程序,然后使用poll方法轮询数据。

即:网络包到达时、网卡发起硬件中断,然后中断处理函数处理完需要暂时屏蔽中断,然后唤醒软中断去轮询处理数据,数据处理完后才能够恢复中断。一次中断处理多个网络包,从而降低网卡中断带来的性能开销。软中断主要是将Ring Buffer的数据拷贝到struct sk_buff 缓冲区中,从而可以作为一个网络包交给网络协议栈进行逐层处理

\