当前位置: 首页 > news >正文

012 网络—基础篇

2.1 TCP/IP 网络模型
  • 应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态

1、应用层:http、ssh、ftp,应用程序之间发起数据传输请求
为用户提供网络服务(消息/报文)

  • 一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。 80 端口通常是 Web 服务器用的,22 端口通常是远程登录服务器用的
    2、传输层:TCP/UDP,传输层携带端口号,接收方可以识别发送给哪个应用
    在网络中建立端到端的连接(段)
    3、网络层:IP协议,将数据从一个设备传输到另一个设备。
    网络地址分配和路由的选择(包)
  • 将 10.100.122.2 和 255.255.255.0 进行按位与运算,就可以得到网络号
  • 将 255.255.255.0 取反后与IP地址进行进行按位与运算,就可以得到主机号
  • IP 协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据「下一个目的地」选择路径。
    4、网络接口层(链路层):在 IP 头部的前面加上 MAC 头部,并封装成数据帧(Data frame)发送到网络上(在以太网进行通讯要用到 MAC 地址)
    传输数据帧,工作在网卡层次(帧)
    [[Pasted image 20250217214332.png]]
  • 网络接口层的传输单位是帧(frame)
  • IP 层的传输单位是包(packet)
  • TCP 层的传输单位是段(segment)
  • HTTP 的传输单位则是消息或报文(message)
2.2 键入网址到网页显示过程

1、解析URL,URL 实际上是请求服务器里的文件资源。![[Pasted image 20250217214927.png]]

  • 当没有路径名时,就代表访问根目录下事先设置的默认文件,也就是 /index.html 或者 /default.html 这些文件
  • 生产 HTTP 请求信息 [[Pasted image 20250217215343.png]]
    (应用层)
    2、域名解析:查询真实地址(ip)
  • DNS服务器:保存 Web 服务器域名与 IP 的对应关系
    3、操作系统中的协议栈来实现传输工作,包括下面几个部分,第一个——TCP
  • TCP:[[Pasted image 20250221213257.png]],三次握手保证双方都有发送和接收的能力
  • MTU:一个网络包的最大长度,以太网中一般为 1500 字节
  • MSS:除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度
  • TCP 报文中的数据部分就是存放 HTTP 头部 + 数据 [[Pasted image 20250705095646.png]]
    (传输层)
    4、第二个,远程定位——IP
  • 源地址IP,即是客户端输出的 IP 地址;
    • 假设客户端有多个网卡,存在多个IP地址,源IP地址要选哪个呢?[[Pasted image 20250705100444.png]]。将目标IP和Genmask(子网掩码)与操作,得到结果和Destination匹配,发现使用eth1网卡的IP地址作为IP包头的源地址,Gateway 即是路由器的 IP 地址。
  • 目标地址,即通过 DNS 域名解析得到的 Web 服务器 IP。
    (网络层)
    5、第三个,两点传输——MAC
  • MAC 头部是以太网使用的头部,它包含了接收方和发送方的 MAC 地址等信息
  • 通过ARP 协议帮我们找到接收方路由器的 MAC 地址
    (链路层)
    6、出口:网卡
  • 网络包只是存放在内存中的一串二进制数字信息,没有办法直接发送给对方。因此,我们需要将数字信息
    转换为电信号,才能在网线上传输
    ,也就是说,这才是真正的数据发送过程。负责执行这一操作的是网卡,要控制网卡还需要靠网卡驱动程序。
  • 加上报头的起始帧分界符和末尾的FCS(帧校验序列)[[Pasted image 20250705101708.png]]
    7、送别者——交换机
  • 交换机的设计是将网络包原样转发到目的地。交换机工作在 MAC 层,也称为二层网络设备
  • 电信号到达网线接口,交换机里的模块进行接收,接下来交换机里的模块将电信号转换为数字信号。过包末尾的 FCS 校验错误,如果没问题则放到缓冲区。(交换机的端口不核对接收方 MAC 地址,而是直接接收所有的包并存放到缓冲区中)
  • 交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端口。[[Pasted image 20250705103027.png]]。
  • 当 MAC 地址表找不到指定的 MAC 地址?可能是因为具有该地址的设备还没有向交换机发送过包,或者这个设备一段时间没有工作导致地址被从地址表中删除了。
    8、出境大门——路由器
  • 网络包经过交换机之后,现在到达了路由器,并在此被转发到下一个路由器或目标设备。
  • 因为路由器是基于IP设计的,俗称三层网络设备,路由器的各个端口都具有MAC地址和IP地址;
  • 而交换机是基于以太网设计的,俗称二层网络设备,交换机的端口不具有MAC地址。
  • 完成包接收操作之后,路由器就会去掉包开头的 MAC 头部。
  • 在网络包传输的过程中,源IP和目标IP始终是不会变的,一直变化的是MAC地址,因为需要MAC地址在以太网内进行两个设备之间的包传输。
2.3 Linux系统是如何收发网络包的

1、网络模型

  • OSI 七层网络模型:应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层
  • TCP/IP 四层网络模型:应用层、传输层、网络层和网络接口层
    2、Linux网络协议栈 [[Pasted image 20250705113132.png]]
    3、Linux收发网络包流程
  • 接着,对sk_buff填充TCP头。这里提一下,sk_buff可以表示各个层的数据包,在应用层数据包叫data,在TCP层我们称为 segment,在IP层我们叫 packet,在数据链路层称为 frame
  • 为什么全部数据包只用一个结构体来描述呢?协议栈采用的是分层结构,上层向下层传递数据时需要增加包头,下层向上层数据时又需要去掉包头,如果每一层都用一个结构体,那在层之间传递数据的时候,就要发生多次拷贝,这将大大降低CPU效率。
http://www.xdnf.cn/news/1250227.html

相关文章:

  • 医疗AI中GPU部署的“非对等全节点架构“方案分析(上)
  • 如何创建一个vue项目
  • 5G随身WiFi怎么选?实测延迟/网速/续航,中兴V50适合商务,格行MT700适合短租、户外党~避坑指南+适用场景全解析
  • Git 分支管理:从新开发分支迁移为主分支的完整指南
  • 【数据结构初阶】--排序(四):归并排序
  • Linux基础命令的生产常用命令及其示例简单解释
  • 对接钉钉审批过程记录(C#版本)
  • C++与C语言实现Stack的对比分析
  • 基于 kubeadm 搭建 k8s 集群
  • Go语言数据类型深度解析:位、字节与进制
  • 深度学习(pytorch版)前言:环境安装和书籍框架介绍
  • 【运维进阶】DHCP服务配置和DNS域名解析
  • 基于串口实现可扩展的硬件函数 RPC 框架(附完整 Verilog 源码)
  • iOS混淆工具有哪些?在集成第三方 SDK 时的混淆策略与工具建议
  • docker容器临时文件去除,服务器容量空间
  • 力扣137:只出现一次的数字Ⅱ
  • 企业级Linux服务器安全:防火墙规则配置与Web/SSH服务优化指南
  • 进阶向:Python开发简易QQ聊天机器人
  • 微软的BitLocker加密
  • DM数据库的安全版本SYSDBA无法修改其他用户密码?
  • Go语言 单元测试
  • 企业通讯与营销技术融合创新:定制开发开源AI智能名片S2B2C商城小程序的协同价值研究
  • 【数字图像处理系列笔记】Ch03:图像的变换
  • dify之推送飞书群消息工作流
  • selenium操作指南
  • python中的推导式
  • Linux Vi常用指令总结
  • AI 软件工程开发 AI 算法 架构与业务
  • AI+UI:如何用智能算法提升设计效率10倍?
  • 虚幻GAS底层原理解剖五 (AS)