官方服务微信:dat818 购买与出租对接

成为黑客前必学的计算机网络通信原理及其重要性

6948

主题

2

回帖

2万

积分

管理员

积分
20992
发表于 前天 22:29 | 显示全部楼层 |阅读模式
    成为“黑客”之前必须学习的“计算机网络通信原理”

    “黑客”的目的是发现目标漏洞,然后发起攻击或提出修复漏洞的解决方案。发现漏洞的过程需要你掌握很多知识,比如计算机原理、计算机网络、操作系统、计算机软件、编程语言等等,其中数据结构、数据库技术、前沿技术等等要学东西,首先需要学习《网络通信原理》。为什么?因为网络通信的原理非常重要,根据他的原理,可以判断很多看似正确的理论实际上是存在很多漏洞的通信过程。很多黑客攻击都是利用了这些漏洞,很多网络安全解决方案也都是用来解决这些漏洞的。的。

    1. 互联网的起源?

    互联网的本质是一系列的网络协议。

    一个硬件有了操作系统,然后就可以安装软件并正常使用。每个人都有自己的机器,但彼此隔离。

    怎么让大家一起玩,我们已经有了初步的网络。其实两台电脑之间的通信原理和两个人打电话时的通信原理是一样的。普通话是中国人之间交流的标准,那么两个国家的人是否可以交流呢?问题是你不能要求一个人/计算机掌握世界上的语言/标准,所以世界上有一个统一的通讯标准:英语

    结论:英语已经成为世界各国人民交流的统一标准。如果把计算机看作是分布在世界各地的人,那么连接两台计算机的实际上是一系列统一的标准。这些标准称为互联网协议。互联网的本质是一系列协议,统称为“互联网协议”(套件)。

    互联网协议的功能:定义计算机如何连接以及连接的计算机之间的通信标准。

    2. 网络协议介绍

    协议根据功能不同分为osi七层或tcp/ip五层。

    每层运行通用的物理设备

    五层模型解释

    我们将应用层、表示层、会话层结合起来作为应用层,从TCP/IP五层协议的角度来解释各层的由来和作用。一旦了解了各层的主要协议,我们就会了解整个互联网通信的原理。 。

    首先,用户感知到的只是最上面的应用层,从上到下的每一层都依赖于下一层,所以我们从底层开始,更好地理解每一层都运行着特定的协议。离用户越近,离硬件就越近。

    1、物理层:如上所述,孤立的计算机想要一起玩,就必须将它们连接起来。言下之意就是计算机必须完成联网

    物理层功能:主要根据电气特性发送高低压(电信号)。高电压对应数字1,低电压对应数字0。

    2.数据链路层:简单的电信号0和1没有任何意义。需要明确一组电信号有多少位,每组代表什么意思?

    数据链路层的功能:定义电信号的分组方式

    以太网协议:

    早期,每个公司都有自己的分组方法。后来形成了统一的标准,即以太网协议。

    规定

    一组电信号形成一个数据包,称为“帧”

    每个数据帧分为两部分:帧头和数据。

    头部包含:(固定18字节)

    发送者/源地址,6 字节

    接收者/目的地址,6字节

    数据类型,6字节

    数据包含:(最小46字节,最大1500字节)

    数据包的具体内容

    头长度+数据长度=最小64字节,最大1518字节,超过最大限制将分片发送。

    mac地址:

    头部包含的源地址和目的地址的由来:规定所有连接的设备必须有网卡。发送方和接收方的地址是指网卡的地址,即mac地址。

    mac地址:每块网卡出厂时都刻有全球唯一的mac地址。长度为48位二进制数,通常用12位十六进制数表示(前六位为厂家编号,后六位为流水线编号)

    播送:

    有了mac地址,同一网络中的两台主机就可以进行通信(一台主机通过arp协议获取另一台主机的mac地址)。通讯是用最原始的方式进行的,广播,也就是计算机通讯基本上都是靠吼叫。

    3.网络层:通过mac地址和广播的发送方式,世界各地的计算机可以相互通信。问题在于,全球互联网是由相互隔离的小型局域网组成的。所以如果所有的通信都采用以太网广播的方式,那么一台机器发出的数据包就会被全世界接收到。这不仅是效率低下的问题,更是一场灾难。

    上图结论:你必须找到一种方法来区分哪些计算机属于同一个广播域,哪些计算机不属于。如果是这样,请使用广播。如果没有,请使用路由(将数据包分发到不同的广播域/子网)。 ),mac地址是无法区分的,只与厂家有关。

    网络层功能:引入一组新的地址来区分不同的广播域/子网。这组地址就是网络地址。

    IP协议:

    规定网络地址的协议称为ip协议,它定义的地址称为ip地址。广泛使用的v4版本是ipv4,它规定网络地址用32位二进制表示

    范围 0.0.0.0-255.255.255.255

    IP地址通常写为四段十进制数,例如:172.16.10.1

    IP地址分为两部分

    网络部分:识别子网

    Host部分:标识主机

    注意:简单IP地址段仅标识IP地址的类型。从网络部分或主机部分无法识别IP所在的子网。

    示例:172.16.10.1 和 172.16.10.2 无法确定它们位于同一子网中。

    子网掩码

    所谓“子网掩码”是代表子网特征的参数。形式上相当于IP地址,也是一个32位二进制数,网络部分全1,主机部分全0。例如,对于IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,则子网掩码为...,用十进制写为255.255.255.0 。

    知道了“子网掩码”,我们就可以判断任意两个IP地址是否在同一个子网中。方法是将两个IP地址和子网掩码进行AND运算(两位都为1,运算结果为1,否则为0),然后比较结果是否相同。如果是,则表明它们在同一子网中。在网络中,否则不行。

   


    例如,已知IP地址172.16.10.1和172.16.10.2的子网掩码均为255.255.255.0。它们是否在同一子网中?两者分别与子网掩码进行AND运算。

    172.16.10.1:...

    .255.255.0:...

    AND 运算的网络地址结果:...->172.16.10.0

    172.16.10.2:...

    .255.255.0:...

    AND 运算的网络地址结果:...->172.16.10.0

    结果都是 172.16.10.0,因此它们位于同一子网中。

    概括起来,IP协议有两个主要功能。一是为每台计算机分配IP地址,二是确定哪些地址在同一子网中。

    IP数据包

    IP数据包也分为头部和数据部分。无需为 IP 数据包定义单独的字段。它可以直接放入以太网数据包的数据部分。

    头:长度20到60字节

    数据:最多 65,515 字节。

    以太网数据包的“数据”部分只有 1500 字节长。因此,如果一个IP数据包超过1500字节,就需要将其拆分成多个以太网数据包分别发送。

    ARP协议

    arp协议的由来:计算机通信基本上依靠广播。所有上层报文最后都必须封装以太网头,然后通过以太网协议发送。在谈论以太网协议时,我们了解到通信是基于mac广播方式的,计算机在发送数据包时很容易获得自己的mac。如何获取目标主机的mac就需要arp协议。

    arp协议功能:通过广播方式发送数据包,获取目标主机的mac地址

    协议如何工作:每个主机 IP 都是已知的

    例如:主机172.16.10.10/24访问172.16.10.11/24

    3.1 首先通过IP地址和子网掩码识别自己所在的子网。

    3.2 分析 172.16.10.10/24和172.16.10.11/24在同一网络(如果不是同一网络,则下表中的目标IP为172.16.10.1,通过arp获取网关的mac)

    3.3 该数据包将以广播的方式在发送方的自身网络中传输。所有主机收到后都会打开数据包,发现目标IP是自己的,就会响应并返回自己的mac。

    4.传输层:网络层的IP帮助我们区分子网,以太网层的Mac帮助我们找到主机。然后每个人都使用应用程序。您的电脑上可能同时打开了QQ、暴风影音等多个应用程序。程序,然后我们通过IP和mac找到特定的主机。如何识别该主机上的应用程序?答案是端口。端口是与应用程序和网卡关联的编号。

    传输层功能:建立端口到端口的通信

    补充:端口范围是0-65535,0-1023是系统占用的端口

    TCP协议:可靠传输。 TCP数据包没有长度限制,理论上可以无限长。但为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以保证单个TCP数据包不必被分割。 。

    UDP协议:

    不可靠传输,“头”部分总共只有8个字节,总长度不超过65,535个字节,适合一个IP数据包。

    TCP消息

    TCP三路握手和四路挥手

    5、应用层:所有用户使用应用程序,都工作在应用层。互联网发达了,每个人都可以开发自己的应用程序。数据的类型多种多样,必须指定数据的组织形式。

    应用层功能:规定应用程序的数据格式。

    示例:TCP协议可以为各种程序传输数据,例如Email、WWW、FTP等。那么,必然有不同的协议来规定电子邮件、网页和FTP数据的格式。这些应用协议构成了“应用层”。

    6.:我们知道,两个进程如果需要通信,最基本的前提是能够唯一标识一个进程。在本地进程通信中,我们可以使用PID来唯一标识一个进程,但是PID只是本地唯一的,而在网络中两个进程之间PID冲突的概率很大。这个时候我们就需要另想办法了。我们知道IP层的ip地址可以唯一标识主机,TCP层协议和端口号可以唯一标识主机的一个进程。这样,我们就可以用ip地址+协议+端口号来唯一标识网络中的一个进程。

    通过能够唯一地识别网络上的进程,他们可以使用它们进行通信。它是什么?我们常将其翻译为套接字,它是应用层和传输层之间的一个抽象层。它将TCP/IP层的复杂操作抽象为几个简单的接口,供应用层调用已实现的进程进行网络通信。 。

    起源于UNIX,在Unix万物皆文件的哲学下,是“打开-读/写-关闭”模式的实现。服务器和客户端各自维护一个“文件”。连接建立并打开后,就可以自己打开了。文件写入内容供对方读取或读取对方的内容,通信结束时文件关闭。

    3、网络通讯的实现

    每个主机实现网络通信有四个基本要素:

    本机的IP地址

    子网掩码

    网关IP地址

    DNS IP地址

    获取这四个元素有两种方法:

    1、静态采集

    即手动配置

    2. 动态采集

    通过 dhcp 获取

    (1)前面的“以太网头”设置发送方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者是本地网卡的MAC地址。后者此时还不知道,所以填写一个广播地址:FF-FF-FF-FF-FF-FF。

    (2)下面的“IP头”设置发送方的IP地址和接收方的IP地址。此时,机器还不知道他们中的任何一个。因此,发送方的IP地址设置为0.0.0.0,接收方的IP地址设置为255.255.255.255。

    (3)最后的“UDP ”设置发送方端口和接收方端口。这部分是由DHCP协议规定的。发送方为端口 68,接收方为端口 67。

    数据包构建完成后,就可以发送出去了。以太网是广播传输,同一子网上的每台计算机都会收到此数据包。因为接收者的MAC地址是FF-FF-FF-FF-FF-FF,所以无法分辨它是发给谁的,所以每台收到这个数据包的计算机也必须分析这个数据包的IP地址来判断是否是不是为了你自己。当它看到发送方IP地址是0.0.0.0并且接收方IP地址是255.255.255.255时,DHCP服务器就知道“这个数据包是发送给我的”,其他计算机可以丢弃该数据包。

    接下来,DHCP服务器读取该数据包的数据内容,分配IP地址,并发回“DHCP响应”数据包。这个响应包的结构也类似。以太网头的MAC地址就是双方的网卡地址。 IP头的IP地址是DHCP服务器(发送方)的IP地址和255.255.255.255(接收方)。 UDP 标头端口为 67(发送方)和 68(接收方)。分配给请求者的 IP 地址和该网络的特定参数包含在数据部分中。

    新添加的计算机收到这个响应包后,就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等参数。

   


    4、主机访问网站的网络通信过程示例

    首先打开浏览器,在地址栏输入网址,回车,就会出现网站内容。这是我们几乎每天都会做的事情,那么这个过程背后的原理到底是什么呢? HTTP、TCP、DNS 和 IP 等熟悉的术语何时发挥什么作用?让我们在这里回顾一下这一切。

    4.1 整个流程基本分为以下几个部分:

    1、域名解析为IP地址;

    2、与目的主机建立TCP连接(三次握手);

    3.发送和接收数据;

    4、断开与目的主机的TCP连接(挥手四次);

    下面对4.2进行详细说明。

    4.2.1 域名解析为IP地址

    首先什么是域名解析?

    我们在浏览器地?找不到,因为网络中每台主机的位置都是通过IP来标识的。 IP是主机在网络中的位置。域名只是为了方便用户记忆。这就要求浏览器能够识别域名并进行转换。是对应的IP地址。

    因此,浏览器会有一个DNS缓存,它记录了一些域名和IP的对应关系,让浏览器能够快速找到所需的IP。然而,这个DNS缓存不可能存储所有的域名和IP地址,更何况IP地址有时会发生变化。因此,当在DNS缓存中没有找到时,需要先向DNS服务器请求域名解析。我们经常听到DNS服务器的一个主要作用就是进行域名解析。

    值得一提的是,DNS域名解析采用的是UDP协议。

    整个域名解析流程如下:

    1、浏览器向本地DNS模块发送DNS请求,DNS模块生成相关DNS报文;

    2、DNS模块将生成的DNS报文传递给传输层的UDP协议单元;

    3、UDP协议单元将数据封装成UDP数据报,传递给网络层的IP协议单元;

    4、IP协议单元将数据封装成IP数据包,其目的IP地址为DNS服务器的IP地址;

    5、封装后的IP数据包将被传递到数据链路层的协议单元进行传输;

    6、发送时查询ARP缓存中的相关数据。如果没有,则发送ARP广播(包括要查询的IP地址),接收到广播的主机检查自己的IP,符合条件的主机将发送包含自己MAC地址的ARP数据包。向通过ARP广播的主机) 请求并等待 ARP 响应;

    7、收到ARP响应后,将路由的IP地址和下一跳MAC地址对应的信息写入ARP缓存表中;

    8、写入缓存后,将目的MAC地址填充为路由的下一跳地址,并以数据帧的形式转发;

    9、转发可能会发生多次;

    10、DNS请求到达DNS服务器的数据链路层协议单元;

    11、DNS服务器的数据链路层协议单元解析数据帧,并将内部IP数据包传递给网络层IP协议单元;

    12、DNS服务器的IP协议单元解析IP数据包,并将内部UDP数据报传递给传输层UDP协议单元;

    13、DNS服务器的UDP协议单元对接收到的UDP数据报进行解析,并将内部DNS报文传递给DNS服务单元;

    14、DNS服务单元将域名解析为对应的IP地址,并生成DNS响应消息;

    15、DNS响应报文->UDP->IP->MAC->我的主机;

    16、我的主机接收到数据帧,发送数据帧->IP->UDP->浏览器;

    17、将域名解析结果以域名和IP地址对应的形式写入DNS缓存表中。

    里面提到了ARP的概念,类似于DNS将域名翻译成IP的方式。 ARP 将 IP 转换为 MAC 地址。当我们知道了IP之后,我们需要通过主机的MAC地址来更具体地找到主机。还有一个ARP缓存,里面存储了IP和MAC地址的一些对应关系。如果在缓存中找不到,就会广播寻找MAC地址。收到广播的主机会检查自己的IP是否是要找到的IP。 IP,如果是,则返回自己的MAC地址。

    如果你做开发,你会经常接触到端口的概念。那么什么是端口呢?这是指TCP/IP协议中的端口。端口号范围为0~65535。例如,80端口用于浏览Web服务,21端口用于FTP服务等。有一些固定的端口号被占用。之后,它就不能被其他服务用来传输数据。

    4.2.2 与目的主机建立TCP连接(三次握手)

    获得域名对应的IP地址后,就意味着可以将数据投递到目的主机了。这时候我们常说的三次握手就开始建立连接了。

    HTTP请求是使用TCP来传输的,可以保证传输的可靠和有序,而TCP是连接传输,即在传输数据之前,我的主机和目的主机之间会建立一个连接,然后就可以传输了。数据传输完成后,出现断线。这就是TCP的三向握手和四向挥手。大致流程如下图所示:

    建立连接的具体三次握手描述如下。数据包的传输过程与上面请求DNS服务器的过程类似,所以简单表述为:

    1、向目的主机发送TCP连接请求报文;

    2、TCP报文中的SYN标志置1,表示有连接请求;

    3、TCP报文经过IP(DNS)->MAC(ARP)->网关->目的主机;

    4、目的主机接收数据帧,并通过IP->TCP和TCP协议单元回应请求和响应消息;

    5、该消息中的SYN和ACK标志位均设置为1,表示连接请求响应;

    6、TCP报文经过IP(DNS)->MAC(ARP)->网关->我的主机;

    7、我主机收到数据帧,通过IP->TCP,TCP协议单元响应请求确认消息;

    8、TCP报文经过IP(DNS)->MAC(ARP)->网关->目的主机;

    9、目的主机收到数据帧,通过IP->TCP建立连接。

    三次握手过程就是来来回回,互相确认,建立连接。在此过程中,任何错误或超时的消息都必须重新传输。

    4.2.3 发送和接收数据

    如上所述,只有建立连接后才能开始数据传输。传输数据的方式其实有很多种,比如分段、分组、分时等。一个数据包的传输过程如下,以HTTP GET方法请求为例:

    1、浏览器向域名发送GET方法消息;

    2、GET方法报文经过TCP->IP(DNS)->MAC(ARP)->网关->目的主机;

    3、当目的主机收到数据帧时,通过IP->TCP->HTTP,HTTP协议单元会以HTTP协议格式封装的HTML数据进行响应;

    4、HTML数据经过TCP->IP(DNS)->MAC(ARP)->网关->我的主机;

    5、我的主机通过IP->TCP->HTTP->浏览器接收数据帧,浏览器以网页的形式显示HTML内容。
您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|关于我们

Copyright © 2001-2024, Tencent Cloud.    Powered by Discuz! X3.5    京ICP备20013102号-30

违法和不良信息举报电话:86-13718795856 举报邮箱:hwtx2020@163.com

GMT+8, 2024-12-20 01:44 , Processed in 0.057812 second(s), 17 queries .