下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

怎样让人自觉遵守网络协议

作者:课课家教育     来源: http://www.kokojia.com点击数:951发布时间: 2017-09-15 13:00:16

标签: 组网技术网络工程师网络规划设计师

软考,您想通过吗?一次通过才是硬道理

  今天小编给大家带来的是网络协议,协议是两个人要签订合同,说话算话一定要按照协议上的方式来遵守不行,人碰着人是怎么样遵守的呢?感兴趣的小伙伴可以了解了解。

  网络这东西就是一个靠实践的东西,只靠看书是不行的。当年在学校还上过史美林教授/张公忠教授所讲的计算机网络体系结构课,用的是Tanabaum写的那本,考试还得了九十多分,可实际还是连TCP和UDP有什么区别都分不清,就是死记背,到毕业的时候基本上是忘光了,工作后等于重新来过。

  上班了要在Linux做一些底层的网络处理,不得不从头来学Linux和网络,编程部分主要看Richard Stevens的那几本书:APUE、UNP、TCP/IP Illustraion等,学Linux则看得很杂,市面上各种Linux入门书大都翻了一遍,俺是习惯在书店里看书,爱看书而不爱买书,汗,,然后就是去各大BBS、论坛把他们的精华区都下载下来狂看,边看边实践,基本上在一个月内熟悉了Linux的操作。

  学网络协议刚开始也是看书,但看了之后没多少印象,那些东西靠死记真是没法记的,后来找到一个好办法,就是自己写个sniffer,自己写个协议分析器,先学怎么抓包,就看tcpdump的源码,然后看libpcap的源码,知道了什么是网卡的混杂模式,很快就能抓到网卡上包的。

  接下来就是对包进行分析,就看作TCP/IP Illustraion,从以太头、ARP/IP、ICMP/IGMP/TCP/UDP、HTTP/FTP/TELNET/SMTP等这么一点一点、一个字段一个字段分析下来,很快就明白了所谓TCP/IP到底是怎么回事。另外为了学TCP状态转换表,根据所抓的包的TCP标志分析通信双方当前是什么状态,刚开始还只能从头一方发SYN包开始分析,到后来是可从连接中间包如手就能逐渐判断双方的TCP状态,基本上是彻底搞清楚了TCP的状态转移是怎么回事,后来再理解防火墙的状态检测原理就很容易了。另外在分析过程中,为彻底掌握IP碎片,还特地ping大包来抓,把抓上来的包自己重组,搞明白了IP头的碎片offset字段是怎么用的。

怎样让人自觉遵守网络协议_组网技术_网络工程师 _网络规划设计师_课课家

  能抓包后进而又开始学如何自己构造包来“干扰”正常通信了,开始是学怎么发TCP的RST包来切断一个正常的TCP连接,就的学会如何计算IP头校验和,TCP校验和,知道了算TCP校验和时必须加IP伪头数据,然后是正确计算序列号和确认号,知道了原来SYN和FIN标志也是算一位的,最重要的是理解了什么是网络序什么是主机序,现在基本把ntohs(l),htons(l)处理都成了一种编程的本能意识了。学会用RST切断TCP后,进一步实现了直接发一个页面信息告诉客户端访问了非法信息,也就是以后实现URL过滤时客户端显示的拒绝画面。后来也学发ARP信息胡乱通告MAC地址,也就是以前写的那篇ARP攻击的由来。

  网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。

  网络上的计算机之间又是如何交换信息的呢?就像我们说话用某种语言一样,在网络上的各台计算机之间也有一种语言,这就是网络协议,[3] 不同的计算机之间必须使用相同的网络协议才能进行通信。网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义。大多数网络都采用分层的体系结构,每一层都建立在它的下层之上,向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。一台设备上的第 n层与另一台设备上的第n层进行通信的规则就是第n层协议。在网络的各层中存在着许多协议,接收方和发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息。网络协议使网络上各种设备能够相互交换信息。常见的协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。当然了,网络协议也有很多种,具体选择哪一种协议则要看情况而定。Internet上的计算机使用的是TCP/IP协议。ARPANET成功的主要原因是因为它使用了TCP/IP标准网络协议,TCP/IP(Transmission Control Protocol/Internet Protocol)----传输控制协议/互联网协议是Internet采用的一种标准网络协议。它是由ARPA于1977年到1979年推出的一种网络体系结构和协议规范。随着Internet网的发展,TCP/IP也得到进一步的研究开发和推广应用,成为Internet网上的"通用语言"。

  为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。

后来俺写的这个协议分析器逐步完善,能解析的就解析,不能解析的就打印出16进制数,可打印字符也打印出来,对HTTP、FTP、POP3、SMTP这些文本协议几乎就一下看明白了,对于非文本协议,如DNS,也根据协议解析了出来,而且解析DNS时不得不用了我一向不爱用的递归方法来编程。随着网络应用的增加,在用到前都先作协议解析,除了各种TCP、UDP的协议,还增加了BPDU、PPPOE、OSPF、ESP、AH、IKE等的解析处理,现在俺的协议分析器也可以分析上百种协议,平时抓包就只用俺这个,TCPDUMP基本不再用了,毕竟自己写的自己更清楚,如果有不能解析的再现加进去。现在学新协议时,往往先抓包看看协议的基本数据格式,再看RFC了解细节。

  学协议刚开始是看书,到后来要更深入了解或追询最新发展情况就只能看RFC了,毕竟网络的东西变化太快,书的东西只能算入门,说不定很快就出新的了,到现在也看了数百篇的RFC了。

  通过编程分析来学协议,慢是慢了点,花了一个多月的时间,但感觉学得扎实,正所谓磨刀不误砍柴功,而且一通百通。到现在虽然已经好几年了,IP头,TCP头有哪些字段还是一下就可以说得出来,对理解各种网络攻击原理从而进行防范更是有帮助,我觉得对我来说这种方法是很有效,如果哪位觉得有更有效的学习方法,可以共同交流一下。

  结束语:今天小编给大家带来的课程大家听懂了吗?网络协议,接收方和发送方同层的协议必须一致,这样才能够自觉遵守上面的规定否则一方将无法识别另一方发出的消息协议作废。更多独家内容就在课课家。

赞(25)
踩(0)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程