LinuxTCPIP协议栈数据包处理流程及代码实现分析

龚学俊 2019-12-22 00:04:00

推荐回答

TCPdump抓包命令tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。一、概述顾名思义,tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。引用#tcpdump-vvtcpdump:listeningoneth0,link-typeEN10MBEthernet,capturesize96bytes11:53:21.444591IPtos0x10,ttl64,id19324,offset0,flags#tcpdump-ieth0-nntcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecodelisteningoneth0,link-typeEN10MBEthernet,capturesize96bytes01:33:40.41IP192.168.1.100.22>192.168.1.11.1190:P116:232116ack1win964801:33:40.41IP192.168.1.100.22>192.168.1.11.1190:P232:364132ack1win9648:传送端是192.168.1.100这个IP,而传送的PortNumber为22,那个大于的符号指的是数据包的传输方向。192.168.1.11.1190:接收端的IP是192.168.1.11,且该主机开启port1190来接收。P116:232116:这个数据包带有PUSH的数据传输标志,且传输的数据为整体数据的116~232Byte,所以这个数据包带有116Bytes的数据量。ack1win9648:ACK与Windowsize的相关资料。最简单的说法,就是该数据包是由192.168.1.100传到192.168.1.11,通过的port是由22到1190,且带有116Bytes的数据量,使用的是PUSH的标记,而不是SYN之类的主动联机标志。接下来,在一个网络状态很忙的主机上面,你想要取得某台主机对你联机的数据包数据时,使用tcpdump配合管线命令与正则表达式也可以,不过,毕竟不好捕获。我们可以通过tcpdump的表达式功能,就能够轻易地将所需要的数据独立的取出来。在上面的范例一当中,我们仅针对eth0做监听,所以整个eth0接口上面的数据都会被显示到屏幕上,但这样不好分析,可以简化吗?例如,只取出port21的联机数据包。
齐新艳2019-12-22 00:07:26

提示您:回答为网友贡献,仅供参考。

其他回答

  • 大家都知道网络是分层的,而这个分层就好比是一个企业里的组织结构一样。在日常使用电脑过程中,人操作着电脑,人就好比是指挥电脑对因特网操作的首席执行官。当我们打开Foxmail这个邮件软件收取邮件时,Foxmail这个软件就会调用TCP/IP参考模型中的应用层协议—POP协议。应用层协议建立在网络层协议之上,是专门为用户提供应用服务的,一般是可见的。如利用FTP,以及邮箱的账号和密码。这个在收信过程中都是用得到的。当我们按下电子邮件软件中的收取键后,电子邮件软件首先会调用DNS协议对POP服务器进行解析IP地址,当IP地址被解析出来后,邮件程序便开始使用TCP协议连接邮件服务器的110端口,因为POP服务器是比较忙的,所以在这个过程中我们相对要等比较长的时间。当邮件程序成功地连上POP服务器后,其先会使用USER命令将邮箱的账号传给POP服务器,然后再使用PASS命令将邮箱的账号传给服务器,当完成这一认证过程后,邮件程序使用STAT命令请求服务器返回邮箱的统计资料,比如邮件总数和邮件大小等,然后LIST便会列出服务器里邮件数量。然后邮件程序就会使用RETR命令接收邮件,接收一封后便使用DELE命令将邮件服务器中的邮件置为删除状态。当使用QUIT时,邮件服务器便会将置为删除标志的邮件给删了。通俗地讲,邮件程序从服务器接收邮件,其实就是一个对话过程,POP协议就是用于电子邮件的一门语言。
    齐文浩2019-12-22 00:19:43

相关问答

用的Arcengine10~你看看namespaceGisEditor{//////最短路径分析///publicclassClsPathFinder{privateIGeometricNetworkm_ipGeometricNetwork;privateIMapm_ipMap;privateIPointCollectionm_ipPoints;privateIPointToEIDm_ipPointToEID;privatedoublem_dblPathCost=0;privateIEnumNetEIDm_ipEnumNetEID_Junctions;privateIEnumNetEIDm_ipEnumNetEID_Edges;privateIPolylinem_ipPolyline;#regionPublicFunction//返回和设置当前地图publicIMapSetOrGetMap{set{m_ipMap=value;}get{returnm_ipMap;}}//打开几何数据集的网络工作空间publicvoidOpenFeatureDatasetNetworkIFeatureDatasetFeatureDataset{CloseWorkspace;if!InitializeNetworkAndMapFeatureDatasetConsole.WriteLine"打开network出错";}//输入点的集合publicIPointCollectionStopPoints{set{m_ipPoints=value;}get{returnm_ipPoints;}}//路径成本publicdoublePathCost{get{returnm_dblPathCost;}}//返回路径的几何体publicIPolylinePathPolyLine{IEIDInfoipEIDInfo;IGeometryipGeometry;ifm_ipPolyline!=nullreturnm_ipPolyline;Polylinem_ipPolyline2=newPolyline;m_ipPolyline=IPolylinem_ipPolyline2;IGeometryCollectionipNewGeometryColl=m_ipPolylineasIGeometryCollection;ISpatialReferenceipSpatialReference=m_ipMap.SpatialReference;IEIDHelperipEIDHelper=newEIDHelper;ipEIDHelper.GeometricNetwork=m_ipGeometricNetwork;ipEIDHelper.OutputSpatialReference=ipSpatialReference;ipEIDHelper.ReturnGeometries=true;IEnumEIDInfoipEnumEIDInfo=ipEIDHelper.CreateEnumEIDInfom_ipEnumNetEID_Edges;intcount=ipEnumEIDInfo.Count;ipEnumEIDInfo.Reset;forinti=0;idblHeightdblSearchTol=dblWidth/100;elsedblSearchTol=dblHeight/100;m_ipPointToEID.SnapTolerance=dblSearchTol;returntrue;}//关闭工作空间privatevoidCloseWorkspace{m_ipGeometricNetwork=null;m_ipPoints=null;m_ipPointToEID=null;m_ipEnumNetEID_Junctions=null;m_ipEnumNetEID_Edges=null;m_ipPolyline=null;}#endregion}。
数据是什么?里说:数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。大家会发现:数据具有抽象的、可识别的这两个最基本的特征。那么大数据呢?首先想象一下:旧石器时代的原始人类。对于他们,山洞的一副壁画就足以记录他们现存的知识库,那壁画就是那个时期的大数据;接着来到前朝历史,记录的数据多了,竹签慢慢发展到纸张,成为承载数据的媒介,一堆纸,一房间的书券成为了大数据;再看当今这个社会,数据已经巨量到我们要用庞大的计算机群去存储。所以说大数据其本身是一个相对的、抽象的的概念。为了描述这层抽象,学者们做了一个5个v的诠释,这5个v分别是:Volume数据量大,Variety种类和来源多样化,Value数据价值密度较低,Velocity数据增长速度快,Veracity数据的准确性和可信赖度,前三个v是基础,后面两个是逐渐延伸扩展出来的。对于这5个v已经有很多文章去详细解释了,有兴趣的话,大家可以自行搜索。为了更容易去理解什么是大数据,我这里想引用一下这个暑期档关于高考题材的电视剧《小欢喜》中的一个片段,黄磊正在苦口婆心的和海清解释小凡-他们的儿子被老师蹲班原因。黄磊:”如果说参加高考的话,你就是一稳定的分母,考上了,你就是分子,这个升学率就上去了,如果没考上,你就是一坏分子,那你还不就蹲班呢“,海清:”这还没正式开学呢,学校怎么知道一凡就当不了这分子呢“,黄磊:”大数据呀,他根据你高一高二历次考试的这些东西,他就判断一下,你到底是一个什么级别的,如果你是一个好分子,肯定让你考,但如果你是个坏分子的话,分母都不让你当。剧中,黄磊一针见血的谈到了大数据意味着什么,代表着现如今大部分观众已经普遍能够开始接受这个词。其实纵观当今的社会,大数据已然无处不在。这里随便举些家喻户晓的应用场景:豆瓣的电影评分,大众点评的美食推荐,抖音视频的自动推送,淘宝的广告推送,世界杯各个国家的赔率计算。大数据影响着我们的决策,影响着生活的所见所闻。有研究指出,随着数字化社会的推进,人类平均每天生成2.2EB的数据,全球数据总量中有90%是过去24个月创建的,这充分说明海量的数据在当下已经不可避免地成为个人和企业的一项重要资产。如何利用好这些数据,并且深度发掘其中潜在的价值,是很多企业提高核心竞争力的一项重要手段,在一些数据驱动型的企业中甚至起到了决定性的作用。微策略为什么会被众多世界500强企业所青睐呢?它的其中一个优势在于它支持连接到一百多个企业数据库和其他信息资产,而且每个季度都在不停的引入新的数据源并提供不间断对数据源新版本的支持。包括传统的数据库MSSQLServer,Oracle,DB2,Teradata和大数据源,Spark,Impala,Hive等等。当数据源的推陈出新可能带来用户选择性的困扰,微策略提供各项功能性能指标的白皮书从纵向、横向剖析各个数据源与微策略集成的优势劣势,以提供给广大企业和用户参考。数据像空气一样围绕着我们的生活。我们可以预见,未来不仅是企业决策要由数据驱动,数据分析师、数据科学家将成为最热门的新兴需求职位之一。