您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

一个网络包的心路历程

时间:2021-11-01 10:31:05  来源:  作者:DifferentJava

摘要

  1. 网络模型
  2. 网络协议栈
  3. 网络包接收流程
  4. 网络包发送流程

网络模型

网络模型按照标准有几类划分?

  • OSI模型
  • TCP/IP模型

OSI模型的划分层次?

  • 应用层:负责给应用程序提供统一的接口
  • 表示层:负责把数据转换成兼容另一个系统能识别的格式
  • 会话层:负责建立、管理和终止表示层实体之间的通信会话
  • 传输层:负责端到端的数据传输
  • 网络层:负责数据的路由、转发、分片
  • 数据链路层:负责数据的封帧和差错检测,以及mac寻址
  • 物理层:负责在物理链路中传输数据帧

为什么出现了TCP/IP模型?

OSI模型过于复杂,只是概念理论上的分层,没有具体的实现方案。

TCP/IP模型的分层?

  • 应用层:负责向用户提供一组应用程序,比如HTTP、DNS、FTP等
  • 传输层:负责端到端的数据传输,比如TCP、UDP等
  • 网络层:负责网路包封装、分片、路由、转发,比如IP、ICMP等
  • 网络接口层:负责网络包在物理网络中的传输,比如网络包的封帧、MAC寻址、差错检测以及通过网卡传输网络帧等

OSI模型和TCP/IP模型的层次对应关系如下图:

一个网络包的心路历程

 

网络协议栈

网络通信的主机间必须要遵从一定的网络协议。我们的网络包每经过一层,都会被当前层进行一定的包装,当到达目的主机时,也会进行拆包装操作。

每一层给数据包做了哪些包装?

一个网络包的心路历程

 

  • 传输层:在数据包前面增加了TCP头
  • 网络层:在传输层数据包的基础上增加了IP头
  • 网络接口层:在网络层数据包的基础上增加了帧头帧尾

物理链路中的最大传输大小是?

在以太网中规定,最大传输单元(MTU)是1500字节,即网络层IP包的最大值。当IP数据包超过MTU时,就需要在网络层对其进行分片传输。

linux中网络协议栈大体组成

一个网络包的心路历程

 

  • 应用程序需要通过系统调用,来跟Socket层交互
  • Socket层的下面就是传输层、网络层和网络接口层
  • 最下面的一层则是网卡驱动程序和网卡硬件设备

网络包接收

主机中网络包的门神是?

网卡,专门负责接收和发送网络包,网卡接收到一个网络包以后,会通过DMA技术,将网络包放入到Ring Buffer(环形缓冲区)。

操作系统是如何判断一个网络包到达?

  • 中断:如果网络包过多,CPU会被频繁中断,影响系统效率
  • NAPI机制

NAPI机制是什么?

混合中断和轮询的方式来接收网络包,核心就是首先采用中断唤醒数据接收的服务程序,然后通过poll方法来轮询数据。

网络包到达时,网卡发起硬件中断,执行网卡驱动程序中的中断处理函数,中断处理函数完成以后需要暂时屏蔽中断,然后通过唤醒软中断来轮询处理数据,直到没有新数据时才恢复中断,这样一次中断可以处理若干个网络包。

软中断如何处理网络包?

  1. 从Ring Buffer中拷贝数据到内核缓冲区中,从而把网络包交给网络协议栈处理
  2. 网络包首先进入网络接口层,在这一层会检查报文的合法性,如果不合法则丢弃,合法则会找出该网络包的上层协议类型,比如是IPv4还是IPv6,接着去掉帧头帧尾,交给网络层
  3. 在网络层,会取出IP包,判断网络包下一步走向,比如交给上层处理还是转发出去。当确认这个网络包是要发送给本机以后,就会从IP头分析上一层的协议是TCP还是UDP,接着去掉IP头,然后交给传输层。
  4. 传输层会取出TCP头或UDP头,根据四元组(源IP、源端口、目的IP、目的端口)作为标识,找出对应的Socket,并把数据拷贝到Socket的接收缓冲区
  5. 最后,应用层程序调用Sokcet接口,从内核的Socket接收缓冲区读取新的数据到应用层。
一个网络包的心路历程

 

网络包的发送

发送流程和接收流程相反。

网络层在给数据包增加IP头时,会通过查询路由表确认下一跳的IP,并按照MTU进行分片。

分片后的网络包,在到达网络接口层后,会通过ARP协议获取下一跳的MAC地址,然后增加帧头帧尾,放到发包队列中。

一切准备好以后,会触发软中断告诉网卡驱动程序需要发送网络包,驱动程序通过DMA从发包队列中读取网络包,将其放到网卡的队列中,随后网卡将网络包发出去。



Tags:网络包   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
摘要 网络模型 网络协议栈 网络包接收流程 网络包发送流程网络模型网络模型按照标准有几类划分? OSI模型 TCP/IP模型OSI模型的划分层次? 应用层:负责给应用程序提供统一的接口 ...【详细内容】
2021-11-01  Tags: 网络包  点击:(45)  评论:(0)  加入收藏
因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化...【详细内容】
2020-11-10  Tags: 网络包  点击:(96)  评论:(0)  加入收藏
内容来自SJTU,IPADS OS-16-Networklinux既然要讲,那就把一个包的整个包生都说了算了触发中断 在非虚拟化环境下,网卡通过DMA将packet写入内核的rx_ring环形队列缓冲区,并触发中...【详细内容】
2020-07-09  Tags: 网络包  点击:(81)  评论:(0)  加入收藏
显形“不可见”的网络包网络世界中的数据包交互我们肉眼是看不见的,它们就好像隐形了一样,我们对着课本学习计算机网络的时候就会觉得非常的抽象,加大了学习的难度。还别说,我自...【详细内容】
2020-06-11  Tags: 网络包  点击:(61)  评论:(0)  加入收藏
▌简易百科推荐
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(0)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(2)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(28)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(9)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(20)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(30)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
拉了千兆宽带,买了标称 1300Mbps 的无线路由器,为什么 WiFi 还是跑不满千兆?要回答这个问题,我们先得知道这个 1300Mbps 是怎么来的。开始回答之前先说明一下,这期只讲 802.11ac,...【详细内容】
2021-12-14  Ubiquiti优倍快    Tags:WiFi   点击:(81)  评论:(0)  加入收藏
问题背景IPv6环境下,在浏览器中通过http://[vip:port]访问web业务,提示无法访问此网站,[vip]的响应时间过长。分析过程之前碰到过多次在PC浏览器上无法访问vip的情况,排查方法也...【详细内容】
2021-12-13  云原生知识星球    Tags:网络问题   点击:(27)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条