网络渗透测试(TCP/IP)理论篇
TCP/IP体系
垂直服务:底层为高层服务
TCP/IP体系结构是一个分层的协议体系,由多个层次组成,每个层次都负责不同的功能。以下是TCP/IP体系结构的主要层次:
物理层(Physical Layer):该层负责传输原始的比特流,通过物理媒介(例如电缆、光纤或无线信号)将数据从一个节点传输到另一个节点。它定义了电压、电流、传输速率等物理特性。
数据链路层(Data Link Layer):该层负责在直接相连的节点之间传输数据帧(Frame)。它将原始的比特流分割为更小的数据包,添加地址和错误检测等控制信息,并管理物理层与网络层之间的接口。
网络层(Network Layer):该层负责将数据从源节点传送到目标节点,即实现端到端的数据传输。它使用IP协议来寻址和路由数据包,将数据从一个网络传输到另一个网络。
传输层(Transport Layer):该层负责在源节点和目标节点之间提供可靠的数据传输服务。它使用TCP协议或UDP协议来实现端到端的传输控制和错误检测,确保数据的完整性和可靠性。
应用层(Application Layer):该层是最高层,负责为用户提供各种不同的应用程序和服务。它包括诸如HTTP、FTP、SMTP等协议,用于实现Web浏览器、电子邮件、文件传输等应用。
物理层和数据链路层可以概括为一类,网络接口层
同时,TCP/IP是一个协议族或协议栈是由多个子协议组成的集合
这里了解一下HTTP协议
HTTP协议使用了请求-响应模式,其中客户端发送HTTP请求给服务器,服务器则返回HTTP响应给客户端。请求和响应的内容可以是HTML页面、图片、视频、音频等多种类型的数据。
以下是HTTP协议的一些重要特点:
无连接性:HTTP协议是一种无连接的协议,每个请求-响应交互都是独立的,服务器不会保留关于客户端的任何状态信息。这使得HTTP协议非常轻量化,但也意味着需要额外的机制来维护状态(例如使用Cookie)。
无状态性:HTTP协议是一种无状态的协议,服务器不会保持之前的请求或会话信息。每个请求都是独立的,服务器对于每个请求都没有记忆能力。这导致在处理事务时需要使用额外的机制来跟踪状态(如Cookie和Session)。
基于文本:HTTP协议使用可读的文本格式进行数据传输,请求和响应都是由ASCII字符组成的文本消息。这样使得HTTP协议非常易于阅读和调试,但传输效率相对较低。
支持多种请求方法:HTTP定义了多种请求方法,包括GET、POST、PUT、DELETE等。每个请求方法都有特定的语义和用途,使得客户端能够根据需要执行不同的操作。
URL定位资源:HTTP使用统一资源定位符(URL)来标识和定位Web上的资源。通过URL,客户端可以指定要访问的资源的位置和路径。
状态码:HTTP响应包含一个状态码,用于表示服务器对请求的处理结果。常见的状态码包括200(成功)、404(未找到)和500(服务器内部错误)等
OSI
OSI模型的七个层级:
物理层(Physical Layer):这是最底层的层级,负责定义物理介质和传输电信号的规范。它涉及到硬件设备、电缆类型、数据传输速率等。
数据链路层(Data Link Layer):该层负责在物理连接上提供可靠的数据传输。它将原始比特流转化为帧,并处理错误检测和纠正、流量控制和访问控制等。
网络层(Network Layer):网络层负责通过路由选择和路径规划来实现数据包的转发。它处理IP寻址、路由选择、分组拆装和跨网络的数据传输。
传输层(Transport Layer):传输层提供端到端的数据传输服务。它负责数据的分段、确认、重传以及流量控制和拥塞控制。
会话层(Session Layer):会话层管理应用程序之间的会话和连接。它负责建立、维护和结束通信会话,并提供数据同步和错误恢复机制。
表示层(Presentation Layer):表示层主要处理数据的表示和编码。它负责数据的加密、解密、压缩、转换和格式化,以确保不同系统之间的数据交换能够正确进行。
应用层(Application Layer):应用层是最高层级,提供了用户与网络服务之间的接口。它包括各种应用协议,如HTTP、SMTP、FTP等,以实现特定的网络应用功能。
网际层(互联网络层)
允许位于同一网络或不同网络中的两台主机之间以分组包(packet)的形式进行通信
网际层(Internet Layer),也称为网络层,是TCP/IP体系结构中的一层。它位于传输层之上,负责处理数据在网络中的传输和路由。网际层使用IP协议来寻址和路由数据包,将数据从一个网络传输到另一个网络。
以下是网际层的主要功能和特点:
寻址:网际层使用IP地址来唯一标识网络中的每个主机或设备。IP地址是一个32位或128位的数字,分为IPv4和IPv6两种版本。通过IP地址,网际层能够确定数据包源地址和目标地址,以便正确路由和传输数据。
路由:网际层负责决定数据包的传输路径,即选择合适的路径将数据包从源主机传送到目标主机。这涉及到选择最佳的路由器和计算出最优的路由路径,以确保数据能够快速、有效地传输。
分组转发:网际层将数据进行分组(或称为数据包、报文),并在网络中进行转发。每个数据包包含了目标地址等必要的信息,使得网络中的路由器能够根据该信息进行转发。分组转发技术允许大型数据被分成较小的片段,以便在网络上高效地传输。
跨网络通信:网际层实现了跨不同网络的通信。通过在数据包中添加源和目标IP地址,网际层能够将数据从一个网络传递到另一个网络,使得互联网成为可能。
错误检测和片段重组:网际层负责对数据包进行错误检测,以确保传输的数据的完整性。如果数据包在传输过程中发生了错误,网际层可以丢弃该数据包或重新请求发送。此外,当数据被分割成较小的片段进行传输时,网际层还负责对这些片段进行重组,以恢复原始数据。
网际层是TCP/IP体系结构中非常关键的一层,它实现了底层的网络连接和数据传输功能。通过使用IP协议和网际层提供的路由功能,不同的计算机和设备能够在广域网上进行通信,构建出一个全球范围的互联网
WAN和LAN
WAN(Wide Area Network)是一种广域网,它覆盖了大范围的地理区域,连接了位于不同地点的计算机和网络设备。相比之下,局域网(LAN)通常只覆盖较小的区域,例如办公室、校园或建筑物。
以下是一些关于WAN的特点和功能:
大范围覆盖:WAN覆盖的范围通常是跨越城市、国家甚至全球。它通过使用公共基础设施(如电话线、光纤电缆、卫星链路等)或专用线路(如租用的专线或虚拟专线)来连接远程位置。
多种连接技术:WAN可以使用多种不同的连接技术,包括传统的电话线路、ISDN(Integrated Services Digital Network)、DSL(Digital Subscriber Line)、以太网、无线链接(如Wi-Fi、3G/4G/5G)等。
较长的延迟和较低的带宽:由于WAN跨越较大的地理区域,数据在传输过程中需要经过多个路由器和中继设备,因此可能会产生较长的延迟。同时,相对于局域网,WAN的带宽通常较低,受限于传输介质和网络拓扑。
支持远程访问:WAN提供了远程访问的功能,使得用户可以通过互联网连接到公司网络、学校网络或其他机构的网络。这样,用户可以远程访问资源、共享文件、使用应用程序等。
数据安全性:由于WAN是公共网络,数据在传输过程中可能经过不可信的路径,因此数据安全性是一个重要考虑因素。为了保护数据的机密性和完整性,在WAN中通常会使用加密和认证技术(如VPN)来确保数据的安全传输。
WAN是实现跨地理位置之间连接的关键部分,它使得不同地点的计算机和网络设备能够相互通信和共享资源。企业、学校、政府机构以及互联网服务提供商都广泛使用WAN来建立更大规模和更广域的网络基础设施。
LAN(Local Area Network)是一种局域网,它通常覆盖较小的地理范围,例如家庭、办公室、校园或建筑物。LAN是用于在这些区域内连接计算机和其他设备的网络。
以下是一些关于LAN的特点和功能:
有限的范围:LAN的范围通常局限在一个相对较小的区域,如单个建筑物、楼层或者一个较小的校园。
高带宽:相对于广域网(WAN),LAN的带宽通常较高。由于局域网内的设备之间距离较近,可以使用更快速的传输介质(如以太网)来实现高速数据传输。
低延迟:由于数据在局域网内传输的距离较短,因此延迟较低。这使得局域网适用于需要实时通信和快速响应的应用程序。
易于管理:局域网通常由单个组织或个人控制和管理,因此更容易进行配置、监控和故障排除。
资源共享:局域网允许多台计算机和设备共享资源,如打印机、文件存储和互联网连接。这样可以提高工作效率和资源利用率。
安全性控制:由于局域网覆盖的范围较小且通常由单个组织控制,因此更容易实施安全策略和访问控制,以保护网络和数据安全。
常见的局域网技术包括以太网(Ethernet)、Wi-Fi无线局域网、令牌环(Token Ring)等。局域网广泛应用于家庭、办公室、学校和其他组织中,为用户提供内部通信和资源共享的便利性。
ACL(访问控制列表)
ACL(Access Control List)是一种用于控制网络设备上访问权限的列表或规则集合。ACL通常用于路由器、交换机和防火墙等网络设备中,以限制网络流量的进出和传输。
ACL基于规则和条件,决定哪些数据包可以通过设备,哪些需要被阻止或丢弃。每个ACL规则都包含一个匹配条件和一个操作指令。当网络设备接收到一个数据包时,它会逐条检查ACL规则,根据匹配条件判断是否执行指定的操作。
以下是一些常见的ACL使用场景和功能:
流量过滤:ACL可以用于过滤和控制进出网络设备的数据流量。例如,在路由器上配置ACL可以根据源IP地址、目标IP地址、端口号、协议类型和其他特定字段来限制或允许特定类型的流量通过。
安全增强:ACL可用于提高网络的安全性。通过配置适当的规则,可以阻止未经授权的外部访问或限制内部访问某些敏感资源。例如,可以配置ACL规则以阻止特定IP地址范围的访问或禁止特定服务的传入连接。
质量控制:使用ACL可以实现对特定类型的流量进行优先级排序和流量限制。通过配置ACL规则,可以设置带宽限制或优先级队列,以确保关键应用程序或服务在网络拥塞时仍能得到优先处理。
网络管理:ACL还可用于管理网络设备的远程访问权限。例如,在路由器上配置ACL规则,只允许特定IP地址或子网进行远程管理,以提高网络设备的安全性。
需要注意的是,ACL的配置和操作方式因设备和厂商而异。它可以使用基于数字的格式(如标准ACL和扩展ACL),也可以使用基于名称的格式(如命名ACL)。具体的ACL配置和语法请参考相应设备的文档和厂商指南。
NAT
NAT(Network Address Translation)是一种网络技术,用于在不同网络之间转换IP地址。它允许多个设备共享一个公共IP地址,并为每个设备分配一个唯一的私有IP地址。
以下是一些关于NAT的关键概念和功能:
IP地址转换:NAT通过将源IP地址和目标IP地址在数据包传输过程中进行转换,实现私有IP地址和公共IP地址之间的映射。这样,内部网络上的设备可以使用私有IP地址与外部网络进行通信,而外部网络只能看到公共IP地址。
扩展IP地址空间:由于IPv4地址空间有限,NAT允许多个设备共享单个公共IP地址。通过使用网络地址转换,内部网络可以使用私有IP地址,而无需为每个设备都分配一个公共IP地址。
安全性:NAT提供了一定程度的安全性,因为它隐藏了内部网络的细节和拓扑结构。外部网络无法直接访问内部网络中的设备,而只能与公共IP地址进行通信。这有助于减少潜在攻击面和提高网络安全性。
端口转换:NAT还可以进行端口转换,使得多个内部设备可以通过单个公共IP地址与外部网络建立连接。通过将源端口和目标端口进行转换,NAT可以维护不同设备之间的通信会话。
类型:主要有三种类型的NAT:静态NAT(Static NAT)、动态NAT(Dynamic NAT)和PAT(Port Address Translation)。静态NAT为特定的内部IP地址分配一个固定的公共IP地址,动态NAT根据需要从公共IP地址池中动态分配地址,而PAT在端口级别上进行转换,允许多个设备共享单个公共IP地址。
NAT在互联网连接共享、私有网络部署以及IPv4地址短缺等方面发挥着重要作用。但值得一提的是,NAT可能会引入一些网络应用的复杂性,如P2P连接或某些应用程序需要支持穿越NAT的特殊设置。
在公网中的IP地址是唯一的
传输层
进程-Port端口、TCP、UDP
传输层(Transport Layer)是OSI参考模型的第四个层级,位于网络层之上。它负责在源主机和目标主机之间提供端到端的可靠数据传输服务。
传输层的功能包括:
分段:将应用层传递下来的大块数据分割成更小的数据段。每个数据段都带有序列号,以确保在接收端进行正确的重组。
连接建立与终止:在通信双方之间建立和终止连接。常见的传输层协议如TCP(传输控制协议)使用三次握手来建立连接,并使用四次挥手来终止连接。
可靠性:通过确认、重传和流量控制等机制,传输层确保数据的可靠传输。当接收端收到数据后,会发送确认消息给发送端,如果发送端没有收到确认消息,则会重新发送数据。
流量控制:传输层使用流量控制机制来平衡发送端和接收端的速度差异,以防止数据丢失或拥塞。通过动态调整发送的数据量,传输层确保接收端能够及时处理接收到的数据。
拥塞控制:传输层还负责监测网络的拥塞情况,并采取相应的措施来减轻拥塞。它会根据网络的拥塞程度动态调整发送数据的速率,以避免过多的流量导致网络性能下降。
常见的传输层协议包括TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供可靠的连接导向型通信,适用于需要保证数据传输完整性和顺序性的场景,如网页浏览、文件传输等。而UDP是一种无连接的协议,不提供可靠性和流量控制,适用于实时性要求较高的应用,如音频和视频传输。
通过传输层的功能和协议,应用程序可以在端到端的通信中进行数据可靠性和流量控制的管理,确保数据的有效交付和正常处理。
Socket
百度百科对于Socket的介绍:套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。
套接字(Socket)是计算机网络编程中的一个概念,它提供了一种通信连接的接口,用于在不同主机之间进行数据传输。
套接字可以被看作是网络通信的端点,定义了数据流的起始和终止位置。它允许应用程序通过网络发送和接收数据。在网络编程中,套接字常用于实现客户端和服务器之间的通信。
套接字的特性和行为包括:
协议: 套接字使用特定的协议来传输数据,如TCP或UDP。TCP套接字提供可靠的、面向连接的通信,而UDP套接字则提供无连接的、不可靠的通信。
地址: 每个套接字都与一个特定的地址相关联,这个地址可以是一个IP地址和端口号的组合。在网络编程中,套接字通常使用IP地址和端口号来标识。
通信模式: 套接字可以以不同的通信模式工作,如流模式和报文模式。流模式套接字(如TCP)提供连续的数据流,而报文模式套接字(如UDP)将数据划分为独立的报文。
创建和销毁: 应用程序可以通过调用操作系统提供的套接字API函数来创建和销毁套接字。创建套接字时,需要指定协议和地址信息。
发送和接收数据: 应用程序可以使用套接字的发送和接收函数来发送和接收数据。数据可以以字节流或报文的形式进行传输。
在编程中,不同的编程语言和操作系统提供了各自的套接字API函数和库,用于创建、设置和使用套接字。常见的网络编程库如Python的socket模块和Java的java.net包提供了丰富的套接字功能和方法。
通过使用套接字,应用程序可以实现与其他主机之间的网络通信,进行数据交换和远程服务调用。套接字为网络编程提供了一种灵活而强大的工具,使得开发者能够构建各种类型的网络应用程序。
https://zhuanlan.zhihu.com/p/260139078
TCP和UDP
TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是在传输层使用的两种常见的网络协议。它们具有不同的特性和适用场景。
TCP 是一种面向连接的、可靠的协议,它提供了以下特性:
可靠性:TCP通过序列号、确认机制和重传来确保数据的可靠传输。如果数据在传输过程中丢失或损坏,TCP会自动重传这些数据。
顺序性:TCP保证数据按照发送的顺序被接收,这样应用程序能够准确地重构原始数据。
流量控制:TCP使用滑动窗口机制来控制发送端与接收端之间的数据流量,以避免接收端无法处理大量数据导致的拥塞问题。
拥塞控制:TCP使用拥塞控制算法来监测并响应网络拥塞。通过动态调整发送速率和使用拥塞窗口来减少数据的发送,以保持网络的稳定性和可靠性。
TCP适用于需要可靠数据传输和顺序性的应用场景,如文件传输、电子邮件、网页浏览等。
UDP 是一种无连接的、不可靠的协议,它提供了以下特性:
无连接性:UDP不需要在发送数据之前建立连接,因此它的开销较小。
低延迟:由于没有连接建立和维护的开销,UDP具有较低的传输延迟。
简单性:与TCP相比,UDP的协议包头较小,操作起来更加简单。
适用于实时应用:UDP适用于实时性要求较高的应用,如音频、视频流传输和实时游戏,在这些应用中,少量的数据丢失可以被接受,但要求低延迟。
UDP适用于一些对可靠性要求较低、速度和效率更为重要的应用场景。
在选择使用TCP或UDP时,需要根据具体的应用需求来决定。如果数据的完整性和顺序性非常重要,那么TCP是一个更好的选择;而如果实时性和低延迟更重要,可以选择UDP。同时,也可以结合两种协议,根据应用场景的不同选择适当的协议来满足需求。
应用层
应用层的主要功能包括:
应用协议:应用层定义了各种应用协议,如HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等。这些协议规定了应用程序之间进行通信时使用的消息格式和交互规则。
数据表示与编码:应用层负责将数据转换为适合在网络上传输的格式。这包括数据的编码、加密、压缩等操作。
用户界面:应用层提供了用户与网络应用程序之间的交互界面。这可以是图形用户界面(GUI)、命令行界面(CLI)或其他形式的交互方式。
会话管理:应用层支持不同应用程序之间建立、维护和终止会话。例如,在Web浏览器和服务器之间建立HTTP会话来传输网页内容。
文件传输和管理:应用层提供了文件传输和管理的功能,允许用户上传、下载、删除和共享文件。
电子邮件和消息处理:应用层支持电子邮件和消息传递服务,允许用户发送、接收和管理电子邮件和消息。
远程登录和操作:应用层支持远程登录协议,如SSH(安全外壳协议),允许用户通过网络远程登录到其他计算机并执行操作。
应用层的目标是为用户提供直观、功能丰富且易于使用的网络应用程序。它构建在下层网络协议的基础之上,将底层的通信细节进行抽象和封装,使得用户可以方便地使用各种网络服务和资源。常见的应用层协议和应用程序包括Web浏览器(HTTP协议)、电子邮件客户端(SMTP、POP3、IMAP协议)和文件传输程序(FTP协议)。
不用的应用进程、协议用什么区分?
端口号:每个应用进程在运行时都会绑定到一个特定的端口号上。端口号是一个16位的数字,范围从0到65535。常见的应用程序或服务通常使用一些标准端口号,例如HTTP使用端口号80,FTP使用端口号21。通过检查数据包中的目标端口号,可以确定它们所属的应用进程或协议。
协议标识符:不同的应用进程或协议通常使用不同的协议标识符来识别自己。例如,Web浏览器使用HTTP协议,电子邮件客户端使用SMTP、POP3或IMAP协议。通过检查数据包中的协议标识符,可以确定它们所属的应用进程或协议。
应用层数据格式:每个应用进程或协议都有自己定义的数据格式和消息结构。通过解析数据包中的数据内容,可以判断它们所属的应用进程或协议。例如,通过检查HTTP请求报文的特征,可以确定该数据包属于HTTP协议。
通信行为:不同的应用进程或协议可能具有不同的通信行为和交互规则。例如,SMTP协议用于电子邮件传输,它具有特定的命令和响应序列。通过观察数据包之间的通信行为,可以判断其所属的应用进程或协议。
以上这些方法可以结合使用,以确定给定数据包所属的应用进程或协议。在网络通信中,这些标识符和特征对于正确路由数据、递交到正确的应用进程或协议非常重要。