unix系统网络连接设置(UNIX网络通信详解)
如果有更好的建议或者想看更多关于生活常识技术大全及相关资讯,可以多多关注茶馆百科网。

一、网络协议
国际标准化组织(ISO)定义了网络协议的基本框架,称为OSI模型。OSI模型包括应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。OSI模型过于复杂,尚未在实际中得到应用。
TCP/IP协议模型将OSI的七层协议模型简化为四层,使其更容易实现和使用。TCP/IP协议模型包括应用层、传输层、网络层、网络接口层。
TCP/IP与OSI模型的对应关系如下:
二、插座插座
它是一个可以与网络通信的内核对象。它有一个唯一的标识符,称为套接字描述符。与文件描述符类似,它也可以使用读/写/关闭。
int socket(int domain, int type, int protocol);
准备通讯地址:
基本通信地址
struct sockaddr
本地通信地址
struct sockaddr_un
网络通信地址
struct sockaddr_in
在将准备好的通信地址传递给函数之前,通常必须将其转换为基本通信地址。
int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
//函数:socket对象关联通信地址
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
//功能:连接通信目标
//socketaddr:目的地址
三、网络通信数据存储方式
个人计算机系统的数据存储方式有大端和小端两种。网络通信需要大端数据,必须将大端数据转换为大端数据。
uint32_t htonl(uint32_t hostlong);
//功能:将32位主机字节顺序转换为32位网络字节顺序
uint16_t htons(uint16_t hostshort);
//功能:将16位主机字节顺序转换为16位网络字节顺序
uint32_t ntohl(uint32_t netlong);
//功能:将32网络字节顺序转换为32主机字节顺序
uint16_t ntohs(uint16_t netshort);
//功能:将16位网络字节顺序转换为16位主机字节顺序
生成端口号
端口号为16的无符号整数
uint16_t htons(uint16_t hostshort);
生成ip地址
in_addr_t inet_addr(const char *cp);
//功能:将点分十进制形式的字符串ip地址转换为32位无符号整数
char *inet_ntoa(struct in_addr in);
//功能:将32位网络字节顺序ip地址转换为点分十进制格式的字符串ip地址
四、网络通信(UDP)
进程A:创建套接字对象—准备地址—绑定—接收数据和接收地址—从源返回数据—关闭套接字
进程B:创建套接字对象—准备地址—发送数据到目的地址—接收数据—关闭套接字
0
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
//功能:接收数据并获取发送方地址
//addrlen:需要获取的src_addr的长度
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
//功能:向指定目标发送数据
五、网络通信(TCP)
面向连接的网络通信,在通信过程中始终是连接的,这种通信类似于电话,可以保证安全可靠,数据不会丢失,但与UDP相比传输速度略低。
进程A:创建套接字—准备地址—绑定—监听(设置队列长度)—等待连接—通信—关闭。
进程B;创建套接字-准备地址-连接-通信-关闭
int listen(int sockfd, int backlog);
//功能:设置socket队列的最大数目
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
//功能:等待其他主机与当前套接字建立连接。
//返回值:建立连接的描述符,用于以后的通信
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
//功能:连接通信目标
//socketaddr:目的地址
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
//功能:用于网络通信的特殊数据接收
//flag: 0
//1不阻塞
//如果返回值为-1,连接断开,循环结束
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
//功能:网络通信的数据发送
//如果返回值为-1,连接断开,循环结束
本文主要介绍了关于unix系统网络连接设置(UNIX网络通信详解)的相关养殖或种植技术,生活常识栏目还介绍了该行业生产经营方式及经营管理,关注生活常识发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解生活常识技术怎么管理的要点,是您生活常识致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/1495165.html