专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

网络安全编程:Winsock编程基础

来源:小易整编  作者:小易  发布时间:2023-03-06 03:50
摘要:网络安全编程:Winsock编程基础网络攻防是一个比较大的话题,比如端口扫描、SQLInjection扫描、数据包嗅探、网络密码猜解、后门、木马等知识的基础技术。这些技术在入侵剖析中是比较常见的技术。在学习扫描器、嗅探器、木马等知识之前,首...

网络安全编程:Winsock编程基础

网络攻防是一个比较大的话题,比如端口扫描、SQL Injection扫描、数据包嗅探、网络密码猜解、后门、木马等知识的基础技术。这些技术在入侵剖析中是比较常见的技术。

在学习扫描器、嗅探器、木马等知识之前,首先必须学习网络编程的基础知识,网络编程的基础是深入学习网络的起步,没有基础知识,扫描、嗅探都是空谈。

01 网络基础知识

各计算机之间通过互联网进行通信主要依赖TCP/IP。该协议是一个4层协议,由上至下分别是应用层、传输层、网际层和链路层。TCP/IP的下层协议总是为上层协议服务,下层协议的细节对于上层协议来说是透明的。分层设计的好处是,每一层的功能比较明确,而且修改某一层的实现不会影响其他层。TCP/IP在每层协议中都定义了非常多的不同的协议,比如网际层的协议ICMP、IGMP等,传输层的TCP、UDP等。在众多协议中,最具代表性的协议是TCP和IP,因此,互联网协议被称为TCP/IP族(千万别认为TCP和IP就是互联网协议的全部)。

IP协议是“Internet Protocol”的简称,它是为计算机网络相互连接进行通信而设计的协议。在IP协议中最重要的就是IP地址,IP地址是用来在网络上唯一标识计算机主机的地址。互联网中没有两个机器有相同的IP地址,因此它是用来标识一台网络主机的。所有的IP地址都是32位长,它用点分十进制法来表示,比如“10.10.30.12”。IP地址指定的不是主机,而是网络接口设备。因此,一台主机有两个网络接口,那么就会有两个IP地址。通常情况下,对于一台普通主机只有一个网络接口设备,也就只有一个IP地址,比如个人使用的PC通常只有一个IP地址;而对于服务器或者网络设备(交换机、路由器等)来说,则会有多个网络接口设备,每个网络接口设备都会有一个IP地址,那么对于路由器这种网络设备来说就会有多个IP地址。

IP地址被分为5类,分别是A类、B类、C类、D类和E类。各类IP地址的范围如表1所示。

网络安全编程:Winsock编程基础

表1  各类IP地址的范围

IP工作在TCP/IP 4层协议的“网际层”,网际层最主要的工作是将数据包进行路由。这里所说IP是一种被路由协议,也就是在进行路由的过程中,IP协议会被路由协议用到。真正进行数据包选路的协议(其实就是路由的算法,数据包如何进行转发的算法)被称为路由协议,具体的路由协议有RIP、OSPF、BGP等。对于入门而言,只要了解了IP地址是什么,IP地址的作用是什么即可。

传输层主要有两大协议,分别是TCP协议和UDP协议。

TCP是“Transmission Control Protocol”的简称,其意思为传输控制协议。TCP是一种面向连接的、可靠的通信协议。TCP协议是IP协议的上层协议,IP服务于TCP。

UDP是“User Datagram Protocol”的简称,其意思为用户数据报协议。UDP是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

传输层是为应用层提供服务的,应用层的协议一部分是基于TCP的,比如FTP、HTTP,而一部分是基于UDP的,比如DNS。IP层提供了IP地址用来标识网络主机,而传输层提供了端口用来标识主机中的进程。确定了IP地址和端口号,就确定了网络上的主机及主机上通信的进程。

传输层提供了标识通信进程的端口号。按照协议划分,端口分为TCP端口和UDP端口,TCP端口和UDP端口各有65536个。对于应用程序而言,一般使用大于1024的端口号,因为小于1024的端口号属于保留端口。Internet上的很多服务都是用了小于1024的端口号。为了避免冲突,程序员自己编写的应用程序不要使用小于1024的端口号。同一协议的端口不能冲突,比如Web服务器占用了主机TCP的80端口,那么另外的程序就不可以再使用TCP的80端口。常用的端口号如表2所示。

网络安全编程:Winsock编程基础

表2  常用端口号举例

除了小于1024的端口号外,还有一些比较知名的端口号,比如MS SQL Server的端口号是1433,Windows的远程桌面端口号是3389等。程序员在编写自己的网络应用程序时,要避免与这些常用的端口冲突。

02 面向连接协议与非面向连接协议所使用的函数

1. 面向连接的协议

在面向连接的协议中,两台计算机之间在进行数据收发前,必须先在两者之间建立一个通信信道,以确保两台计算机之间存在一条路径可以互相沟通。在数据传输完毕后,切断这条通信信道。该种方式相当于打电话,用户在手机上拨10086,当客服人员接听后,用户就可以开始通话,通话完毕后就可以挂电话了。

面向连接的协议使用的是TCP,服务器与客户端建立通信信道所需要的基本Winsock函数如下。

服务器端函数:

socket()->bind()->listen()->accept()->send()/recv()->closesocket()

客户端函数:

socket()->connet()->send()/recv()->closesocket()

2. 非面向连接的协议

在非面向连接的协议中,发送端只要直接将要发送的数据传出即可,不需要理会接收端是否能够收到数据。而接收端在接收到数据时,也不会响应信息通知发送给发送端。该种方式就相当于写信,将写好的信放到信箱中,但是却不能保证收信人真的能够收到这封信件。

非面向连接的协议使用的是UDP,服务器与客户端通信所需要的基本Winsock函数如下:

服务器端函数:

socket()->bind()->sendto()/recvfrom()->closesocket()

客户端函数:

socket()->sendto()/recvfrom()->closesocket()

03 Winsock网络编程知识

Winsock是Windows下网络编程的基础,下面介绍Winsock的常用函数。

1. Winsock的初始化与释放

在使用Winsock相关函数时需要对Winsock库进行初始化,而在使用完成后需要对Winsock库进行释放。完成Winsock库的初始化和释放的函数如下。


本文地址:百科问答频道 https://www.neebe.cn/wenda/916638.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • 网络安全编程:Winsock编程基础

    网络安全编程:Winsock编程基础

    网络安全编程:Winsock编程基础网络攻防是一个比较大的话题,比如端口扫描、SQLInjection扫描、数据包嗅探、网络密码猜解、后门、木马等知识的基础技术。这些技术在入侵剖析中是比较常见的技术。在学习扫描器、嗅探器、木马等知识之前,首...

  • 周排行
  • 月排行
  • 年排行

精彩推荐