LINUX网络编程分享
文章平均质量分 85
本篇主要和大家分享一下在linux编程中所需要掌握的一些网络编程的用法,重点涉及TCP,UDP的一些使用,广播,组播的建立等等
九月丫
爱好编程,爱好生活
展开
-
域名系统 DNS
这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。查询名部分长度不定,一般为要查询的域名(也会有 IP 的时候,即反向查询)。该值由发出 DNS 请求的程序生成,DNS 服务器在响应时会使用该 ID,这样便于请求程序区分不同的 DNS 响应。3:Name Error,只在权威 DNS 服务器的响应中有意义,表示请求中的域名不存在。上图这是中央电视台用于手法电子邮件的计算机的域名,它由三个标号组成,其中标号com 是顶级域名,标号。占 16 位(无符号)。原创 2023-10-26 15:16:16 · 564 阅读 · 0 评论 -
NTP(Network Time Protocol 网络时间协议)
大数据产生与处理系统是各种计算设备集群的,计算设备将统一、同步的标准时间用于记录各种事件发生时序,如 E-MAIL 信息、文件创建和访问时间、数据库处理时间等。大数据系统是对时间敏感的计算处理系统,时间同步是大数据能够得到正确处理的基础保障,是大数据得以发挥作用的技术支撑。不同的值所表示的含义分别是:0 未定义、1 表示主动对等体模式、2 表示被动对等体模式、3 表示客户模式、4 表示服务器模式、5 表示广播模 式或组播模式、6 表示此报文为 NTP 控制报文、7 预留给内部使用。原创 2023-10-26 14:52:46 · 637 阅读 · 0 评论 -
获取套接字协议地址函数
该函数可以获取 listen 监听的 sockfd 套接字的外地协议地址信息。适用与当服务器调用 accept 函数连接客户端后进入其他线程或进程,就只能使用 getpeername 获取客户端的协议地址信息了。该函数可以获取 sockfd 套接字的协议地址信息,放到 addr 中,特别适合未调用 bind()就。调用了 connect(),这时唯有 getsockname()调用可以获知系统内定的本地地址。获取与套接字关联的外地协议地址(getpeername)保存获取到的协议地址的长度。原创 2023-10-26 14:40:12 · 83 阅读 · 0 评论 -
广播和组播(多播)
它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,而且只有在链路分叉的时候,消息才会被复制。单播用于两个主机之间端对端的通信,例如我们的 TCP/UDP 消息通信,广播用于一个主机对整个局域网上所有主机的数据通信,单播和广播其实是两个极端,实际情况下,我们需要对网络上面一组特定的主机通信,这就是多播/组播,2.现行网络虽然都支持组播的传输,但在客户认证、QOS(指一个网络能够利用各种基础技 术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。原创 2023-10-26 14:09:04 · 865 阅读 · 0 评论 -
linux套接字选项API
如果是 TRUE,套接字就可与一个正由其他套接字使用的地址绑定到一起,或与处在 TIME_WAIT 状态的地址绑定到一起。返回套接字建立连接的时间,以秒为 单位,如尚未连接,返回 0xffffffff。如果 TRUE,套接字就会进行配置,在会话过程中发送”保持活动”消息。获取或设置与套接字上数据接收对应的超时时间值(以毫秒为单位)获取或设置套接字上的数据发送超时时间(以毫秒为单位)对于 IP 层次有下面常用选项。对一个面向消息的套接字来说,一条消息的最大长度。获取套接字的选项值(getsockopt)原创 2023-10-26 11:36:08 · 323 阅读 · 0 评论 -
UNIX 域协议(本地通信协议)
UNIX 域协议进行本地通信的方式和 TCP、UDP 很类似,下面就以 UNIX 域协议的流式套接字来写一个客户端和服务器间通信的例子,使用流式套接字,则本地间的通信方式就要类似于 TCP,这样的通信方式同时也具有 TCP 通信的特点。IP 协议标识客户服务器是通过 IP 地址和端口号实现的,UNIX 域协议中用于标识客户机和服务器的协议地址的是普通文件系统中的路径名。3.UNIX 域套接字域传统套接字的区别是用路径名表示协议族的描述。UNIX 域数据报服务是可靠的,不会丢失消息,也不会传递出错。原创 2023-10-26 10:35:06 · 1279 阅读 · 0 评论 -
TCP/IP网络协议通信函数接口
通过 socket 函数创建的套接字时,它是被假设成一个主动套接字的,也就是说它是一个调用 connect 去连接服务器的客户端套接字,而 listen 函数就是将一个未连接的套接字变成一个被动套接字,指使内核应该接收指向该套接字的连接请求,根据 TCP 三次握手的示例图得知,调用 listen 函数会导致套接字从 CLOSED 状态变为 LISTEN 状态,同时 listen 函数的第二个参数还将指定与该套接字连接的最大个数。当函数的返回值为 0 时,表示 src 指向的值不是合法的 IP地址;原创 2023-10-08 16:56:34 · 1127 阅读 · 1 评论 -
TCP 和UDP通信流程
对于 UDP 通信,其实没有服务端和客户端之分的,反而有点类似于进程间通信一样,只需 要向对于的 IP 端去发送消息即可,上图中服务端的 bind 可有可无,它们之间进行通信的流程就是首先使用 socket 去创建一个数据包套接字用于 UDP 通信,然后就使用 sandto 进行发送消息,用 recvfrom 进行读取消息,不能使用 read 和 write 是因为 UDP 通信需要知道对方的 ip 地址的,而 read 和 write 是不具备该参数的。读接口:read,recv,recvfrom。原创 2023-10-08 14:52:39 · 1270 阅读 · 0 评论 -
基本网络协议
基于上面的优缺点,那么当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如 HTTP、HTTPS、FTP 等传输文件的协议, POP、SMTP 等邮件传输的协议应该使用 TCP 协议。慢,效率低,占用系统资源高,易被攻击 TCP 在传递数据之前,要先建连接,这 会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的 CPU、内存等硬件资源。原创 2023-09-23 15:18:15 · 217 阅读 · 0 评论 -
网络协议层次模型
模块中,首先会计算一下校验和,判断数据是否被破坏。每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层所必要的信息,如发送的目标地址以及协议相关信息。在 TCP/IP 模型中,我们讲将OSI 模型的应用层,表示层和会话层合并为 TCP/IP 模型的应用 层,讲数据链路层和物理层合并为 TCP/IP 模型的数据链路层,使得 TCP/IP 模型只有四层,如下图。如果不是发给自己的包则丢弃数据,而如果是接收到了恰好是发给自己的包,就查找以太网包首部中的类型域从而确定以太网协议所传送过来的数据类型。原创 2023-09-23 14:18:53 · 195 阅读 · 0 评论