套接字 8.23

套接字是IP地址与端口号的组合,用于标识网络上的唯一连接。端口如同房子的门,一台主机可有65536个端口,每个端口对应一个进程。套接字API如socket()和bind()用于数据传输。操作系统为进程分配端口,并根据端口号转发数据。套接字在传输层和应用层之间,提供数据交换接口。学习网络通信时,理解套接字的基础概念是关键。

通过ip地址+端口号标识套接字,套接字绑定了主机端口号
ip地址对应相应主机
进程监控相应端口
(查了一下端口的定义)

端口

如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:2^16)个。端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。
(一种服务对应一个端口)
本地操作系统会给那些有需求的进程分配协议端口(protocol port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。
当目的主机接收到数据包后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。
一台主机上一个端口号只能对应一个进程,一个进程可以监控多个端口
所以网上给的定义:套接字=ip地址+端口号

常用的套接字 api
socket()
blind()

套接字位于传输层及应用层之间,是一个应用编程接口,应用程序通过调用此接口进行传输接收数据。
初学先了解个框架,后来还需要代码进行练习
不知道socket现在传输效率高不高,或许别的网络转发方式也有优势?

NVMP平台编程基础实验 说明: 1. 通过NVMP平台编程基础实验,可加深对平台功能的了解,学习范围不限于“1.知识点”所列内容。 2. 请完整阅读实验题和思考题要求并统筹规划学习和实验安排。 3. 最终每人提交一份报告(包括实验题和思考题)。 要求: A) 提交作业邮件主题:【25作业】NVMP编程基础_姓名&姓名&姓名; B) 提交作业邮件收件人:导师; 抄送人:组长、本课PL; C) 实验日期:8.13-8.27 1. 知识点 1.1 熟悉使用IPC功能,熟悉IPC功能; 1.2 阅读DS、DMS、主进程源码 1.3 掌握固件烧录升级方法 1.4 编程实现私有模块添加 1.5 掌握postman的使用方法 1.6 掌握通过WEB调试功能F12调试接口的方法 2. 实验题 课题:ARP扫描功能 要求: 1、基于NVMP平台,为NSD模块添加一个用于定时扫描指定网段的主机的arp子模块。arp子模块的扫描需要通过socket编程收发ARP报文来实现。 2、arp子模块使用DS来保存用户配置,用户配置参数包括:功能开关、扫描周期(秒)、有效期(秒)、发包间隔(毫秒)、起始IP、结束IP。 例如可以指定192.168.1.100-192.168.1.200,每格60秒扫描一遍,发包间隔100毫秒,如果网络中有192.168.1.101和192.168.1.102两台主机,则扫描结果就是这两个IP地址及对应的MAC地址。扫描功能需在开关开启对情况下才进行; 扫描的结果需要在内存中管理维护,一个ARP条目如果超过有效期时间都未被再次扫描到则删除掉该条目。 3、arp子模块需要提供基于DMS的ubus服务接口,至少提供以下接口用于客户端调用,使用TDCP协议: set_arp_config(设置功能开关、扫描周期、有效期、发包间隔、起始IP、结束IP地址) get_arp_config(获取功能开关、扫描周期、有效期、发包间隔、起始IP、结束IP地址) start_scan(开始一次扫描) stop_scan(停止扫描) get_scan_status(扫描状态) get_scan_result(获取最近一次的扫描结果) clear_result(清除历史结果) 其次需要提供基于ubus工具的调测命令,用于在串口执行扫描,停止扫描,获取扫描结果,获取扫描状态,清除历史扫描结果等。 4、每次发现一台新的主机(之前扫描时未发现的),将主机信息打印到串口,同时在内存中进行存储。 5、写一个测试程序test_arpsd,通过C代码调用DMS/DS库API的方式(不能直接调用ubus命令),对各部分功能和接口进行测试。 6、在Network标签下添加一个子页面,标题为ARP Scanner。可以在该web页面上进行以下操作: 修改上述配置参数并生效、执行或终止一次扫描、获取并显示上一次扫描结果。 7、编写为NVMP平台NSD的一个子模块软件包,包含所有的c、shell、html代码及Makefile文件。 备注:WEB部分(上述第6点)是可选的,请先完成与web无关的部分。 输出: 1、使用git管理的代码。 2、软件概要设计文档。 3、作业提交要求:发送给导师并抄送我(zhulin4@tp-link.com.hk), 提交时间8月27号前。 3. 思考题 1. 整理DS和DMS的使用方法 2. 子模块编译成.a库的原因? 3. 在开发过程中碰到哪些问题,如何解决的?怎样可以提高开发效率? 帮我完成上述实验题的内容,编程的语言是C语言
08-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值