头歌:Ping客户端创建原始套接字(底部附全关完整答案)
创始人
2024-05-05 09:35:36
0

头歌实践教学平台 (educoder.net)

为Ping客户端创建一个原始类型的套接字

原始套接字


套接字(socket)是一个抽象层

网络应用程序可以通过它发送或接收数据,可对其进行像文件一样的打开、读写和关闭等操作。

套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。

网络套接字是IP地址与端口的组合

为了满足不同的通信程序对通信质量和性能的要求,一般的网络系统提供了三种不同类型的套接字,以供用户在设计网络应用程序时根据不同的要求来选择。它们分别是:

(1)流式套接字(SOCK-STREAM)。提供一种可靠的、面向连接的双向数据传输服务,实现了数据无差错、无重复的发送。流式套接字内设流量控制,被传输的数据看作是无记录边界的字节流。

在TCP/IP协议簇中,使用TCP协议来实现字节流的传输,当用户想要发送大批量的数据或者对数据传输有较高的要求时,可以使用流式套接字。

(2)数据报套接字(SOCK-DGRAM)。提供一种无连接、不可靠的双向数据传输服务。数据包以独立的形式被发送,并且保留了记录边界,不提供可靠性保证。数据在传输过程中可能会丢失或重复,并且不能保证在接收端按发送顺序接收数据。

在TCP/IP协议簇中,使用UDP协议来实现数据报套接字。在出现差错的可能性较小或允许部分传输出错的应用场合,可以使用数据报套接字进行数据传输,这样通信的效率较高。

(3)原始套接字(SOCK-RAW)。该套接字允许对较低层协议(如IP或ICMP)进行直接访问,常用于网络协议分析,检验新的网络协议实现,也可用于测试新配置或安装的网络设备。

原始套接字网络通信的基本步骤为


(1)创建原始套接字、设置套接字选项和创建并填充相应协议头;

(2)用sendto()函数将组装好的数据发送出去;

(3)使用recvfrom()函数接收数据并解析;

(4)关闭套接字。

本实训使用原始套接字类型,通过ICMP协议来实现Ping程序的网络连通性测试功能

在Python中使用套接字编程


需要先引入套接字

import socket

使用socket()函数来创建套接字。其语法如下:

socket(socket_family,socket_type,protocol=0)

socket_family可以是如下参数之一:

  AF_INET IPv4(默认)

   AF_INET6 IPv6

   AF_UNIX 只能够用于单一的Unix系统进程间通信

socket_type可以是如下参数之一:

   SOCK_STREAM  流式socket , for TCP (默认)

   SOCK_DGRAM   数据报式socket , for UDP

   SOCK_RAW 原始套接字

普通的套接字无法处理ICMP、IGMP等网络报文,而原始套接字SOCK_RAW可以;

SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。SOCK_RAM通常仅限于高级用户或管理员运行的程序使用。

protocol参数:0 (默认)与特定的地址家族相关的协议

如果是 0 ,则系统就会根据地址格式和套接类别,自动选择一个合适的协议。也可以使用

getprotobyname()指定要使用的协议名称如“ICMP”、“UDP”等

要创建一个使用IPV4地址族的的原始套接字,并指定使用ICMP协议,可以使用如下语句:

icmp = getprotobyname("icmp")   /*指定ICMP协议
rawsocket=socket(AF_INET, SOCK_RAW, icmp)

完整代码


头歌ICMPPing实现-Ping客户端创建原始套接字-网络基础文档类资源-CSDN文库

头歌ICMPPing实现-封装并发送ICMP报文-网络基础文档类资源-CSDN文库

头哥ICMPPing实现-解析IP包ICMP头信息.txt-网络基础文档类资源-CSDN文库

头歌第1关:Ping服务端创建UDP套接字-网络基础文档类资源-CSDN文库

头歌UDPPing程序实现-接收并转发消息-网络基础文档类资源-CSDN文库

头歌UDPPing程序实现-服务端模拟丢包事件-网络基础文档类资源-CSDN文库

(1条消息) 头歌UDPPing程序实现-客户端创建UDP套接字-网络基础文档类资源-CSDN文库

(1条消息) 头歌UDPPing程序实现-客户端向服务器发送消息并接收消息.txt-网络基础文档类资源-CSDN文库

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...