网络热门知识点,Linux内核——网络协议栈基本知识

2023-05-16

1、网络协议分层

按照分层的思想把网络协议栈进行分层主要有以下好处:

1.促进标准化工作,允许各个供应商进行开发

2.各层间相互独立,把网络操作分成低复杂单元

3.灵活性好,某一层变化不会影响到其它层

4.各层间通过一个接口在相邻层上下通信

OSI七层模型和TCP/IP五层模型的对比如下,我们现在用的是五层协议模型:

2、PDU、封装和解封装

  • PDU(protocol data unit):每一层使用自己层的协议和别的系统的对应层相互通信,协议层的协议在对等层之间交换的信息叫协议数据单元
  • 上层:message
  • 传输层:segment
  • 网络层:packet
  • 数据链路层:frame
  • 物理层:bit
  • 封装:数据要通过网络进行传输,要从高层一层一层的向下传送,如果一个主机要传送数据到别的主机,先把数据装到一个特殊协议报头中,这个过程叫封装
  • 封装分为:切片和加控制信息
  • 解封装:上述的逆向过程

数据进入TCP/IP协议栈时的封装过程如下:

数据进入TCP/IP协议栈时的解封装过程如下:

3、以太帧和常见的报文格式

(1)以太网帧(Ethernet II Frame)

  • D-MAC:目的MAC地址
  • S-MAC:源MAC地址
  • 类型域:表示帧里面上层协议数据的类型,0x0800代表IP协议帧,0x0806代表ARP协议帧
  • CRC:帧校验

(2)IP数据报

  • 版本号:4代表IPv4,
  • 头长度:报头的长度,值为4字节的倍数,故首部长度最大为60字节
  • 服务类型:暂未使用
  • 总长度:IP数据报的长度(报头区+数据区),单位为字节,故总长度最大为65535字节,但总长度不能超过最大传输单元MTU
  • 标识:一个计数器,用来产生数据报的标识
  • 标志:占3位,最低位MF,为1表示还有分片,中间为DF,为0,表示允许分片
  • 片偏移:较长的分组在分片后,某片在原分组中的相对位置,单位为8字节
  • TTL:生存时间,数据报可以经过的最大路由器数
  • 上层协议标识:1:ICMP,2:IGMP、6:TCP、17:UDP等;

分片举例:

IP数据报解析:

(3)TCP数据报

  • 协议、源IP、源端口、目的IP、目的端口确定一个TCP连接
  • 顺序号:TCP段所发送的数据部分第一个字节的序号
  • 确认号:期望收到对方下次发送的数据的第一个字节的序号
  • 头部长度:单位为4字节,因此TCP首部的最大长度为60字节
  • 窗口大小:窗口通告值,发送方根据接收方的窗口告值调整窗口大小
  • 紧急指针:指示紧急数据在报文段中的结束位置此时URG置位
  • URG:表示紧急指针字段有效
  • ACK:表示确认号字段有效
  • PSH:表示当前报文需要推操作
  • RST:置位表示复位TCP连接
  • SYN:用于建立TCP连接时同步序列号
  • FIN:用于释放TCP连接时标识发送方比特流结束

TCP报文解析:

(4)UDP数据包

常见协议对应的端口号:

UDP DHCP服务器端:67,DHCP客户端:68,DNS服务:53

TCP POP3(邮件接收协议):110,SMTP(邮件传输协议):25,HTTP服务:80

TCP FTP:数据传输为20,控制命令传输为21,Telnet:23

端口号范围为:1~65535,1~1024为熟知端口号,1025~65535称为动态端口

(5)ARP协议

  • ARP(Address Resolution Protocol)地址解析协议,是根据 IP 地址获取物理 MAC 地址的一个 TCP/IP 协议。
  • ARP 高速缓冲表:用来记录 IP 和 主机 MAC 地址的对应关系。会不断更新。
  • 功能:通过目标设备的 IP 地址,查询目标设备的 MAC 地址,同时维护 ARP 高速缓冲表,以保证通信的顺利进行。

ARP分组格式

  • 硬件类型:以太网为1
  • 协议类型:网络层协议类型,IP协议为0x0800
  • OP:操作码,ARP请求为1,ARP应答为2

(6)ICMP协议

  • ICMP 是 "Internet Control Message Protocol"(网络控制报文协议)的缩写,用于在 IP 主机、路由器之间传递控制消息。
  • 控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
  • ICMP 层区分不是很明显,一般划分在 IP 层中,通过 IP 包来封装ICMP数据 ,在实际传输中数据包的格式一般都是 IP 包 + ICMP包的格式

ICMP包格式:

代码:用来表示ICMP报文类型的少数参数,

例如:代码值为0,表示网络不可达;代码值为1,表示主机不可达

(7)DNS协议简介

  • DNS(Domain Name System):域名系统,将域名和IP地址相互映射的一个分布式数据库
  • 采用Client/Sever工作模式
  • DNS 协议运行在 UDP 协议之上,使用端口号 53
  • 过程图解

(8)DHCP协议简介

  • DHCP(Dynamic Host Configuration Protocol):动态主机配置协议
  • 采用Client/Sever工作模式
  • 为主机提供配置参数、自动分配可重复利用的网络地址
  • DHCP 协议运行在 UDP 协议之上,服务器端口号 67,客户端口号68

4、ping演示

Ping命令是为了检查网络的连接状况而使用的网络工具之一,用来检测数据包到达目的主机的可能性。

原理:使用ICMP协议的回送请求、回送应答。客户端发送回送请求给服务器,服务器返回一个ICMP回应应答。

Ping过程图解:

  • 首先开发板要解析百度的域名,获取到百度主机的 IP 地址,涉及到 DNS 协议,传输层用的是 UDP 协议
  • DNS 主机利用 UDP 协议,回复百度的 IP 地址给开发板。
  • 现在开发板要发送 Ping 请求包给百度主机,但是发现百度主机 IP 地址与自己不在同一网段,因此要发送 Ping 请求包给默认网关。
  • 要发送给默认网关的时候,忽然发现并没有默认网关对应的 MAC 地址,因此发送一个 ARP 广播包,如果交换机存储了默认网关的 MAC 地址,就直接告诉开发板默认网关的 MAC 地址,否则就会向所有端口发送ARP广播,直到路由1收到了报文后,立即响应,单播自己的 MAC 地址给开发板。
  • 这样开发板就可以把 Ping 包发送给默认网关(路由1)了。
  • 然后路由1 经过路由协议,经过一个个路由的转发,最后发送到了百度的主机上。百度主机检测到 IP 是自己的 IP,接收并处理 Ping 请求,接着百度主机发送一个 Ping 回应报文给开发板。

5、TCP客户端服务器通信演示

TCP(传输控制协议):提供一种面向连接的、可靠的传输层协议(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。

TCP三次握手过程:

TCP四次挥手过程:

 更多Linux内核源码高阶知识请加开发交流Q群篇【318652197】获取,进群免费获取相关资料,免费观看公开课技术分享,入群不亏,快来加入我们吧~ 

学习资料免费领 

学习直通车 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络热门知识点,Linux内核——网络协议栈基本知识 的相关文章

  • 01-嵌入式入门-如何看原理图

    最近由于找到的工作是偏于嵌入式方向 xff0c 因此又重新开始学习已经丢弃两年的知识 新手学习知识感觉有一个通病 xff1a 喜欢收集各种各样的视频 资料 xff0c 网盘里收藏一大堆 xff0c 但是却从没有打开看过 xff0c 到头来还
  • MAVLink v1.0详解——结构

    本文针对 MAVLink v1 0版本 xff0c 协议版本 xff1a 3 MAVLink是为微型飞行器MAV xff08 Micro Air Vehicle xff09 设计的 xff08 LGPL xff09 开源的通讯协议 是无人飞
  • ECMAScript6——数组操作方法_总结篇

    ES6 gt 数组的方法 加粗为ES6新增的方法 1 pop 删除数组的最后一个元素 xff0c 把数组的长度减1 xff0c 并且返回它被删除元素的值 xff0c 如果数组变为空 xff0c 则该方法不改变数组 xff0c 返回undef
  • 网络工程师十个常见面试问题

    1 1 简单说一下OSI七层 Osi模型是一个工业的标准 它为现在的互联网提供了很大的贡献 是一个逻辑上的规范和标准 xff0c 很多厂商都要遵循它 他定义了七层每一层都有不同的功能和规范 物理层 物理层定义了设备接口上的一些电子电气化的标
  • 像素、分辨率、DPI

    Q xff1a 我们平时买数码相机时 xff0c 说的200万像素 xff0c 300万像素 xff0c 这个像素是什么意思 xff1f A xff1a 像素 xff08 Pixel xff09 是由Picture和Element这两个单词
  • Apache 目录索引样式 mod_autoindex

    apache 的目录索引样式用的mod autoindex模块 一般默认为开启状态 我们直接配置httpd conf文件 讲如下内容加到HTTD CONF Options Indexes FollowSymLinks IndexOption
  • ubuntu网卡名称变化的解决方法

    在chinacache工作时 xff0c 遇到了东方网力的客户 xff0c 需要安装使用ubuntu系统 xff0c 每个服务器有4个网口 xff0c 在做bond时 xff0c 发现部分网卡漂移 xff0c 为了解决这个 xff0c 搜索
  • C# 给DataGridView加多选框

    span class token comment 多选框 span DataGridViewCheckBoxColumn dgCheck span class token operator 61 span new DataGridViewC
  • Java架构进阶之路——阿里大牛强力推荐书单(附赠电子版)

    1 深入理解Java虚拟机 xff1a JVM高级特性与最佳实践 本书适合所有Java程序员 系统调优师和系统架构师阅读 共分为五大部分 xff0c 围绕内存管理 执行子系统 程序编译与优化 高效并发等核心主题对JVM进行了全面而深入的分析
  • ModemManager

    ModemManager是D Bus激活的守护进程 xff0c 用来控制移动宽带 xff08 2G 3G 4G xff09 设备和连接 xff0c 提供统一的高层API接口 说白了就是可以用来管理上网卡 ModemManager可以管理内置
  • odroidxu4linux,2019年值得期待的5个树莓派替代品

    说到卡片电脑 xff0c 树莓派是当之无愧的热门 这款售价35美元的微型计算机已经在全球范围内吸引了众多爱好者 xff0c 因为它能够以商业设备的一小部分价格执行基于PC的功能 当然 xff0c 它或许不是最强大或最便宜的微型计算机 xff
  • ros 发布信息频率_工具使用-ROS中使用publisher、subscriber发布订阅topic

    Publisher Node 不同于cpp文件一般存在package下的src文件夹 xff0c python文件一般存储在package下的scripts文件夹下 1 2 3 4roscd beginner tutorials scrip
  • 轨迹系列1——一种基于路网图层的GPS轨迹优化方案

    文章版权由作者李晓晖和博客园共有 xff0c 若转载请于明显处标明出处 xff1a http www cnblogs com naaoveGIS 1 背景 GPS数据正常情况下有20M左右的偏移 xff0c 在遇到高楼和桥梁等情况下偏移会更
  • 材料研究方法

    编程是非常有意思的 xff0c 可是作为材料人 xff0c 学好材料才是比较重要的事情 xff0c 下面记录一些知识点 光学透镜的成像原理 光的折射 光在均匀介质中沿直线传播 在不同介质中光的传播速度不同 当光从一种介质传播到另一种介质中去
  • [微信小程序系列] 动画案例之圆点沿着圆圈运动

    作者 xff1a 滴滴公共前端团队 Tawnia 滴滴作为第一批的小程序开发者 xff0c 我们也大量地用到了动画 xff0c 积累了一些经验 xff0c 由于市面上的小程序动画案例很少 xff0c 我们也分享一部分我们做过的案例 xff1
  • Vue Iview Tree插件的无限层

    Iview lt template gt lt Tree data 61 34 baseData 34 show checkbox multiple gt lt Tree gt lt template gt lt script gt exp
  • React Component vs React Element

    React Component vs React Element 有这样的一个问题 xff1a 方法定义 function add x y return x 43 y 方法调用 add 1 2 组件定义 class Icon extends
  • 手把手学STM32(一)

    手把手学STM32 一 构建工程 这篇文章详细的介绍编写第一个固件工程 xff08 F103ZET6版本的 xff09 文档里的操作部分我使用了黄色背景色标出 xff0c 如觉麻烦 xff0c 可直接参考黄色部分 资料下载链接 xff1a
  • Linux下查看在线用户及用户进程

    可采用命令 xff1a w who last users finger 需yum安装 法一 xff1a root 64 test1 who root tty1 2015 08 19 23 15 lxh pts 0 2015 08 20 00
  • 手动制作一个QQ群机器人

    为什么80 的码农都做不了架构师 xff1f gt gt gt 最近在群里面一个朋友在玩机器人 我觉得蛮有意思的所以查了下资料搞了一个机器人 这里只是借助软件实现机器人 后面会自己去手写一个机器人 1 进入图灵的官网 http www tu

随机推荐