首页 > 系统相关 >Linux应用编程_网络通信TCP/UDP

Linux应用编程_网络通信TCP/UDP

时间:2023-09-05 22:55:44浏览次数:40  
标签:UDP struct int TCP addrlen Linux sockfd 连接

(1)网络协议被分为5层
	1)应用层:直接为用户的应用进程提供服务
		HTTP协议,FTP协议,DNS,POP3,SNMP,Telnet
	2)运输层(传输层):负责向两个主机中进程之间的通信提供服务							(基于TCP/UDP)
		(1)传输控制协议TCP(Transmission Control Protocol):
			1)数据传输的单位是报文段
			2)面向连接的,可靠
			3)流量控制(即发送方/接收方速率匹配)
			4)包括了应用层报文划分为短报文,并提供拥塞控制机制
		(2)用户数据包协议UDP(User Datagram Protocol):
			1)数据传输的单位是用户数据报
			2)无连接的,不可靠
			3)没有流量控制
			4)也没有拥塞控制
	3)网络层:负责将被称为数据包(datagram)的网络层分组从一台主机移动到另一台主机		(基于IP)
	4)链路层:因特网的网络层通过源和目的地之间的一系列路由器路由数据报					(基于MAC)
	5)物理层:任务就是透明地传送比特流
(2)函数:
	int socket(int domain, int type,int protocol);						//此函数用于创建一个套接字
	int bind(int sockfd, struct sockaddr *my_addr, int addrlen);		//函数用于将地址绑定到一个套接字
	int listen(int sockfd,int backlog);									//此函数宣告服务器可以接受连接请求
	int accept(int sockfd, struct sockaddr *addr,int *addrlen);			//server,使用此函数获得连接请求,并且建立连接

	int connect(int sockfd, struct sockaddr * serv_addr,int addrlen);	//client, 用connect建立一个连接

	ssize_t send(int sockfd, const void *buf, size_t len, int flags);	//用于TCP连接
	ssize_t recv(int sockfd, void *buf, size_t len, int flags);			//用于TCP连接
	
	ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,		//通常用于无连接套接字
					struct sockaddr *src_addr, socklen_t *addrlen);
	ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,	//通常用于无连接套接字
				  const struct sockaddr *dest_addr, socklen_t addrlen);

参考:韦东山Linux教程

标签:UDP,struct,int,TCP,addrlen,Linux,sockfd,连接
From: https://www.cnblogs.com/charlie12345/p/17681098.html

相关文章

  • Linux 命令总结
    Linux文件系统FHS3.0(FilesystemHierarchyStandard)/etc配置文件bin必要命令usr二级目录home家目录var动态数据VFS虚拟文件系统内核层抽象出通用的文件系统接口支持文件、网络、特殊文件系统抽象对象:超级快:文件系统目录项:文件路径索引节点:具体文件文件:进程打开的文件属性分层......
  • 【原创】基于QT编写的支持IPv4/IPv6双协议栈,TCP/UDP双模式,DLL内存加载的模块化远控木
    本人已经本科毕业一年有余,在平常实习过程中,发现大佬都对我的本科毕设--双协议栈远控木马感兴趣。据我所知,目前流行的C2远控软件中,MSF支持IPv4和IPv6,但是MSF生成的单个木马只是支持其中的一种协议,而不是双协议栈。CobaltStrike目前尚无IPv6的使用案例。其他支持双协议栈的C2软件......
  • Linux运维工程师面试题(7)
    Linux运维工程师面试题(7)祝各位小伙伴们早日找到自己心仪的工作。持续学习才不会被淘汰。地球不爆炸,我们不放假。机会总是留给有有准备的人的。加油,打工人!1常用的ansible模块有哪些PingCommandShellScriptCopyFetchFileYumServiceUserGroupLineinfileRepla......
  • Linux运维工程师面试题(7)
    目录Linux运维工程师面试题(7)1常用的ansible模块有哪些2说一下ansible使用roles编排的目录结构3docker六大命名空间namespace4cgroups的作用5runc的作用6docker常用的命令7docker存储引擎有哪些,区别是什么8进入docker容器有几种方法,区别是什么9Dockerfile......
  • linux系统调优
    1.禁用swap分区swapoff-a&&sysctl-wvm.swappiness=0sed-ri'/^[^#]*swap/s@^@#@'/etc/fstabgrepswap/etc/fstab2. 禁用防火墙和selinux2.1禁用防火墙,网络管理,邮箱systemctldisable --nowfirewalldNetworkManagerpostfix 2.2禁用selinux2.2.1命令行直......
  • linux日志文件的查询方式
    cdlog到指定log日志文件目录ls查看当前文件存在的目录catjujube.log可以查看较小的日志文件vijujube.log查看较大的日志文件(常用)/(查询的字符)可以定位到这个字符的位置N继续向下检索:$回到日志文件的最底层可以用于从底层开始查找使用:$后配合使......
  • Linux中有哪些常用的网络命令,分别适用于什么场景?
    Linux作为一种广泛使用的操作系统,其网络功能非常强大。在Linux系统中,有很多网络相关的命令可以用于管理和配置网络,比如ifconfig、netstat、ping、traceroute、route等等。本文将对一些常用的Linux网络命令进行详细介绍。一、ifconfig命令ifconfig命令用于显示和配置Linux系统的网......
  • 深入探索Linux文件链接技术:ln命令的妙用
    当谈及Linux系统中的文件管理和链接技术,ln命令是一个不可或缺的工具。ln命令用于创建硬链接和软链接,它在Linux文件系统中发挥着重要作用,为用户提供了更大的灵活性和组织能力。在本文中,我们将深入探讨ln命令是什么,以及如何使用它来创建链接,以提高文件管理的效率。什么是ln......
  • 轻松浏览Linux文件系统:ls命令的实用指南
    当谈到Linux命令行操作时,ls是一个非常基础但又非常重要的命令。它用于列出文件和目录,帮助您浏览和了解当前工作目录的内容。在这篇博客文章中,我们将介绍ls命令的基本用法和一些常见的使用示例。什么是ls命令?ls是"list"的缩写,是Linux和Unix操作系统中的一个命令行工具,用于列出文件和......
  • 11linux系统syslog服务
    1.简介syslog是linux自带的系统日志服务进程,下面的例子以centos7为例。 2.syslog服务端开启udp514端口vi/etc/rsyslog.conf#去掉注释UDP下面的两行首行#,采用udp514接收数据#下面TCP注释是采用Tcp协议接收数据...#ProvidesUDPsyslogreception$ModLoad......